1. 程式人生 > >防火墻(ASA)的基本配置與遠程管理

防火墻(ASA)的基本配置與遠程管理

ssh asa asdm 楊書凡 狀態化防火墻

在目前大多數安全解決方案中,防火墻的實施是最為重要的需求,它是每個網絡基礎設施必要且不可分割的組成部分。這篇博客主要介紹防火墻安全算法的原理與基本配置以及遠程管理防火墻的幾種方式


硬件與軟件防火墻

1.軟件防火墻

軟件防火墻單獨使用軟件系統來完成防火墻功能,將軟件部署到系統主機上,其安全性較硬件防火墻差,同時占用系統資源,在一定程度上影響系統性能。其一般用於單機系統或個人計算機,極少用於計算機網絡,如瑞星、天網、360等。

2.硬件防火墻

硬件防火墻比軟件防火墻更有優勢,原因有一下兩個方面

* 硬件防火墻功能強大,且明確是為抵禦威脅而設計的

* 硬件防火墻比軟件防火墻漏洞少

Cisco硬件防火墻技術應用於以下三個領域

* PIX 500系列安全設備

* ASA 5500系列自適應安全設備

* Catalyst 6500系列交換機和Cisco 7600系列路由器的防火墻服務模塊


ASA安全設備

Cisco ASA 5500系列自適應安全設備是最新的Cisco防火墻技術產品,它提供了整合防火墻、入侵保護系統、高級自適應威脅防禦服務,其中包括應用安全和簡化網絡安全解決方案的VPN服務。

目前,Cisco ASA 5500系列有六種型號,下表所示:

型號

價格

並發連接數

網絡吞吐量

描述

ASA 5505

2600~15700

25000

150MB

適用於小型企業

ASA 5510

12000~94200

130000

300MB

適用於中型企業

ASA 5520

28000~84000

280000

450MB

適用於中型企業

ASA 5540

68000~70000

400000

650MB

適用於中型企業

ASA 5550

80000~85000

650000

1200MB

適用於大型企業及電信運營商

ASA 5580

200000~530000

1000000~2000000

5000MB~10000MB

適用於大型企業及電信運營商


ASA的安全算法

ASA首先是一個狀態化防火墻,狀態化防火墻維護一個關於用戶信息的連接表,稱為Conn表,表中關鍵信息如下:

* 源IP地址

* 目的IP地址

* IP協議

* IP協議信息

技術分享

默認情況下,ASA對TCP和UDP協議提供狀態化連接,但ICMP協議是非狀態化的。

狀態化防火墻進行狀態化處理的過程如圖所示:

(1)PC發起一個HTTP請求給Web服務器

(2)HTTP請求到達防火墻,防火墻將連接信息添加到Conn表

(3)防火墻將HTTP請求轉發給Web服務器

流量返回時,狀態化防火墻處理的過程如下:

(4)Web服務器響應HTTP請求,返回相應的數據流量

(5)防火墻攔截該流量,檢查其連接信息

* 如果在Conn表中查找到匹配的連接信息,則流量被允許

* 如果在Conn表中查不到匹配的連接信息,則流量被丟棄


安全算法的原理

ASA使用安全算法執行一下三項基本操作

* 訪問控制列表:基於特定的網絡,主機和服務(TCP/UDP端口號)控制網絡訪問。

* 連接表:維護每個連接的狀態信息。安全算法使用此信息在已建立的連接中有效轉發流量

* 檢測引擎:執行狀態檢測和應用層檢測。檢測規則集是預先定義的,來驗證應用是否遵從每個RFC和其他標準。

數據報文穿越ASA的過程如下圖所示:

技術分享

(1)一個新來的TCP SYN報文到達ASA,試圖建立一個新的連接。

(2)ASA檢查訪問列表,確定是否允許連接。

(3)ASA執行路由查詢,如果路由正確,ASA使用必要的會話信息在連接表(XLATE和Conn)中創建一個新條目。

