配置CBAC,提升Cisco路由器安全
在Cisco路由器上創(chuàng)建ACL(訪問(wèn)控制列表)是管理員常用的數(shù)據(jù)過(guò)濾和網(wǎng)絡(luò)安全防護(hù)措施,但是ACL的局限性是非常明顯的,因?yàn)樗荒軝z測(cè)到網(wǎng)絡(luò)層和傳輸層的數(shù)據(jù)信息,而對(duì)于封裝在IP包中的惡意信息它是無(wú)能為力的。因此,ACL并不可靠,需要CBAC(基于上下文的訪問(wèn)控制)的配合,這樣網(wǎng)絡(luò)安全性將會(huì)極大提升。
一、CBAC簡(jiǎn)述
CBAC(context-based access control)即基于上下文的訪問(wèn)控制,它不用于ACL(訪問(wèn)控制列表)并不能用來(lái)過(guò)濾每一種TCP/IP協(xié)議,但它對(duì)于運(yùn)行TCP、UDP應(yīng)用或某些多媒體應(yīng)用(如Microsoft的NetShow或Real Audio)的網(wǎng)絡(luò)來(lái)說(shuō)是一個(gè)較好的安全解決方案。除此之外,CBAC在流量過(guò)濾、流量檢查、警告和審計(jì)蛛絲馬跡、入侵檢測(cè)等方面表現(xiàn)卓越。在大多數(shù)情況下,我們只需在單個(gè)接口的一個(gè)方向上配置CBAC,即可實(shí)現(xiàn)只允許屬于現(xiàn)有會(huì)話的數(shù)據(jù)流進(jìn)入內(nèi)部網(wǎng)絡(luò)。可以說(shuō),ACL與CBAC是互補(bǔ)的,它們的組合可實(shí)現(xiàn)網(wǎng)絡(luò)安全的最大化。
二、CBAC的合理配置
1.CBAC配置前的評(píng)估
在進(jìn)行CBAC配置之前需要對(duì)網(wǎng)絡(luò)的安全標(biāo)準(zhǔn)、應(yīng)用需求等方面進(jìn)行評(píng)估然后根據(jù)需要進(jìn)行相應(yīng)的配置。通常情況下,用戶可以在一個(gè)或多個(gè)接口的2個(gè)方向上配置CBAC。如果防火墻兩端的網(wǎng)絡(luò)都需要受保護(hù)的話,如在Extranet或Intranet的配置中,就可以在2個(gè)方向上配置CBAC。若防火墻被放置在2個(gè)合作伙伴公司網(wǎng)絡(luò)的中間,則可能想要為某些應(yīng)用在一個(gè)方向上限制數(shù)據(jù)流,并為其它應(yīng)用在反方向上限制數(shù)據(jù)流。
特別要注意的是,CBAC只能用于IP數(shù)據(jù)流。只有TCP和UDP數(shù)據(jù)包能被檢查,其他IP數(shù)據(jù)流
(如ICMP)不能被CBAC檢查,只能采用基本的訪問(wèn)控制列表對(duì)其進(jìn)行過(guò)濾。在不作應(yīng)用層協(xié)議審查時(shí),像自反訪問(wèn)控制列表一樣,CBAc可以過(guò)濾所有的TCP和UDP會(huì)話。但CBAC也可以被配置來(lái)有效地處理多信道(多端口)應(yīng)用層協(xié)議:cu-SeeMe(僅對(duì)whitePine版本)、FTP、H.323(如NetMeeting和ProShare)、HTTP(Java攔阻)、Java、MicrosftNetshow、UNIX的r系列命令(如rlogin、rexec和rsh);RealAudio、RPC(SunRPc,非DCERPC)MircosoftRPC、SMTP、SQL.Net、StreamWorks、TFTP、VDOLive。
2.選擇配置接口
為了恰當(dāng)?shù)嘏渲肅BAc,首先必須確定在哪個(gè)接口上配置CBAC。下面描述了內(nèi)部口和外部接口間的不同之處。
配置數(shù)據(jù)流過(guò)濾的第一步是決定是否在防火墻的一個(gè)內(nèi)部接口或外部接口上配置CBAC。在該環(huán)境下,所謂“內(nèi)部”是指會(huì)話必須主動(dòng)發(fā)起以讓其數(shù)據(jù)流被允許通過(guò)防火墻的一側(cè);“外部”是指會(huì)話不能主動(dòng)發(fā)起的一側(cè)(從外部發(fā)起的會(huì)話被禁止)。如果要在2個(gè)方向上配置CBAc,應(yīng)該先在一個(gè)方向上使用適當(dāng)?shù)?ldquo;Intemal”和“Extemal”接口指示配置CBAC。在另一個(gè)方向上配置CBAC時(shí),則將該接口指示換成另一個(gè)。
CBAC常被用于2種基本的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)之一。確定哪種拓?fù)浣Y(jié)構(gòu)與用戶自己的最吻合,可以幫助用戶決定是否應(yīng)在一個(gè)內(nèi)部接口或是在一個(gè)外部接口上配置CBAC。
圖l給出了第1種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在該簡(jiǎn)單的拓?fù)浣Y(jié)構(gòu)中,CBAC被配置在外部接口S0上。這可以防止指定的協(xié)議數(shù)據(jù)流進(jìn)入該防火墻路由器和內(nèi)部網(wǎng)絡(luò),除非這些數(shù)據(jù)是由內(nèi)部網(wǎng)絡(luò)所發(fā)起會(huì)話的一部分。
圖1#p#
圖2給出了第2種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在該拓?fù)浣Y(jié)構(gòu)中,CBAC被配置在內(nèi)部接口E0上,允許外部數(shù)據(jù)流訪問(wèn)DMZ(連接在接口E1上的停火區(qū))中的服務(wù)(如DNS服務(wù)),同時(shí)防止指定的協(xié)議數(shù)據(jù)流如內(nèi)部網(wǎng)絡(luò),除非這些數(shù)據(jù)流是由內(nèi)部網(wǎng)絡(luò)所發(fā)起的會(huì)話的一部分。這兩種拓?fù)浣Y(jié)構(gòu)之間的關(guān)鍵不同點(diǎn)是:第1種拓?fù)浣Y(jié)構(gòu)不允許外部數(shù)據(jù)流不經(jīng)過(guò)CBAC過(guò)濾器就進(jìn)入了路由器;第2中拓?fù)浣Y(jié)構(gòu)允許外部數(shù)據(jù)流入路由器,讓他們能不經(jīng)過(guò)CBAC過(guò)濾器就到達(dá)位于DMZ區(qū)中的公共服務(wù)器。
圖2
根據(jù)這2個(gè)拓?fù)浣Y(jié)構(gòu)樣例,可以決定網(wǎng)絡(luò)是否應(yīng)在一個(gè)內(nèi)部接口或是在一個(gè)外部接口上配置CBAC。如果防火墻只有2條連接,一條是到內(nèi)部網(wǎng)絡(luò),另外一條是到外部網(wǎng)絡(luò),那么只能使用入方向的訪問(wèn)控制列表就可以了,因?yàn)閿?shù)據(jù)包在有機(jī)會(huì)影響路由器之前已經(jīng)被過(guò)濾了。
3.防火墻配置
當(dāng)用戶用Cisco IOS配置任何IP防火墻時(shí)可參照下面給出的一些基本的配置指南。
(1).配置一個(gè)包含允許來(lái)自不受保護(hù)網(wǎng)絡(luò)的某些ICMP數(shù)據(jù)流條目的訪問(wèn)控制列表。盡管一個(gè)拒絕所以不屬于受CBAC所審查的連接一部分的IP數(shù)據(jù)流的訪問(wèn)控制列表看起來(lái)比較安全,但它對(duì)路由器的正確運(yùn)行不太現(xiàn)實(shí)。路由器期望能夠看到來(lái)自網(wǎng)絡(luò)中其他路由器的ICMP數(shù)據(jù)流。ICMP數(shù)據(jù)流不能被CBAC所審查,所以應(yīng)在防護(hù)控制列表中設(shè)置特定的條目以允許返回的ICMP數(shù)據(jù)流。如在受保護(hù)網(wǎng)絡(luò)中的一個(gè)用戶要用“Ping”命令來(lái)獲取位于不受保護(hù)網(wǎng)絡(luò)中的一臺(tái)主機(jī)的狀態(tài),如果在訪問(wèn)控制列表中沒(méi)有允許“echoreply”消息的條目,則在受保護(hù)網(wǎng)絡(luò)中的這位用戶就得不到其“Ping”命令的相應(yīng)。下面所示的配置中含有允許關(guān)鍵ICMP消息的訪問(wèn)控制列表?xiàng)l目:
Router(config)#access -list 101 permit icmp any any echo-reply
Router(config)#access -list 101 permit icmp any any time-execeeded
Router(config)#access -list 101 permit icmp any any packet-too-big
Router(config)#access -list 101 permit icmp any any traceroute
Router(config)#access -list 101 permit icmp any any UnreaChable
(2).在訪問(wèn)控制列表中添加一個(gè)拒絕所有冒用受保護(hù)網(wǎng)絡(luò)中地址的外來(lái)數(shù)據(jù)流的條目。這被稱(chēng)作防欺騙保護(hù),因?yàn)樗梢苑乐箒?lái)自不受保護(hù)網(wǎng)絡(luò)的數(shù)據(jù)流假冒保護(hù)網(wǎng)絡(luò)中某個(gè)設(shè)備的身份。
(3).在訪問(wèn)控制列表增加一個(gè)拒絕源地址為廣播地址(255.255.255.255)數(shù)據(jù)包的條目。該條目可以防止廣播攻擊。
(4).當(dāng)對(duì)防火墻的訪問(wèn)特權(quán)設(shè)置口令時(shí),最好是用“enablesecret”命令而不是“enablepassword”命令。因?yàn)?ldquo;enableesecret”命令使用了一種更強(qiáng)的加密算法。
(5).在控制臺(tái)端口上設(shè)置一個(gè)口令,至少應(yīng)配置“login”和“password”命令。
(6).在以任何方法將控制臺(tái)連接到網(wǎng)絡(luò)上(包括在該端口上連接一個(gè)調(diào)制解調(diào)器)之前,應(yīng)認(rèn)真考慮訪問(wèn)控制事宜。要知道,在重啟防火墻路由器時(shí)通過(guò)在控制臺(tái)端口上“break”鍵就可以獲得對(duì)它的完全控制權(quán),即使配置了訪問(wèn)控制也無(wú)法阻止。
(7).對(duì)所有的虛擬終端端口應(yīng)用訪問(wèn)控制列表和口令保護(hù)。用“access -class”命令指定的訪問(wèn)可以通過(guò)telnet登錄到路由器上。
(8).不要啟用用不到的任何本地服務(wù)(如SNMP或網(wǎng)絡(luò)時(shí)間協(xié)議NTP)。Cisco發(fā)現(xiàn)吸引CDP(Cisco Discovery Protocol)和NTP的缺省是打開(kāi)的,如果不使用的話就應(yīng)該把它們關(guān)閉。
(9).任何被啟用的服務(wù)都有可能帶來(lái)潛在的安全風(fēng)險(xiǎn)。一個(gè)堅(jiān)決的、有惡意的團(tuán)體有可能會(huì)摸索出濫用所啟用服務(wù)的方法來(lái)訪問(wèn)防火墻或網(wǎng)絡(luò)。對(duì)于被啟用的本地服務(wù),,可以通過(guò)將它們配置為只與特定的對(duì)等體進(jìn)行通信來(lái)防止被濫用,并通過(guò)在特定的接口上配置訪問(wèn)控制列表來(lái)拒絕對(duì)這些服務(wù)的訪問(wèn)數(shù)據(jù)包來(lái)保護(hù)自己。
(10).關(guān)閉低端口服務(wù)。對(duì)于IP可以輸入“noservicetcp-small-servers”和“noserviceudp-small-servers”全局配置命令。在Cisco IOS版本12.0及后續(xù)版本中,這些服務(wù)缺省就是關(guān)閉的。
(11).通過(guò)在任何異步telnet端口上配置訪問(wèn)控制列表來(lái)防止防火墻被用作中繼跳板。
(12).通常情況下,應(yīng)該在防火墻和所有其他路由器上關(guān)閉對(duì)任何可應(yīng)用協(xié)議的定向廣播功能。對(duì)于IP協(xié)議,可使用no中“directed -broadcast”命令。在極少數(shù)情況下,有些IP網(wǎng)絡(luò)確實(shí)需要定向廣播功能,在這種情況下就不能關(guān)閉定向廣播功能,定向廣播可以被濫用來(lái)放大拒絕服務(wù)攻擊的力量,因?yàn)槊總€(gè)Dos數(shù)據(jù)包都會(huì)被廣播到同一子網(wǎng)的所有主機(jī)。另外,有些主機(jī)在處理廣播時(shí)還存在有其他固有的安全風(fēng)險(xiǎn)。
(13).配置“noproxy -arp”命令來(lái)防止內(nèi)部地址被暴露(如果沒(méi)有配置NAT來(lái)防止內(nèi)部地址被暴露的話,這么做是非常必要的)。
(14).將防火墻防在一個(gè)安全的區(qū)域內(nèi)。#p#
三、配置接口的技巧
1.配置外部接口的技巧
如果在外部接口上有一個(gè)對(duì)外方向的IP訪問(wèn)控制列表,則該訪問(wèn)控制列表就可以是一個(gè)標(biāo)準(zhǔn)的或擴(kuò)展的訪問(wèn)控制列表。該外出方向的訪問(wèn)控制列表應(yīng)該允許想讓CBAC檢查的數(shù)據(jù)流通過(guò)。如果數(shù)據(jù)流不被允許,它就不能被CBAC檢查,就會(huì)被簡(jiǎn)單地丟棄。
在外部接口上的入方向訪問(wèn)控制列表必須是一個(gè)擴(kuò)展的訪問(wèn)控制類(lèi)表。該入方訪問(wèn)控制列表應(yīng)該拒絕想要讓CBAC檢查的數(shù)據(jù)流。CBAC將在該人方向控制列表中產(chǎn)生適當(dāng)?shù)呐R時(shí)通口,只允許返回?cái)?shù)據(jù)進(jìn)入,這些數(shù)據(jù)流屬于一個(gè)有效的已存在會(huì)話的一部分。
2.配置內(nèi)部接口的技巧
如果在內(nèi)部接口上有一個(gè)入方向的IP訪問(wèn)控制列表,或在外部接口上有一個(gè)對(duì)外出方向的IP訪問(wèn)控制列表,則這些訪問(wèn)控制列表可以是標(biāo)準(zhǔn)的或者擴(kuò)展的訪問(wèn)控制類(lèi)表。這些訪問(wèn)控制類(lèi)表應(yīng)該允許想讓CBAC審查的數(shù)據(jù)流通過(guò)。如果數(shù)據(jù)流不被允許,它就不能被CBAC審查,就會(huì)被簡(jiǎn)單地丟棄掉。
在內(nèi)部接口上的外出方向的IP訪問(wèn)控制列表和在外部接口上的入方向的訪問(wèn)控制列表必須是擴(kuò)展的訪問(wèn)控制列表。這些訪問(wèn)控制列表應(yīng)該拒絕想要讓CBAC審查的數(shù)據(jù)流通過(guò)CBAC將在這些訪問(wèn)控制列表中產(chǎn)生適當(dāng)?shù)呐R時(shí)通道,只允許那些屬于一個(gè)有效的、已存在會(huì)話的一部分的返回?cái)?shù)據(jù)流進(jìn)入。不需要在內(nèi)部接口的外出方向和外部接口的入口向上都配置一個(gè)擴(kuò)展訪問(wèn)控制列表,但至少需要配置一個(gè),以限制數(shù)據(jù)流通過(guò)防火墻流進(jìn)內(nèi)部受保護(hù)的網(wǎng)絡(luò)。
四、總結(jié)
只有連接的控制信道會(huì)被CBAC審查和監(jiān)視,數(shù)據(jù)信道不會(huì)被審查。如在FTP會(huì)話中,控制信道(通常是TCP端口21)和數(shù)據(jù)信道(通常是TCP端口20)的狀態(tài)變化都會(huì)被監(jiān)視,但只有控制信道才會(huì)被審查。
CBAC審查識(shí)別控制信道中與應(yīng)用具體相關(guān)的命令,并檢測(cè)和防止某些應(yīng)用層攻擊,如SYN-flooding(SYN包風(fēng)暴攻擊)等。當(dāng)網(wǎng)絡(luò)攻擊者想一臺(tái)服務(wù)器發(fā)起了SYN包風(fēng)暴攻擊。大量的半開(kāi)連接會(huì)淹沒(méi)服務(wù)器,導(dǎo)致它拒絕正常的請(qǐng)求提供服務(wù)。無(wú)法訪問(wèn)網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)攻擊被稱(chēng)為服務(wù)攻擊(DoS)。
CBAC審查還在其它方面有助于防止拒絕服務(wù)攻擊。CBAC檢查T(mén)CP連接中的包序列號(hào)碼是否在所期望的范圍之內(nèi),并丟棄所有可疑的數(shù)據(jù)包。同時(shí),也可以配置CBAC來(lái)丟棄半開(kāi)連接,這需要占用防火墻的處理資源和內(nèi)存資源來(lái)進(jìn)行維護(hù)。另外,CBAC也可以檢測(cè)不尋常的新連接建立速率,并發(fā)出告警消息。
【編輯推薦】