CiscoIOS防火墻的工作原理與配置
網(wǎng)絡(luò)安全是一個(gè)系統(tǒng)的概念,有效的安全策略或方案的制定,是網(wǎng)絡(luò)信息安全的首要保證。 網(wǎng)絡(luò)安全技術(shù)主要有,認(rèn)證授權(quán)、數(shù)據(jù)加密、訪問(wèn)控制、安全審計(jì)等。而提供安全網(wǎng)關(guān)服務(wù)的類型有:地址轉(zhuǎn)換、包過(guò)濾、應(yīng)用代理、訪問(wèn)控制和D OS防御。本文主要介紹地址轉(zhuǎn)換和訪問(wèn)控制兩種安全網(wǎng)關(guān)服務(wù),利用cisco路由器對(duì)ISDN撥號(hào)上網(wǎng)做安全規(guī)則設(shè)置。試驗(yàn)環(huán)境是一臺(tái)有fir ewall版本IOS的cisco2621路由器、一臺(tái)交換機(jī)組成的局域網(wǎng)利用ISDN撥號(hào)上網(wǎng)。
一、地址轉(zhuǎn)換
我們知道,Internet 技術(shù)是基于IP 協(xié)議 的技術(shù),所有的信息通信都是通過(guò)IP包來(lái)實(shí)現(xiàn)的,每一個(gè)設(shè)備需要進(jìn)行通信都必須有一個(gè)唯一的IP地址。因此,當(dāng)一個(gè)網(wǎng)絡(luò)需要接入Inte rnet的時(shí)候,需要在Internet上進(jìn)行通信的設(shè)備就必須有一個(gè)在全球Internet網(wǎng)絡(luò)上唯一的地址。當(dāng)一個(gè)網(wǎng)絡(luò)需要接入Internet上使用時(shí),網(wǎng)絡(luò)中的每一臺(tái)設(shè)備都有一個(gè)I nternet地址,這在實(shí)行各種Internet應(yīng)用上當(dāng)然是最理想不過(guò)的。但是,這樣也導(dǎo)致每一個(gè)設(shè)備都暴露在網(wǎng)絡(luò)上,任何人都可以對(duì)這些設(shè)備攻擊,同時(shí)由于I nternet目前采用的IPV4協(xié)議在網(wǎng)絡(luò)發(fā)展到現(xiàn)在,所剩下的可用的IP地址已經(jīng)不多了,網(wǎng)絡(luò)中的每一臺(tái)設(shè)備都需要一個(gè)IP地址,這幾乎是不可能的事情。
采用端口地址轉(zhuǎn)換,管理員只需要設(shè)定一個(gè)可以用作端口地址轉(zhuǎn)換的公有Internet 地址,用戶的訪問(wèn)將會(huì)映射到IP池中IP的一個(gè)端口上去,這使每個(gè)合法Internet IP可以映射六萬(wàn)多臺(tái)內(nèi)部網(wǎng)主機(jī)。從而隱藏內(nèi)部網(wǎng)路地址信息,使外界無(wú)法直接訪問(wèn)內(nèi)部網(wǎng)絡(luò)設(shè)備。
Cisco路由器提供了幾種NAT轉(zhuǎn)換的功能:
1、內(nèi)部地址與出口地址的一一對(duì)應(yīng)
缺點(diǎn):在出口地址資源稀少的情況下只能使較少主機(jī)連到internet 。
2、內(nèi)部地址分享出口地址
路由器利用出口地址和端口號(hào)以及外部主機(jī)地址和端口號(hào)作為接口。其中內(nèi)部地址的端口號(hào)為隨機(jī)產(chǎn)生的大于1024的號(hào)碼,而外部主機(jī)端口號(hào)為公認(rèn)的標(biāo)準(zhǔn)端口號(hào)。這樣可以用同一個(gè)出口地址來(lái)分配不同的端口號(hào)連接任意數(shù)量的內(nèi)部主機(jī)到外網(wǎng)。
具體配置:由于實(shí)驗(yàn)用的是ISDN撥號(hào)上網(wǎng),在internet上只能隨機(jī)獲得出口地址,所以NAT轉(zhuǎn)換的地址池設(shè)置為BRI口上撥號(hào)所獲得的地址。
interface FastEthernet0/0
ip address 172.16.18.200 255.255.255.0
ip nat inside the interface connected to inside world
!
interface BRI0/0
ip address negotiated
ip nat outside the interface connected to outside network
encapsulation ppp
no ip split-horizon
dialer string 163
dialer load-threshold 150 inbound
dialer-group 1
isdn switch-type basic-net3
ip nat inside source list 1 interface BRI0/0 overload
access-list 1 permit 172.16.18.0 0.0.0.255
3、內(nèi)部地址和外部地址出現(xiàn)交疊
當(dāng)內(nèi)部和外部用同一個(gè)網(wǎng)絡(luò)段地址時(shí),在地址沒(méi)有重復(fù)的情況下,可以同時(shí)對(duì)內(nèi)外接口進(jìn)行NAT轉(zhuǎn)換使之可以正常通訊。
4、用一個(gè)出口地址映射內(nèi)部多臺(tái)主機(jī)
應(yīng)用于internet上的大型網(wǎng)站有多臺(tái)主機(jī)對(duì)應(yīng)同一個(gè)系統(tǒng)的同一個(gè)出口地址。
可以用sh ip nat translation 和debug ip nat 命令來(lái)檢查NAT的狀態(tài)。
二、基于上下文的訪問(wèn)控制(Context-based access control--CBAC)
CISCO路由器的access-list只能檢查網(wǎng)絡(luò)層或者傳輸層的數(shù)據(jù)包,而CBAC能夠智能過(guò)濾基于應(yīng)用層的(如FTP連接信息)TCP和UDP的sessi on;CBAC能夠在firewall access-list 打開(kāi)一個(gè)臨時(shí)的通道給起源于內(nèi)部網(wǎng)絡(luò)向外的連接,同時(shí)檢查內(nèi)外兩個(gè)方向的sessions。
1、工作原理
比如當(dāng)CBAC配置于連到internet的外部接口上,一個(gè)從內(nèi)部發(fā)出的TCP數(shù)據(jù)包(telnet會(huì)話)經(jīng)過(guò)該接口連出,同時(shí)CBAC的配置中已經(jīng)包括了t cp inspection,將會(huì)經(jīng)過(guò)以下幾步:
(1)數(shù)據(jù)包到達(dá)防火墻的外部接口(設(shè)為s0);
?。?)數(shù)據(jù)包由該接口outbound access-list檢查是否允許通過(guò)(不通過(guò)的數(shù)據(jù)包在此被丟棄,不用經(jīng)過(guò)以下步驟);
?。?)通過(guò)access list檢查的數(shù)據(jù)包由CBAC檢查來(lái)決定和記錄包連接狀態(tài)信息,這個(gè)信息被記錄于一個(gè)新產(chǎn)生的狀態(tài)列表中為下一個(gè)連接提供快速通道;
?。?)如果CBAC沒(méi)有定義對(duì)telnet應(yīng)用的檢查,數(shù)據(jù)包可以直接從該接口送出;
?。?)基于第三步所獲得的狀態(tài)信息,CBAC在s0的inbound access list中插入一個(gè)臨時(shí)創(chuàng)建的access list入口,這個(gè)臨時(shí)通道的定義是為了讓從外部回來(lái)的數(shù)據(jù)包能夠進(jìn)入;
?。?)數(shù)據(jù)包從s0送出;
?。?)接下來(lái)一個(gè)外部的inbound數(shù)據(jù)包到達(dá)s0,這個(gè)數(shù)據(jù)包是先前送出的telnet會(huì)話連接的一部分,經(jīng)過(guò)s0口的access list檢查,然后從第五步建立的臨時(shí)通道進(jìn)入;
?。?)被允許進(jìn)入的數(shù)據(jù)包經(jīng)過(guò)CBAC的檢查,同時(shí)連接狀態(tài)列表根據(jù)需要更新,基于更新的狀態(tài)信息,inbound access list臨時(shí)通道也進(jìn)行修改只允許當(dāng)前合法連接的數(shù)據(jù)包進(jìn)入;
(9)所有屬于當(dāng)前連接的進(jìn)出s0口數(shù)據(jù)包都被檢查,用以更新?tīng)顟B(tài)列表和按需修改臨時(shí)通道的access list,同時(shí)數(shù)據(jù)包被允許通過(guò)s0口;
?。?0)當(dāng)前連接終止或超時(shí),連接狀態(tài)列表入口被刪除,同時(shí),臨時(shí)打開(kāi)的access list入口也被刪除。
需要注意的是:對(duì)于配置到s0口outbound ip access list, accesslist必須允許所有需要的應(yīng)用通過(guò),包括希望被CBAC檢查的應(yīng)用;但是inbound ip access list必須禁止所有需要CBAC檢查的應(yīng)用,當(dāng)CBAC被出去的數(shù)據(jù)包觸發(fā)后,會(huì)在inbound access list中臨時(shí)開(kāi)放一個(gè)通道給合法的、正在傳送的數(shù)據(jù)進(jìn)入。
2、CBAC可提供如下服務(wù)
?。?)狀態(tài)包過(guò)濾:對(duì)企業(yè)內(nèi)部網(wǎng)絡(luò)、企業(yè)和合作伙伴互連以及企業(yè)連接internet提供完備的安全性和強(qiáng)制政策。
(2)Dos檢測(cè)和抵御:CBAC通過(guò)檢查數(shù)據(jù)報(bào)頭、丟棄可疑數(shù)據(jù)包來(lái)預(yù)防和保護(hù)路由器受到攻擊。
?。?)實(shí)時(shí)報(bào)警和跟蹤:可配置基于應(yīng)用層的連接,跟蹤經(jīng)過(guò)防火墻的數(shù)據(jù)包,提供詳細(xì)過(guò)程信息并報(bào)告可疑行為。
?。?)無(wú)縫兼容性:整和防火墻和其它c(diǎn)isco IOS軟件于一體;優(yōu)化廣域網(wǎng)利用率;提供強(qiáng)大的、可升級(jí)的路由選擇etc。
?。?)支持VPN:利用封裝了防火墻版本的cisco Ios 軟件和Qos特性來(lái)保證在公共網(wǎng)絡(luò)上傳輸數(shù)據(jù)的安全性,同時(shí)節(jié)省費(fèi)用。
?。?)可升級(jí)配置:適用于大部分路由器平臺(tái),cisco帶防火墻版本的IOS可升級(jí)來(lái)滿足網(wǎng)絡(luò)帶寬和性能的需要。
3、CBAC受到的限制
?。?)僅適用于IP數(shù)據(jù)流:只有TCP和UDP包被檢測(cè),其它如ICMP等不能被CBAC檢測(cè),只能通過(guò)基本的access lists過(guò)濾。
?。?)如果我們?cè)谂渲肅BAC時(shí)重新更改access lists,要注意:如果access lists禁止TFTP數(shù)據(jù)流進(jìn)入一個(gè)接口,我們將不能通過(guò)那個(gè)接口從網(wǎng)絡(luò)啟動(dòng)路由器(netboot)。
?。?)CBAC忽略ICMP unreachable 信息。
(4)當(dāng)CBAC檢查FTP傳輸時(shí),它只允許目的端口為1024―65535范圍的數(shù)據(jù)通道。
?。?)如果FTP客戶端/服務(wù)器認(rèn)證失敗,CBAC將不會(huì)打開(kāi)一條數(shù)據(jù)通道。
(6)IPSec 和CBAC的兼容性:如果CBAC和IPSec配置于同一臺(tái)路由器上,只要對(duì)數(shù)據(jù)包的檢查是在內(nèi)部網(wǎng)接口上進(jìn)行的,而數(shù)據(jù)包加密是終止在外部網(wǎng)接口上的,那么I Psec和CBAC就能共存在該邊界路由器上。在這種方式下,檢查的是不加密的數(shù)據(jù)流。
4、CBAC所需的內(nèi)存和性能
有一些參數(shù)會(huì)影響CBAC所需的內(nèi)存和性能:
?。?)CBAC對(duì)每條連接使用600 byte的內(nèi)存;
?。?)在檢查數(shù)據(jù)包的過(guò)程中,CBAC使用額外的CPU資源;
?。?)盡管CBAC通過(guò)對(duì)access lists的高效存儲(chǔ)(對(duì)access list進(jìn)行散列索引,然后評(píng)估該散列)來(lái)最小化其對(duì)資源的需求,它在access list檢查過(guò)程中仍要使用一定的CPU資源。
5、配置CBAC
第一步,CBAC用timeout 和threshold值來(lái)管理會(huì)話,配置判斷是否在會(huì)話還未完全建立的時(shí)候終止連接。這些參數(shù)全局性地應(yīng)用于所有會(huì)話。具有firewall feature的cisco router12.0以上版本的IOS缺省是起了IP INSPECT 抵御DoS進(jìn)攻的。當(dāng)half-open會(huì)話數(shù)量大到一定的程度往往意味著正在有DOS攻擊發(fā)生或某人正在做端口掃描,CBAC既監(jiān)測(cè)half-open會(huì)話總數(shù)也監(jiān)測(cè)會(huì)話企圖建立的速率。以下是缺省配置:
HpXg_1#sh ip inspect all
Session audit trail is disabled(相關(guān)命令是ip inspect audit trail,是用來(lái)打開(kāi)自動(dòng)跟蹤審計(jì)功能并將信息傳送到console口,缺省是disabled.)
Session alert is enabled
one-minute thresholds are [400:500] connections(相關(guān)命令是ip inspect one-minute high 500和ip inspect one-minute low 400,是將引起或?qū)е侣酚善鏖_(kāi)始或停止刪除half-open會(huì)話的新增未建立會(huì)話的速率,即每分鐘500/400個(gè)half-open會(huì)話)
max-incomplete sessions thresholds are [400:500](相關(guān)命令是ip inspect max-incomplete high 500,表示將引起路由器開(kāi)始刪除half-open會(huì)話的已經(jīng)存在的half-open會(huì)話數(shù)500個(gè);ip inspect max-incomplete low 400表示將導(dǎo)致路由器開(kāi)始停止刪除half-open會(huì)話的已經(jīng)存在的half-open會(huì)話數(shù))
max-incomplete tcp connections per host is 50. Block-time 0 minute.(相關(guān)命令:ip inspect tcp max-incomplete host 50 block-time 0表示將引起路由器開(kāi)始丟棄到同一目的主機(jī)地址的超過(guò)50個(gè)的half-open會(huì)話。如果block-time值為0表示到某個(gè)目的主機(jī)的每條連接請(qǐng)求,C BAC會(huì)刪除到該主機(jī)的最老的已存在的half-open會(huì)話,并讓該SYN包通過(guò);如果block-time值大于0表示CBAC將刪除到該目的主機(jī)的所有已存在的h alf-open連接,并阻攔所有新的連接.
|