在目前大多數(shù)安全解決方案中,防火墻的實(shí)施是最為重要的需求,它是每個網(wǎng)絡(luò)基礎(chǔ)設(shè)施必要且不可分割的組成部分。這篇博客主要介紹防火墻安全算法的原理與基本配置以及遠(yuǎn)程管理防火墻的幾種方式
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元南譙做網(wǎng)站,已為上家服務(wù),為南譙各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
硬件與軟件防火墻
1.軟件防火墻
軟件防火墻單獨(dú)使用軟件系統(tǒng)來完成防火墻功能,將軟件部署到系統(tǒng)主機(jī)上,其安全性較硬件防火墻差,同時占用系統(tǒng)資源,在一定程度上影響系統(tǒng)性能。其一般用于單機(jī)系統(tǒng)或個人計算機(jī),極少用于計算機(jī)網(wǎng)絡(luò),如瑞星、天網(wǎng)、360等。
2.硬件防火墻
硬件防火墻比軟件防火墻更有優(yōu)勢,原因有一下兩個方面
*硬件防火墻功能強(qiáng)大,且明確是為抵御威脅而設(shè)計的
*硬件防火墻比軟件防火墻漏洞少
Cisco硬件防火墻技術(shù)應(yīng)用于以下三個領(lǐng)域
* PIX 500系列安全設(shè)備
* ASA 5500系列自適應(yīng)安全設(shè)備
* Catalyst 6500系列交換機(jī)和Cisco 7600系列路由器的防火墻服務(wù)模塊
ASA安全設(shè)備
Cisco ASA 5500系列自適應(yīng)安全設(shè)備是最新的Cisco防火墻技術(shù)產(chǎn)品,它提供了整合防火墻、***保護(hù)系統(tǒng)、高級自適應(yīng)威脅防御服務(wù),其中包括應(yīng)用安全和簡化網(wǎng)絡(luò)安全解決方案的×××服務(wù)。
目前,Cisco ASA 5500系列有六種型號,下表所示:
型號 | 價格 | 并發(fā)連接數(shù) | 網(wǎng)絡(luò)吞吐量 | 描述 |
ASA 5505 | 2600~15700 | 25000 | 150MB | 適用于小型企業(yè) |
ASA 5510 | 12000~94200 | 130000 | 300MB | 適用于中型企業(yè) |
ASA 5520 | 28000~84000 | 280000 | 450MB | 適用于中型企業(yè) |
ASA 5540 | 68000~70000 | 400000 | 650MB | 適用于中型企業(yè) |
ASA 5550 | 80000~85000 | 650000 | 1200MB | 適用于大型企業(yè)及電信運(yùn)營商 |
ASA 5580 | 200000~530000 | 1000000~2000000 | 5000MB~10000MB | 適用于大型企業(yè)及電信運(yùn)營商 |
ASA的安全算法
ASA首先是一個狀態(tài)化防火墻,狀態(tài)化防火墻維護(hù)一個關(guān)于用戶信息的連接表,稱為Conn表,表中關(guān)鍵信息如下:
* 源IP地址
* 目的IP地址
* IP協(xié)議
* IP協(xié)議信息
默認(rèn)情況下,ASA對TCP和UDP協(xié)議提供狀態(tài)化連接,但I(xiàn)CMP協(xié)議是非狀態(tài)化的。
狀態(tài)化防火墻進(jìn)行狀態(tài)化處理的過程如圖所示:
(1)PC發(fā)起一個HTTP請求給Web服務(wù)器
(2)HTTP請求到達(dá)防火墻,防火墻將連接信息添加到Conn表
(3)防火墻將HTTP請求轉(zhuǎn)發(fā)給Web服務(wù)器
流量返回時,狀態(tài)化防火墻處理的過程如下:
(4)Web服務(wù)器響應(yīng)HTTP請求,返回相應(yīng)的數(shù)據(jù)流量
(5)防火墻攔截該流量,檢查其連接信息
* 如果在Conn表中查找到匹配的連接信息,則流量被允許
* 如果在Conn表中查不到匹配的連接信息,則流量被丟棄
安全算法的原理
ASA使用安全算法執(zhí)行一下三項(xiàng)基本操作
* 訪問控制列表:基于特定的網(wǎng)絡(luò),主機(jī)和服務(wù)(TCP/UDP端口號)控制網(wǎng)絡(luò)訪問。
* 連接表:維護(hù)每個連接的狀態(tài)信息。安全算法使用此信息在已建立的連接中有效轉(zhuǎn)發(fā)流量
* 檢測引擎:執(zhí)行狀態(tài)檢測和應(yīng)用層檢測。檢測規(guī)則集是預(yù)先定義的,來驗(yàn)證應(yīng)用是否遵從每個RFC和其他標(biāo)準(zhǔn)。
數(shù)據(jù)報文穿越ASA的過程如下圖所示:
(1)一個新來的TCP SYN報文到達(dá)ASA,試圖建立一個新的連接。
(2)ASA檢查訪問列表,確定是否允許連接。
(3)ASA執(zhí)行路由查詢,如果路由正確,ASA使用必要的會話信息在連接表(XLATE和Conn)中創(chuàng)建一個新條目。
(4)ASA在檢測引擎中檢查預(yù)定義的一套規(guī)則,如果是已知應(yīng)用,則進(jìn)一步執(zhí)行應(yīng)用層檢測。
(5)ASA根據(jù)檢測引擎確定是否轉(zhuǎn)發(fā)或丟棄報文。如果允許轉(zhuǎn)發(fā),則將報文轉(zhuǎn)發(fā)到目的主機(jī)。
(6)目的主機(jī)響應(yīng)該報文。
(7)ASA接收返回報文并進(jìn)行檢測,在連接數(shù)據(jù)庫中查詢連接,確定會話信息與現(xiàn)有連接是否匹配。
(8)ASA轉(zhuǎn)發(fā)屬于已建立的現(xiàn)有會話的報文。
ASA的引用層檢測是通過檢查報文的IP頭和有效載荷的內(nèi)容,對應(yīng)用層協(xié)議流量執(zhí)行深層檢測,檢查應(yīng)用層協(xié)議是否遵守RFC標(biāo)準(zhǔn),從而檢測出應(yīng)用層數(shù)據(jù)中的惡意行為。
ASA的基本配置
配置主機(jī)名
ASA初始啟動后默認(rèn)的主機(jī)名是ciscoasa,可以通過以下命令將主機(jī)名配置為asa。
ciscoasa# config terminal ciscoasa(config)# hostname asa asa(config)#
配置密碼
可以配置特權(quán)密碼和遠(yuǎn)程登錄密碼
1.配置特權(quán)密碼
以下命令將配置特權(quán)密碼為123456
asa(config)# enable password 123456
2.配置遠(yuǎn)程登錄密碼
遠(yuǎn)程登錄密碼是在使用Telnet或SSH時需要輸入的密碼。以下命令將配置遠(yuǎn)程登錄密碼為ysf,注意與路由器配置是不同的。
asa(config)# password ysf
接口的概念與配置
ASA的接口通常有兩種名稱,即物理名稱和邏輯名稱
1.物理名稱
物理名稱與路由器名稱類似,例如Ethernet0/0、Ethernet0/1,可以簡寫為E0/0、E0/1,通常用來配置接口的速率,雙工和IP地址等
ASA 5510及以上型號還有專門的管理接口用于管理目的,例如management0/0
2.邏輯名稱
邏輯名稱用于大多數(shù)的配置命令,例如配置ACL、配置路由等使用命令中都用到邏輯名稱。邏輯名稱用來描述安全區(qū)域,例如通常用inside表示ASA連接的內(nèi)部區(qū)域(安全性高),用outside表示ASA連接的外部區(qū)域(安全性低)。
防火墻與路由器有著本質(zhì)的不同,防火墻是用于安全目的,所以它的各個接口代表了不同的安全區(qū)域,而安全區(qū)域之間隔著一堵墻。
接口的安全級別
ASA的每個接口都有一個安全級別,范圍是0-100,數(shù)值越大其安全級別越高。當(dāng)配置接口的名稱為inside時,其安全級別自動設(shè)置為100。而配置其他的接口名稱例如outside時,其安全級別自動設(shè)置為0.
不同安全級別的接口之間互相訪問時,遵從如下的默認(rèn)規(guī)則。
* 允許出站(outbound)連接,即允許從高安全級別接口到低安全級別接口的流量通過。
* 禁止入站(inbound)連接,即禁止從低安全級別接口到高安全級別接口的流量通過。
* 禁止相同安全級別的接口之間通信。
接口的配置
配置命令語法如下:
asa(config-if)# nameif name //配置接口名稱 asa(config-if)# security-level number //配置接口安全級別
其中number的范圍為0-100。
案例:如圖,使用路由器R1和R2模擬PC,要求配置ASA的接口并驗(yàn)證接口之間的通信。
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,則不支持在物理接口上直接進(jìn)行以上配置,必須通過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
通過驗(yàn)證,在R1可以Telnet到R2,但在R2可以Telnet到R1
配置ACL
在ASA上配置ACL有兩個作用:一是允許入站連接,二是控制出站連接的流量
* 標(biāo)準(zhǔn)ACL的配置如下:
asa(config)# access-list acl_name [ standrad ] { permit | deny } ip_addr mask
* 擴(kuò)展ACL的配置如下:
asa(config)# access-list acl_name [ extended ] { permit | deny } protocol src_ip_addr src_mask dst_ip_addr dst_mask [ operator port ]
* 將ACL應(yīng)用到接口,配置如下:
asa(config)# access-group acl_name { in | out } interface interface_name
需要注意的是,路由器上的ACL使用的是反碼,而ASA上的ACL使用正常的掩碼。另外,標(biāo)準(zhǔn)ACL過濾流量時不能應(yīng)用到接口,它應(yīng)用到其他場合,如遠(yuǎn)程訪問×××中分離隧道的配置
允許入站連接
ASA的默認(rèn)規(guī)則是禁止入站連接,如果要允許入站連接,就需要配置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區(qū)域有多個子網(wǎng)。例如,10.1.1.0/24、10.1.2.0/24等,要禁止子網(wǎng)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
配置靜態(tài)路由
ASA支持靜態(tài)和默認(rèn)路由、動態(tài)路由(例如OSPF等)
配置靜態(tài)路由的命令語法如下
asa(config)# route interface-name network mask next-hop-address
ICMP協(xié)議
默認(rèn)情況下,禁止ICMP報文穿越ASA是基于安全性的考慮。為了方便調(diào)試,可以配置暫時允許ICMP應(yīng)答報文穿越ASA
asa(config)# access-list 111 permit icmp any any asa(config)# access-group 111 in int outside
在調(diào)試完畢后,通常建議禁止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
遠(yuǎn)程管理ASA
ASA支持三種主要的遠(yuǎn)程管理接入方式:Telnet、SSH和ASDM
1.配置Telnet接入
由于使用Telnet遠(yuǎn)程管理是不安全的,所以一般禁止從外部接口使用Telnet接入,而只允許在內(nèi)網(wǎng)使用Telnet。
(1)配置允許Telnet接入
asa(config)# telnet {network|ip-address} mask interface_name
例如:配置允許從inside區(qū)域內(nèi)的192.168.0.0/24使用Telnet接入,命令如下
asa(config)# telnet 192.168.0.0 255.255.255.0 inside
可以配置為只允許主機(jī)192.168.0.1/24使用Telnet接入,命令如下
asa(config)# telnet 192.168.0.1 255.255.255.255 inside
(2)(可選)配置空閑超時時間
asa(config)# telnet timeout minutes
參數(shù)minutes的取值范圍為1-1440分鐘,默認(rèn)值是5分鐘。
2.配置SSH接入
使用SSH可以安全地對ASA進(jìn)行遠(yuǎn)程管理,配置SSH接入分為四個步驟。
(1)配置主機(jī)名和域名
在生成RSA密鑰對的過程中需要用到主機(jī)名和域名,以下命令為ASA配置主機(jī)名為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位,默認(rèn)是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類似,例如設(shè)置為30分鐘,命令如下
asa802(config)# ssh timeout 30
配置SSH的版本。默認(rèn)情況下支持版本1和版本2.要限定使用哪個版本,可以使用如下命令
asa802(config)# ssh version 2
配置完后,可以在Outside 區(qū)域內(nèi)的主機(jī)上使用Putty登錄ASA的Oouside接口。注意ASA默認(rèn)使用用戶名pix,密碼為使用passwd命令設(shè)置的密碼,即可登錄成功
3.配置ASDM接入
除了使用命令行外,ASA還支持GUI遠(yuǎn)程管理方式,即自適應(yīng)安全設(shè)備管理器(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服務(wù)器功能,命令如下
asa(config)# http server enable [port] //默認(rèn)端口是443
(2)配置允許HTTPS接入,命令如下:
asa(config)# http {network|ip-address} mask interface-name
(3)指定ASDM映像的位置,命令如下:
asa(config)# asdm p_w_picpath disk0:/asdm-602.bin
(4)配置客戶端登陸使用的用戶名和密碼,命令如下:
asa(config)# username user password password privilege 15
如果不配置用戶名和密碼,ASDM默認(rèn)使用用戶名admin,密碼為使用enable password命令設(shè)置的密碼。
例如:以下是一個ASA的配置案例
asa(config)# http server enable asa(config)# http 192.168.0.0 255.255.255.0 inside asa(config)# asdm p_w_picpath disk0:/asdm-602.bin asa(config)# username ysf password 123456 privilege 15
客戶端主機(jī)使用ASDM需要首先安裝Java Runtiime Environment(JRE),然后在主機(jī)啟動瀏覽器,輸入https://192.168.0.254(inside接口的IP地址)進(jìn)行訪問。
多安全區(qū)域(配置DMZ)
上面介紹了ASA的基本配置,其中只用到了inside和outside兩個安全區(qū)域,實(shí)際上ASA可以配置多個安全區(qū)域,比較常用的是DMZ
DMZ(隔離區(qū))位于企業(yè)內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間的一個網(wǎng)絡(luò)區(qū)域,通常用來放置一些必須公開的服務(wù)器,如Web服務(wù)器、FTP服務(wù)器和論壇等。下圖所示
DMZ默認(rèn)的訪問規(guī)則
DMZ的安全級別介于inside和outside之間,在存在DMZ的情況下,默認(rèn)的訪問規(guī)則如下圖所示:
* 允許從高安全級別接口到低安全級別接口的流量通過
* 禁止從低安全級別接口到高安全級別接口的流量通過
在實(shí)際應(yīng)用中,通常需要配置訪問規(guī)則和地址轉(zhuǎn)換允許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