(4)ASA在檢測引擎中檢查預定義的一套規則,如果是已知應用,則進一步執行應用層檢測。

(5)ASA根據檢測引擎確定是否轉發或丟棄報文。如果允許轉發,則將報文轉發到目的主機。

(6)目的主機響應該報文。

(7)ASA接收返回報文並進行檢測,在連接數據庫中查詢連接,確定會話信息與現有連接是否匹配。

(8)ASA轉發屬於已建立的現有會話的報文。

ASA的引用層檢測是通過檢查報文的IP頭和有效載荷的內容,對應用層協議流量執行深層檢測,檢查應用層協議是否遵守RFC標準,從而檢測出應用層數據中的惡意行為。


ASA的基本配置

配置主機名

ASA初始啟動後默認的主機名是ciscoasa,可以通過以下命令將主機名配置為asa。

ciscoasa# config terminal
ciscoasa(config)# hostname asa
asa(config)#

配置密碼

可以配置特權密碼和遠程登錄密碼

1.配置特權密碼

以下命令將配置特權密碼為123456

asa(config)# enable password 123456

2.配置遠程登錄密碼

遠程登錄密碼是在使用Telnet或SSH時需要輸入的密碼。以下命令將配置遠程登錄密碼為ysf,註意與路由器配置是不同的。

asa(config)# password ysf


接口的概念與配置

ASA的接口通常有兩種名稱,即物理名稱和邏輯名稱

1.物理名稱

物理名稱與路由器名稱類似,例如Ethernet0/0、Ethernet0/1,可以簡寫為E0/0、E0/1,通常用來配置接口的速率,雙工和IP地址等

ASA 5510及以上型號還有專門的管理接口用於管理目的,例如management0/0

2.邏輯名稱

邏輯名稱用於大多數的配置命令,例如配置ACL、配置路由等使用命令中都用到邏輯名稱。邏輯名稱用來描述安全區域,例如通常用inside表示ASA連接的內部區域(安全性高),用outside表示ASA連接的外部區域(安全性低)。

防火墻與路由器有著本質的不同,防火墻是用於安全目的,所以它的各個接口代表了不同的安全區域,而安全區域之間隔著一堵墻。


接口的安全級別

ASA的每個接口都有一個安全級別,範圍是0-100,數值越大其安全級別越高。當配置接口的名稱為inside時,其安全級別自動設置為100。而配置其他的接口名稱例如outside時,其安全級別自動設置為0.

不同安全級別的接口之間互相訪問時,遵從如下的默認規則。

* 允許出站(outbound)連接,即允許從高安全級別接口到低安全級別接口的流量通過。

* 禁止入站(inbound)連接,即禁止從低安全級別接口到高安全級別接口的流量通過。

* 禁止相同安全級別的接口之間通信。


接口的配置

配置命令語法如下:

asa(config-if)# nameif name               //配置接口名稱
asa(config-if)# security-level number         //配置接口安全級別

其中number的範圍為0-100。


案例:如圖,使用路由器R1和R2模擬PC,要求配置ASA的接口並驗證接口之間的通信。

技術分享

ASA接口配置如下:

asa(config)# int e0/1
asa(config-if)# namaif inside
asa(config-if)# security-level 100
asa(config-if)# ip add 10.1.1.254 255.255.255.0
asa(config-if)# no sh

asa(config)# int e0/0
asa(config-if)# nameif outside
asa(config-if)# security-level 0
asa(config-if)# ip add 172.16.1.254 255.255.255.0
asa(config-if)# no sh

如果ASA的型號是5505,則不支持在物理接口上直接進行以上配置,必須通過VLAN虛接口來配置,具體配置如下:

asa(config)# int vlan 1
asa(config-if)# nameif inside
asa(config-if)# security-level 100
asa(config-if)# ip add 10.1.1.254 255.255.255.0
asa(config-if)# no sh
asa(config-if)# int e0/1
asa(config-if)# no sh
asa(config-if)# switchport access vlan 1

