摘要:本文主要介紹了IP訪問控制列表(ACL)技術,對ACL的工作原理和工作過程進行了深入闡述,並對目前主要ACL應用進行了分析,最后給出具體應用的配置實例(本文以Cisco路由器的IOS的ACL為例,主要給出標准和擴展的配置),並就ACL需要注意的相關問題給出具體建議。 一、引言 ACL是一種基於包過濾的流控制技術,在路由器中被廣泛采用,它可以有效的在三層上控制網絡用戶對網絡資源的訪問,既可以具體到兩台網絡設備間的網絡應用,也可以按照網段進行大范圍的訪問控制管理。通過實施ACL,可以有效的部署企業網絡出網策略,也可以用來控制對局域網內部資源的訪問能力,保障資源安全性,但會增加路由器開銷,也會增加管理的復雜度和難度,是否采用ACL技術,是管理效益與網絡安全之間的一個權衡。初期僅在路由器上支持ACL,近些年來已經擴展到三層交換機,部分二層交換機如2950之類也開始提供ACL的支持。 二、概述 1.ACL工作原理 ACL:Acess Control List,即訪問控制列表。這張表中包含了匹配關系、條件和查詢語句,ACL表只是一個框架結構,其目的是為了對某種訪問進行控制,使用包過濾技術,在路由器上讀取第三層及第四層包頭中的信息如源地址、目的地址、源端口、目的端口等,根據預先定義好的規則對包進行過濾,從而達到訪問控制的目的。(注意:過濾的依據僅僅只是第三層和第四層包頭中的部分信息,如無法識別到具體的人,無法識別到應用內部的權限級別等。因此,要和系統級及應用級的訪問權限控制結合使用) ACL中規定了兩種操作,所有的應用都是圍繞這兩種操作來完成的:允許、拒絕。ACL主要用於對入站數據、出站數據、被路由器中繼的數據進行控制。 2.ACL工作過程 (1)無論路由器上有沒有ACL,接到數據包后,當數據進入某個入站口時,路由器首先對其進行檢查,看其是否可路由,如果不可路由那么就丟棄,否則通過查路由選擇表發現該路由的詳細信息及對應的出接口: (2)假設可路由,則找出要將其送出站的接口,此時路由器檢查該出站口有沒有被編入ACL,沒有,則直接從該口送出。如果有ACL,骼由器將依照從上到下的順序依次將該數據和ACL進行匹配,逐條執行,如果與其中某條ACL匹配,根據該ACL指定操作對數據進行相應處理(允許或拒絕),並停止繼續查詢;如果查到ACL的末尾也未找到匹配,則調用ACL最末尾的一條隱含語句deny any將該數據包丟棄; (3)ACL有兩種類型:入站ACL和出站ACL。上面的工作過程的解釋是針對出站ACL,它是在數據包進入路由器並進行了路由選擇找到了出接口后進行的匹配操作;而人站ACL是指當數據剛進入路由器接口時進行的匹配操作,減少了查表過程,但並不能說人站表省略了路由過程就認為它較之出站表更好,要依照實際情況。 三、主要ACL技術 訪問控制列表大的划分可分為兩類:標准訪問控制列表和擴展訪問控制列表,他們的命令都具有基本格式:Access—list access—list—nun—ber{permit/deny}match—condition 1.標准IP訪問控制列表 一個標准IP訪問控制列表匹配IP包中的源地址或源地址中的一部分,可對匹配的包采取拒絕或允許兩個操作。編號范圍是從1到99的訪問控制列表是標准IP訪問控制列表。 2.擴展IP訪問控制列表 擴展IP訪問控制列表比標准IP訪問控制列表具有更多的匹配項,包括協議類型、源地址、目的地址、源端口、目的端口、建立連接的和IP優先級等。編號范圍從100到199的訪問控制列表是擴展IP訪問控制列表。 3.命名的IP訪問控制列表 所謂命名的IP訪問控制列表是以列表名代替列表編號來定義IP訪問控制列表,同樣包括標准和擴展兩種列表,定義過濾的語句與編號方式中相似。 實際依據具體需要而選用不同的控制列表。 四、配置ACL實例 總體思想是先在全局配置模式下設置ACL,后在接口配置模式下將ACL綁定到端口,越精確的表項越靠前,而越籠統的表項越靠后放置。 1.ACL標准控制列表配置實例: 要求網絡192.168.10.0/24網段上的服務器資源禁止被192.168.20.0/24網段上的主機訪問。 配置如下: (1)准備工作: 假設網絡基本配置(IP地址和路由)已經完成,但要在路由器RTA上做子接口。 RTA(config)#interface fastEthemet 0/0.1 RTA(config-subif)#encapsulation dotlq 10(在交換機SW上已划分VLAN 10,20) RTA(config—subi0#ip address 192.168.10.1 255.255.255.128 RTA(config)#interface fastEthemet 0/0.2 RTA(config-subif)#encapsulation dotlq 20 RTA(config-subif)#ip address 192.168,t0.129 255.255.255.128 (2)ACL配置: ①確定未配置ACL之前的訪問PC2訪問PCI、BBS、Web暢通: PC2 ping PCI、BBS、Web的IP地址; ②在路由器上RTA上做適當的ACL配置,確保PC2不能訪問 RTA上192,168,10.0/24網段上的服務器資源,命令如下: RTA(config)#access—list 10 deny 192.168.20.0 0.0.0.255——拒絕192.168,20.0網段 RTA(config)#access—list 10denyhost 192.168.20.110—拒絕192.168. 20.110這台具體的機器 RTA(config)#aceess—list 10 permit any一允許其他的IP訪問(一個正確的ACL語句必然包含至少一條permit語句) ③ACL應用:將在RTA上做得ACL 10控制列表應用到Web和BBS服務器所在子網(192.168.10.0/25的后半個c)在路由器上對應的予接口F0/0.2上。 RTA(eonfig)#interface fastEthemet 0/0.2 RTA(config—subi0#ip access—group 10 out ④測試驗證:PC2 ping PCI、BBS、Web,確定不能訪問RTA上192.168,10.0124網段上的服務器資源(192.168.10.0/25的后半個C),而能訪問PCI。 2.ACL擴展控制列表配置實例: 要求內網中192.168.20.140/25的用戶不能訪問www服務(即拓撲圖中的BBS服務和Web服務)。 主要配置命令如下: RTA(config)#access—list 100 deny tcp 192.168.20.140 0.0.0.127 any eq 80 RTA(config)#access-list 100 permit ip any any RTA(config)#interface fastEthernet 0/0.2 RTA(config)#ip access-group 100 in 五、ACL相關問題 1.正確放置ACL:ACL通過過濾數據包並且丟棄不希望抵達目的地的數據包來控制通信流量。然而,網絡能否有效地減少不必要的通信流量,這還要取決於網絡管理員把ACL放置在哪個地方,標准ACL要盡量靠近目的端,擴展ACL要盡量靠近源端。 2.定義要完整:ACL的定義也是基於每一種協議的。如果路由器接口配置成為支持三種協議(IP、AppleTalk以及IPX)的情況,那么,用戶必須定義三種ACL來分別控制這三種協議的數據包。 3.ACL命令中的in和out:這兩個參數可以控制接口中不同方向的數據包,缺省為out。ACL在一個接口可以進行雙向控制,兩條命令執行的ACL表號可以不同,但在一個接口的一個方向上只能有一個ACL控制。 4.ACL的發展:在Cisco IOSll.2以后的版本中,可以使用名字命名的ACL;從IOS 12.0開始,Cisco路由器新增加了一種基於時間的ACL,可以根據不同時間來控制網絡數據包的轉發,對於編號訪問表和名稱訪問表均適用;基於端口和VLAN的訪問控制列表,可對交換機的具體對應端口或整個VLAN進行訪問控制;帶有Established的擴展訪問列表允許內部用戶訪問外部網絡,而拒絕外部網絡訪問內部網絡,但established語句只支持TCP協議,還要設置相應的ACL語句將需要的UDP等傳輸打開。 六、結束語 在實施ACL的過程中,應當遵循最小特權原則(只給受控對象完成任務所必須的最小的權限)和默認丟棄原則(在CISCO路由交換設備中默認最后一句為ACL中加入了DENY ANY ANY,也就是丟棄所有不符合條件的數據包)。 訪問控制列表ACL增加了在路由器接口上過濾數據包出入的靈活性,可以用來限制網絡流量,也可以控制用戶和設備對網絡的使用,一般的路由器都提供了ACL功能,對於一些網絡流量不是很大的場合,完全可以借助ACL使路由器實現防火牆的部分功能,但他不能完全的代替防火牆。當接收一個數據包時,ACL先檢查訪問控制列表,再執行相應的接受和拒絕的步驟,並不能像專業的防火牆那樣作相應的數據包的分析。如果讓ACL代替防火牆,會讓路由器無法工作,ACL只是初級防范。