1 前言
訪問(wèn)控制列表ACL(Access Control Lists) 使用包過(guò)濾技術(shù),在路由器上根據(jù)第三層或第四層包頭中的信息,如源地址、目的地址、源端口、目的端口以及上層協(xié)議等對(duì)數(shù)據(jù)包進(jìn)行過(guò)濾。ACL技術(shù)不僅在路由器上技術(shù)成熟、應(yīng)用廣泛,而且在三層交換機(jī)上也廣泛支持,甚至有的二層交換機(jī)也支持ACL。ACL可以實(shí)現(xiàn)如下功能:檢查和過(guò)濾數(shù)據(jù)包;限制網(wǎng)絡(luò)流量,提高網(wǎng)絡(luò)性能;限制或減少路由更新的內(nèi)容;提供網(wǎng)絡(luò)訪問(wèn)的基本安全級(jí)別;控制用戶網(wǎng)絡(luò)行為;控制網(wǎng)絡(luò)病毒的傳播。
從ACL的功能不同,ACL技術(shù)可以做如下分類:標(biāo)準(zhǔn)ACL;擴(kuò)展ACL;命名ACL;基于時(shí)間的ACL;動(dòng)態(tài)ACL;自反ACL;CBAC(Context-Based AccessControl)基于上下文的訪問(wèn)控制列表等。按照這個(gè)順序可以看作越來(lái)越高的層次,具有越來(lái)越完善的防火墻功能。為了便于論述,本文示例依據(jù)如圖1拓樸結(jié)構(gòu)。
圖1 示例網(wǎng)絡(luò)拓樸
圖1網(wǎng)絡(luò)中,R1路由器的左側(cè)fa0/0接口IP地址設(shè)為192.168.1.254/24,連接內(nèi)網(wǎng),fa0/1接口IP地址設(shè)為202.115.100.206/28,連接DMZ區(qū),R1右側(cè)serial0/0接口IP地址設(shè)為202.115.100.1/30,連接外網(wǎng)。
2 標(biāo)準(zhǔn)訪問(wèn)控制列表
標(biāo)準(zhǔn)ACL的過(guò)濾參數(shù)只有源IP地址范圍,不能做更靈活的定制,所以應(yīng)用范圍受到限制,但是網(wǎng)絡(luò)設(shè)備處理起來(lái)卻很簡(jiǎn)單,效率很高。
如圖1網(wǎng)絡(luò)拓樸,如果要應(yīng)用標(biāo)準(zhǔn)ACL拒絕外部網(wǎng)訪問(wèn)DMZ區(qū)服務(wù)器InServ,則相關(guān)的命令序列如下:
R1(config)#access-list 10 deny host 202.115.100.200
R1(config)#access-list 10 permit any
R1(config)#interface s0/0
R1(config-if)#ip access-group 10 out
如果要指定目的IP地址范圍,或者指定被拒絕訪問(wèn)的某項(xiàng)服務(wù),標(biāo)準(zhǔn)ACL就無(wú)法實(shí)現(xiàn)了。
3 擴(kuò)展訪問(wèn)控制列表
3.1 常規(guī)應(yīng)用
要在包過(guò)濾規(guī)則中限制目的IP地址范圍,或者指定被拒絕訪問(wèn)的某項(xiàng)服務(wù),擴(kuò)展ACL可以實(shí)現(xiàn)。例如在圖1網(wǎng)絡(luò)拓樸中,要限制外部網(wǎng)訪問(wèn)DMZ服務(wù)器InServ的DNS、FTP和MS SQL Server服務(wù),則相關(guān)的命令序列如下:
R1(config)#access-list110denytcpanyhost202.115.100.200eqftp
R1(config)#access-list110denyudpanyhost202.115.100.200eqdomain
R1(config)#access-list110denytcpanyhost202.115.100.200 eq 1433
R1(config)#access-list 110 permit ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 110 in
3.2VTY虛擬終端連接限制
默認(rèn)狀態(tài)下路由器本身不允許通過(guò)telnet進(jìn)行登錄,必須配置VTY虛擬終端,設(shè)置登錄密碼或者登錄用戶,并啟用登錄驗(yàn)證,遠(yuǎn)程主機(jī)就可以用telnet登錄路由器進(jìn)行設(shè)備配置了。VTY虛擬終端連接限制有幾種方法,一種是在擴(kuò)展ACL中拒絕telnet的TCP端口,例如:
R1(config) #access- list 120 denytcpany host202.115.100.1 eq telnet
R1(config)#access-list 120 permit ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 120 in
我們只對(duì)路由器的一個(gè)接口進(jìn)行了限制,相似地,也可以在所有接口上對(duì)路由器的所有IP地址進(jìn)行限制。第二種方法是在VTY虛擬終端線路上應(yīng)用訪問(wèn)控制列表,那樣就不需要限制TCP端口。例如:
R1(config)#access-list130permitip192.168.1.00.0.0.255any
R1(config)#access-list 130 denyip any any
R1(config)#linevty 0 4
R1(config-line)#access-class130in在VTY虛擬終端線路上因?yàn)橹恍枰拗圃碔P地址范圍,所以用標(biāo)準(zhǔn)ACL就可以了。
3.3 established關(guān)鍵字
擴(kuò)展ACL對(duì)TCP協(xié)議的包過(guò)濾有一個(gè)established關(guān)鍵字,它根據(jù)是否設(shè)置了TCP包的ACK或RST位來(lái)過(guò)濾TCP包(設(shè)置了ACK或RST位后,說(shuō)明這個(gè)包不是會(huì)話的第一個(gè)包,即此包屬于某個(gè)已經(jīng)建立的會(huì)話)。可以不用考慮TCP包的ACK和RST位的問(wèn)題,根據(jù)established字面意義,只要此TCP包屬于某個(gè)已經(jīng)建立的會(huì)話,才是我們所關(guān)注的。
例如在圖1網(wǎng)絡(luò)拓樸中,內(nèi)網(wǎng)向外網(wǎng)發(fā)出的TCP連接是允許的,而且外網(wǎng)可以正常回應(yīng),但是不允許外網(wǎng)向內(nèi)網(wǎng)發(fā)起TCP連接。
R1(config)#access-list112permittcpanyanyestablished
R1(config)#access-list 112 deny ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 112 in
主機(jī)InServ可以訪問(wèn)OutServ的WWW、FTP等服務(wù),但是OutServ不能訪問(wèn)InServ的服務(wù)。另外established關(guān)鍵字只是針對(duì)TCP連接,對(duì)UDP、ICMP、EIGRP等協(xié)議并不適用。
3.4單向ping的實(shí)現(xiàn)
established關(guān)鍵字只能針對(duì)TCP連接,而ping命令使用的ICMP協(xié)議包,在圖1網(wǎng)絡(luò)拓樸中如果要PC1能夠ping通PC2,而PC2不允許ping通PC1,一種方法是拒絕一個(gè)方向的ICMP協(xié)議的echo-reply回應(yīng)數(shù)據(jù)包。相關(guān)命令序列如下:
R1(config)#access-list 110 deny icmp any any echoreply
R1(config)#access-list 110 permit ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 110 out
當(dāng)然,要實(shí)現(xiàn)這個(gè)單向ping功能,還有幾種方法,比如后面的動(dòng)態(tài)ACL和自反ACL。
4 命名訪問(wèn)控制列表
標(biāo)準(zhǔn)ACL和擴(kuò)展ACL用數(shù)值序號(hào)來(lái)作為列表的名稱使用,但是Cisco設(shè)備限制了標(biāo)準(zhǔn)ACL的序號(hào)范圍是1-99,而擴(kuò)展ACL的序號(hào)范圍是100-199,如果要定義更多的ACL或者要讓ACL名稱更有意義,就需要用到命名ACL了。
命名ACL與標(biāo)準(zhǔn)ACL、擴(kuò)展ACL的工作原理是一樣的。編號(hào)ACL和命名ACL的主要區(qū)別是:
(1)名字能更直觀地反映出訪問(wèn)列表完成的功能;
(2)命名ACL突破了99個(gè)標(biāo)準(zhǔn)ACL和100個(gè)擴(kuò)展ACL的數(shù)量限制,能夠定義更多的訪問(wèn)列表;
(3)命名ACL允許刪除個(gè)別語(yǔ)句,而編號(hào)ACL只能刪除整個(gè)訪問(wèn)列表;
(4)命名ACL有一個(gè)配置子模式,而編號(hào)ACL沒(méi)有;把2.3中的示例用命名ACL來(lái)實(shí)現(xiàn)的命令序列如下:
R1(config)#ip access-list extended unid-acl
R1(config-ext-nacl)#permit tcp any any established
R1(config-ext-nacl)#deny ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group unid-acl in
5 基于時(shí)間的訪問(wèn)控制列表
基于時(shí)間的ACL可以為一天中的不同時(shí)間段,或者一個(gè)星期中的不同日期,或者兩者的結(jié)合制定不同的訪問(wèn)控制策略,從而滿足用戶對(duì)網(wǎng)絡(luò)的靈活需求。它能夠應(yīng)用于擴(kuò)展編號(hào)ACL或者擴(kuò)展命名ACL。
例如在圖1網(wǎng)絡(luò)拓樸中,內(nèi)網(wǎng)用戶在本學(xué)期的上班時(shí)間不允許訪問(wèn)外網(wǎng),相關(guān)命令序列如下:
R1(config)#time-range term-res
R1(config-time-range)#absolute start 8:00 1 sept 2010end 18:00 22 jan 2011 /* 定義一個(gè)絕對(duì)時(shí)間范圍,在一個(gè)學(xué)期
R1(config-time-range)#periodic weekday 8:00 to18:00 /* 定義上班時(shí)間,周一至周五每天8:00-18:00
R1(config-time-range)#exit
R1(config) #access- l i s t 110 d e n y i p 192.168.1.00.0.0.255 any time-range term-res
R1(config)#access-list 110 permit ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 110 out
6 動(dòng)態(tài)訪問(wèn)控制列表
前面的標(biāo)準(zhǔn)ACL和擴(kuò)展ACL,包括命名ACL對(duì)信道的限制都是永久性的,如果要臨時(shí)性地允許某個(gè)IP地址的數(shù)據(jù)包通過(guò),只能用人工修改ACL實(shí)現(xiàn)。雖然established關(guān)鍵字可以實(shí)現(xiàn)單向訪問(wèn),但是并不支持另一個(gè)方向的臨時(shí)性通道。為了智能地解決這個(gè)問(wèn)題,動(dòng)態(tài)ACL技術(shù)應(yīng)運(yùn)而生。
要在一個(gè)拒絕通過(guò)的路由器接口上臨時(shí)打開(kāi)一個(gè)通道,首先需要用telnet在該路由器上進(jìn)行登錄認(rèn)證,用戶一般通過(guò)提供用戶名和口令,就能夠開(kāi)啟一個(gè)到路由器的telnet會(huì)話。在用戶被認(rèn)證之后,路由器會(huì)自動(dòng)關(guān)閉telnet會(huì)話,并將一個(gè)動(dòng)態(tài)訪問(wèn)表項(xiàng)置于某個(gè)訪問(wèn)表中,以允許源地址為認(rèn)證用戶工作站地址的數(shù)據(jù)包通過(guò)。這樣,我們可以在路由器接口上配置訪問(wèn)表,只允許那些telnet認(rèn)證的工作站才能發(fā)送臨時(shí)通過(guò)的數(shù)據(jù)包。
當(dāng)然,事先我們至少應(yīng)該允許到達(dá)路由器的telnet數(shù)據(jù)包,這樣才能進(jìn)行用戶認(rèn)證過(guò)程。如果不允許telnet連接,用戶無(wú)法在路由器上認(rèn)證,也就談不上創(chuàng)建動(dòng)態(tài)訪問(wèn)表項(xiàng)了。
例如在圖1網(wǎng)絡(luò)拓樸中,允許在路由器上經(jīng)過(guò)認(rèn)證的外部用戶連到DMZ區(qū)的202.115.100.200服務(wù)器,以進(jìn)行www和FTP訪問(wèn)。相關(guān)命令序列如下:
R1(config)#username in-server secret inserv@sina.com
R1(config)#access-list 120 permit tcp any host202.115.100.1 eq telnet /* 必須先允許連接到路由器進(jìn)行認(rèn)證
R1(config)#access-list 120 permit tcp any host202.115.100.206 eqtelnet / * 允許連接到路由器的另一個(gè)IP地址進(jìn)行認(rèn)證
R1(config)#access-list 120 permit eigrp any any
R1(config)#access-list 120 dynamic dyn1 timeout 120
permit tcp any host 202.115.100.200 eq www /* 如果經(jīng)過(guò)認(rèn)證,此條生效,允許訪問(wèn)DMZ服務(wù)器的WWW服務(wù),絕對(duì)超時(shí)時(shí)間120分鐘,超時(shí)將斷開(kāi)
R1(config)#access-list 120 dynamic dyn2 timeout 120permit tcp any host 202.115.100.200 eq ftp /* 如果經(jīng)過(guò)認(rèn)證,此條生效,允許訪問(wèn)D M Z 服務(wù)器的F T P 服務(wù),絕對(duì)超時(shí)時(shí)間120 分鐘,超時(shí)將斷開(kāi)
R1(config)#interface s0/0
R1(config-if)#ip access-group 120 in
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#autocommand access-enable host
timeout 15 /* 登錄后動(dòng)態(tài)創(chuàng)建ACL條目,同時(shí)telnet自動(dòng)斷開(kāi)
R1(config-line)#rotary 1 /*telnet 斷開(kāi)后,如果要再用telnet對(duì)路由器進(jìn)行配置,就重新用telnet登錄,并指定telnet連接端口3001,如果是rotary2命令,就表示telnet連接端口3002。
應(yīng)用的注意事項(xiàng)在命令注釋中已有說(shuō)明,動(dòng)態(tài)ACL的telnet認(rèn)證成功后就會(huì)斷開(kāi),不能用這個(gè)telnet連接對(duì)路由器進(jìn)行配置,如果一定要用telnet對(duì)路由器配置,用rotary命令允許另開(kāi)一個(gè)帶端口號(hào)的telnet通道。
有兩個(gè)地方設(shè)置超時(shí)值,在access-list中設(shè)置的timeout值是絕對(duì)超時(shí)值,無(wú)論是不是有被允許的流量通過(guò),超時(shí)將斷開(kāi)鏈接,刪除動(dòng)態(tài)表項(xiàng)。在autocommand命令中設(shè)置的timeout值是相對(duì)超時(shí)值,如果沒(méi)有被認(rèn)證的流量通過(guò),超時(shí)將斷開(kāi)鏈接。絕對(duì)超時(shí)值必須大于相對(duì)超時(shí)值,超時(shí)值以分鐘為單位。
7 自反訪問(wèn)控制列表
某些情況要允許內(nèi)網(wǎng)訪問(wèn)外網(wǎng),但是不允許外網(wǎng)訪問(wèn)內(nèi)網(wǎng),前面提到的擴(kuò)展ACL中的established關(guān)鍵字可以實(shí)現(xiàn)這個(gè)功能,但是established關(guān)鍵字只適用于TCP連接,不能用于ICMP、EIGRP、UDP等協(xié)議數(shù)據(jù)包。自反ACL可以實(shí)現(xiàn)多種協(xié)議數(shù)據(jù)包類型的單向訪問(wèn)控制。
例如在圖1網(wǎng)絡(luò)拓樸中,要拒絕外網(wǎng)向內(nèi)網(wǎng)發(fā)起的所有訪問(wèn),但是允許內(nèi)網(wǎng)向外網(wǎng)發(fā)起的所有訪問(wèn)。相關(guān)的命令序列如下:
R1(config)#ip access-list extended r1-in
R1(config-ext-nacl)#permit ospf any any
R1(config-ext-nacl)#evaluate my-ref /*對(duì)進(jìn)方向的數(shù)據(jù)包進(jìn)行評(píng)估,評(píng)估依據(jù)是出方向的擴(kuò)展訪問(wèn)列表中的自反條目,如果是出方向自反條目允許訪問(wèn)的回應(yīng)數(shù)據(jù)包,則允許通過(guò)
R1(config)#ip access-list extended r1-out
R1(config-ext-nacl)#permit ip any any reflect myref/* 在出方向定義自反條目
R1(config)#int s0/0
R1(config-if)#ip access-group r1-in in
R1(config-if)#ip access-group r1-out out
R1(config)#ip reflexive-list timeout 60 /* 臨時(shí)反射出來(lái)的條目的全局超時(shí)有效時(shí)間60 秒
在接口的in方向上只允許了一個(gè)ospf協(xié)議,其他訪問(wèn)都禁止了,也就是不允許外網(wǎng)訪問(wèn)內(nèi)網(wǎng)。evaluatemy-ref嵌套了一個(gè)反射ACL,名稱為my-ref。在接口的out方向上,允許所有的訪問(wèn),但是如果沒(méi)有自反功能的話是可以出去但是回不來(lái),所以在permitipanyany后加上了一個(gè)reflect,也就是說(shuō),任何從內(nèi)網(wǎng)發(fā)起的流量如果它匹配這條permit ip any any reflect my ref語(yǔ)句的話,則自動(dòng)在r1-in的列表中創(chuàng)建一條動(dòng)態(tài)的permit語(yǔ)句。另外,對(duì)自反ACL做以下說(shuō)明:
(1)自反ACL永遠(yuǎn)是permit的;
(2)當(dāng)使用自反ACL時(shí),命名訪問(wèn)列表必須創(chuàng)建兩個(gè),一個(gè)用于入站數(shù)據(jù)包,一個(gè)用于出站數(shù)據(jù)包,自反條目將成對(duì)使用并且相互關(guān)聯(lián);
(3)自反ACL允許高層Session信息的IP包過(guò)濾;
(4)利用自反ACL可以只允許出去的流量,但是阻止從外部網(wǎng)絡(luò)產(chǎn)生的向內(nèi)部網(wǎng)絡(luò)的流量,從而可以更好地保護(hù)內(nèi)部網(wǎng)絡(luò);
(5)自反ACL是在有流量產(chǎn)生時(shí)(如出方向的流量)臨時(shí)自動(dòng)產(chǎn)生的,并且當(dāng)Session結(jié)束時(shí)條目就刪除;
(6)自反ACL不是直接被應(yīng)用到某個(gè)接口下的,而是嵌套在一個(gè)擴(kuò)展命名訪問(wèn)列表下的;
(7)對(duì)那些在會(huì)話過(guò)程中改變所使用端口號(hào)的應(yīng)用程序來(lái)說(shuō),自反訪問(wèn)列表不能與之工作,F(xiàn)TP是使用過(guò)程中改變端口號(hào)的應(yīng)用程序,如果使用了自反ACL,必須使用被動(dòng)FTP來(lái)取代;
(8)自反ACL不能處理多通道應(yīng)用程序;
(9)每行自反條目可以用timeout配置超時(shí)值,也可以整個(gè)用一個(gè)全局超時(shí)值。UDP連接中,或者TCP會(huì)話未正常終止時(shí),將使用閑置超時(shí)值刪除臨時(shí)允許條目。
8 基于上下文的訪問(wèn)控制列表
基于上下文的訪問(wèn)控制列表CBAC能夠處理那些不能使用自反ACL處理的多端口協(xié)議。之前的ACL工作在網(wǎng)絡(luò)層或傳輸層,它們處理一些應(yīng)用程序的能力是有限的,而CBAC通過(guò)應(yīng)用層來(lái)過(guò)濾數(shù)據(jù)包,處理能力更強(qiáng)。CBAC的工作方式和自反ACL很類似,它們都是基于從路由器出站經(jīng)過(guò)外部接口的數(shù)據(jù)流創(chuàng)建一個(gè)臨時(shí)通道,這些通道允許會(huì)話返回進(jìn)入內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)流通過(guò)。應(yīng)用層的協(xié)議種類很多,CBAC并不支持所有的應(yīng)用層協(xié)議,但是可以修改端口應(yīng)用程序映射表(PAM,PortApplication Mapping)把非標(biāo)準(zhǔn)端口號(hào)與CBAC支持的應(yīng)用層協(xié)議相關(guān)聯(lián),這也提供了一定的靈活性。
CBAC的主要功能是:(1)CBAC能夠基于應(yīng)用層智能地過(guò)濾TCP/UDP包,可以支持FTP、RPC、SQL*Net等協(xié)議過(guò)濾,甚至可以過(guò)濾JAVA應(yīng)用程序;(2)因?yàn)镃BAC檢測(cè)流量是基于會(huì)話狀態(tài)的,所以可以防止一些DoS拒絕服務(wù)的攻擊;(3)CBAC可以創(chuàng)建實(shí)時(shí)的警報(bào)和審計(jì)日志,以方便對(duì)事件進(jìn)行跟蹤;(4)CBAC支持Cisco的入侵檢測(cè)系統(tǒng)IDS,增強(qiáng)系統(tǒng)的安全性。
例如在圖1網(wǎng)絡(luò)拓樸中,要拒絕外網(wǎng)向內(nèi)網(wǎng)發(fā)起的所有訪問(wèn),但是允許內(nèi)網(wǎng)向外網(wǎng)發(fā)起的http、ftp、電子郵件訪問(wèn),并對(duì)java小應(yīng)用程序進(jìn)行限制。相關(guān)的命令序列如下:
R1(config)#ip inspect name test-cbac http java-list 51timeout 3600
R1(config)#ip inspect name test-cbac ftp timeout 3600
R1(config)#ip inspect name test-cbac pop3 timeout3600
R1(config)#ip inspect name test-cbac smtp timeout3600
/* 以上定義被允許的CBAC 應(yīng)用協(xié)議,同時(shí)限制網(wǎng)頁(yè)中的java 小應(yīng)用程序,相應(yīng)的CBAC 名稱是test-cbac,連接超時(shí)值是3600 秒
R1(config)#access-list 51 permit host 61.139.100.200R1(config) #access- l i s t 51 p e r m i t 61.135.167.00.0.0.255
R1(config)#access-list 51 deny any
/* 上面的標(biāo)準(zhǔn)訪問(wèn)列表應(yīng)用于java 應(yīng)用程序的友好列表中,只允許指定服務(wù)器和一個(gè)指定網(wǎng)段的java 程序進(jìn)入內(nèi)網(wǎng)
R1(config)#access-list 110 permit icmp any any
R1(config)#access-list 110 deny ip any any
R1(config)#int s0/0
R1(config-if)#ip access-group 110 in
R1(config-if)#ip inspect test-cbac out
CBAC的限制:(1)CBAC不能為所有協(xié)議提供智能過(guò)濾,他只能為你所指定的協(xié)議進(jìn)行過(guò)濾;(2)CBAC只能提供一定類型的入侵保護(hù).只能提供大部分常規(guī)的入侵保護(hù);(3)CBAC只能檢查TCP和UDP連接,不能檢測(cè)ICMP、路由協(xié)議等;(4)對(duì)第三者路由器的加密的信道也無(wú)法進(jìn)行檢測(cè),如IPSec信道。
9 總結(jié)
訪問(wèn)控制列表ACL是CiscoIOS防火墻的核心技術(shù),多種訪問(wèn)控制列表技術(shù)從簡(jiǎn)到繁、從低層次到高層次,為網(wǎng)絡(luò)的邊界安全提供了靈活的解決方案,在此分析了各種訪問(wèn)控制列表技術(shù)的性能和相互之間的差別,并使用案例對(duì)它們的應(yīng)用進(jìn)行了展示。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:Cisco路由器ACL剖析
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112155260.html