asa(config)# int vlan 2
asa(config-if)# nameif outside
asa(config-if)# security-level 0
asa(config-if)# ip add 172.16.1.254 255.255.255.0
asa(config-if)# no sh
asa(config-if)# int e0/0
asa(config-if)# no sh
asa(config-if)# switchport access vlan 2

查看Conn表

asa# show conn dateil

通過驗證,在R1可以Telnet到R2,但在R2可以Telnet到R1


配置ACL

在ASA上配置ACL有兩個作用:一是允許入站連接,二是控制出站連接的流量

* 標準ACL的配置如下:

asa(config)# access-list acl_name [ standrad ] { permit | deny } ip_addr mask

* 擴展ACL的配置如下:

asa(config)# access-list acl_name [ extended ] { permit | deny } protocol src_ip_addr src_mask dst_ip_addr dst_mask [ operator port ]

* 將ACL應用到接口,配置如下:

asa(config)# access-group acl_name { in | out } interface interface_name

需要註意的是,路由器上的ACL使用的是反碼,而ASA上的ACL使用正常的掩碼。另外,標準ACL過濾流量時不能應用到接口,它應用到其他場合,如遠程訪問VPN中分離隧道的配置


允許入站連接

ASA的默認規則是禁止入站連接,如果要允許入站連接,就需要配置ACL。

例如:在上個案例中,要在R2上Telnet到R1,可以在ASA上做如下配置

asa(config)# access-list out_to_in permit ip host 172.16.1.1 host 10.1.1.1
asa(config)# access-group out_to_in in int outside

控制出站連接的流量

例如:在上個案例中,如果inside區域有多個子網。例如,10.1.1.0/24、10.1.2.0/24等,要禁止子網10.1.1.0/24的流量出站,可以在ASA上做如下配置

asa(config)# access-list in_to_out deny ip 10.1.1.0 255.255.255.0 any
asa(config)# access-list in_to_out permit ip any any
asa(config)# access-group in_to_out in int inside

配置靜態路由

ASA支持靜態和默認路由、動態路由(例如OSPF等)

配置靜態路由的命令語法如下

asa(config)# route interface-name network mask next-hop-address

ICMP協議

默認情況下,禁止ICMP報文穿越ASA是基於安全性的考慮。為了方便調試,可以配置暫時允許ICMP應答報文穿越ASA

asa(config)# access-list 111 permit icmp any any
asa(config)# access-group 111 in int outside

在調試完畢後,通常建議禁止ICMP報文穿越ASA

其他配置命令

(1)保存running-configuration配置到startup configuration,可以使用以下兩種命令:

asa(config)#write memory      //第一種
asa(config)#copy running-config startup-config       //第二種

(2)清除running configuration的所有配置,可以使用以下命令

asa(config)#clear configure all

(3)清除running configuration中指定命令的配置,可以使用以下命令

asa(config)#clear configure configurationcommand [ leve12configurationcommand ]

例如:要清除所有access-list命令的配置,可以使用以下命令

asa(config)#clear configure access-list

只清除access-list in_to_out的配置,可以使用以下命令

asa(config)#clear configure access-list in_to_out


遠程管理ASA

ASA支持三種主要的遠程管理接入方式:Telnet、SSH和ASDM

1.配置Telnet接入

由於使用Telnet遠程管理是不安全的,所以一般禁止從外部接口使用Telnet接入,而只允許在內網使用Telnet。

(1)配置允許Telnet接入

asa(config)# telnet {network|ip-address} mask interface_name

例如:配置允許從inside區域內的192.168.0.0/24使用Telnet接入,命令如下

asa(config)# telnet 192.168.0.0 255.255.255.0 inside

可以配置為只允許主機192.168.0.1/24使用Telnet接入,命令如下

asa(config)# telnet 192.168.0.1 255.255.255.255 inside

(2)(可選)配置空閑超時時間

asa(config)# telnet timeout minutes

參數minutes的取值範圍為1-1440分鐘,默認值是5分鐘。


2.配置SSH接入

使用SSH可以安全地對ASA進行遠程管理,配置SSH接入分為四個步驟。

(1)配置主機名和域名

在生成RSA密鑰對的過程中需要用到主機名和域名,以下命令為ASA配置主機名為asa802,配置域名為asadomain.com

asa(config)# host asa802
asa802(config)# domain-name asadomain.com

(2)生成RSA密鑰對

asa802(config)# crypto key generate rsa modulus 1024

可以指定modulus的大小為512、768、1024或2048位,默認是1024,表示生成的RSA密鑰的長度。

(3)配置允許SSH接入

配置SSH的命令語法與配置Telnet是類似的,但是SSH可以配置為從外部接口接入,命令如下

asa802(config)# ssh 192.168.0.0 255.255.255.0 inside
asa802(config)# ssh 0 0 outside

(4)其他可選配置

配置空閑超時時間。與配置Telnet類似,例如設置為30分鐘,命令如下

asa802(config)# ssh timeout 30

配置SSH的版本。默認情況下支持版本1和版本2.要限定使用哪個版本,可以使用如下命令

asa802(config)# ssh version 2

配置完後,可以在Outside 區域內的主機上使用Putty登錄ASA的Oouside接口。註意ASA默認使用用戶名pix,密碼為使用passwd命令設置的密碼,即可登錄成功


3.配置ASDM接入

除了使用命令行外,ASA還支持GUI遠程管理方式,即自適應安全設備管理器(ASDM)

要使用ASDM,首先要保證ASA的Flash中有ASDM映像,可以通過dir命令查看

asa# dir
 Directory of disk0:/
 55   -rwx  6889764   14:16:34  Dec  09  2017   asdm-602.bin

(1)啟用HTTPS服務器功能,命令如下

asa(config)# http server enable [port]       //默認端口是443

(2)配置允許HTTPS接入,命令如下:

asa(config)# http {network|ip-address} mask interface-name

(3)指定ASDM映像的位置,命令如下:

asa(config)# asdm image disk0:/asdm-602.bin

(4)配置客戶端登陸使用的用戶名和密碼,命令如下:

asa(config)# username user password password privilege 15

如果不配置用戶名和密碼,ASDM默認使用用戶名admin,密碼為使用enable password命令設置的密碼。

例如:以下是一個ASA的配置案例

asa(config)# http server enable
asa(config)# http 192.168.0.0 255.255.255.0 inside
asa(config)# asdm image disk0:/asdm-602.bin
asa(config)# username ysf password 123456 privilege 15

客戶端主機使用ASDM需要首先安裝Java Runtiime Environment(JRE),然後在主機啟動瀏覽器,輸入https://192.168.0.254(inside接口的IP地址)進行訪問。


多安全區域(配置DMZ)

上面介紹了ASA的基本配置,其中只用到了inside和outside兩個安全區域,實際上ASA可以配置多個安全區域,比較常用的是DMZ

DMZ(隔離區)位於企業內部網絡和外部網絡之間的一個網絡區域,通常用來放置一些必須公開的服務器,如Web服務器、FTP服務器和論壇等。下圖所示

技術分享

DMZ默認的訪問規則

DMZ的安全級別介於inside和outside之間,在存在DMZ的情況下,默認的訪問規則如下圖所示:

技術分享

* 允許從高安全級別接口到低安全級別接口的流量通過

* 禁止從低安全級別接口到高安全級別接口的流量通過

在實際應用中,通常需要配置訪問規則和地址轉換允許outside訪問DMZ


DMZ的基本配置

asa(config)# int e0/1
asa(config-if)# namaif dmz
asa(config-if)# security-level 50
asa(config-if)# ip add 192.168.1.1 255.255.255.0
asa(config-if)# no sh


本文出自 “楊書凡” 博客,請務必保留此出處http://yangshufan.blog.51cto.com/13004230/1965568

防火墻(ASA)的基本配置與遠程管理