訪問控制列表

訪問控制列表

訪問控制列表是套用在路由器接口的指令列表,這些指令列表用來告訴路由器哪些數據包可以接收、哪些數據包需要拒絕。

基本定義

訪問控制是網路安全防範和保護的主要策略,它的主要任務是保證網路資源不被非法使用和訪問。它是保證網路安全最重要的核心策略之一。訪問控制涉及的技術也比較廣,包括入網訪問控制、網路許可權控制、目錄級控制以及屬性控制等多種手段。

訪問控制列表(Access Control Lists,ACL)是套用在路由器接口的指令列表。這些指令列表用來告訴路由器哪些數據包可以收、哪些數據包需要拒絕。至於數據包是被接收還是拒絕,可以由類似於源地址、目的地址、連線埠號等的特定指示條件來決定。

訪問控制列表不但可以起到控制網路流量、流向的作用,而且在很大程度上起到保護網路設備、伺服器的關鍵作用。作為外網進入企業區域網路的第一道關卡,路由器上的訪問控制列表成為保護區域網路安全的有效手段。

此外,在路由器的許多其他配置任務中都需要使用訪問控制列表,如網路地址轉換(Network Address Translation,NAT)、按需撥號路由(Dial on Demand Routing,DDR)、路由重分布(Routing Redistribution)、策略路由(Policy-Based Routing,PBR)等很多場合都需要訪問控制列表。

訪問控制列表從概念上來講並不複雜,複雜的是對它的配置和使用,許多初學者往往在使用訪問控制列表時出現錯誤。

功能

1)限制網路流量、提高網路性能。例如,ACL可以根據數據包的協定,指定這種類型的數據包具有更高的優先權,同等情況下可預先被網路設備處理。

2)提供對通信流量的控制手段。

3)提供網路訪問的基本安全手段。

4)在網路設備接口處,決定哪種類型的通信流量被轉發、哪種類型的通信流量被阻塞。

分類

標準IP訪問列表

一個標準IP訪問控制列表匹配IP包中的源地址或源地址中的一部分,可對匹配的包採取拒絕或允許兩個操作。編號範圍是從1到99的訪問控制列表是標準IP訪問控制列表。

擴展IP訪問

擴展IP訪問控制列表比標準IP訪問控制列表具有更多的匹配項,包括協定類型、源地址、目的地址、源連線埠、目的連線埠、建立連線的和IP優先權等。編號範圍是從100到199的訪問控制列表是擴展IP訪問控制列表。

命名的IP訪問

所謂命名的IP訪問控制列表是以列表名代替列表編號來定義IP訪問控制列表,同樣包括標準和擴展兩種列表,定義過濾的語句與編號方式中相似。

標準IPX訪問

標準IPX訪問控制列表的編號範圍是800-899,它檢查IPX源網路號和目的網路號,同樣可以檢查源地址和目的地址的節點號部分。

擴展IPX訪問

擴展IPX訪問控制列表在標準IPX訪問控制列表的基礎上,增加了對IPX報頭中以下幾個宇段的檢查,它們是協定類型、源Socket、目標Socket。擴展IPX訪問控制列表的編號範圍是900-999。

命名的IPX訪問

與命名的IP訪問控制列表一樣,命名的IPX訪問控制列表是使用列表名取代列表編號。從而方便定義和引用列表,同樣有標準和擴展之分。

工作原理

算法

in的時候判斷的是源地址是vlan內的地址,out的時候判斷源地址是非本vlan 內的地址。

18、19兩個不同的網段,在18網段上加訪問列表,

----〉表示能夠訪問,---X-->;表示不能訪問。

ip access-l exte test_liu

deny ip host 10.24.18.5 host 10.24.19.30

permit ip any any

__________________________________________________

inter vlan 18

ip access-g test_liu in

exit

測試:18.5--X-->19.30

19.30--X-->18.5

訪問列表生效,在IN 方向判斷源地址18.5屬於本VLAN

___________________________________________________

inter vlan 18

ip access-g test_liu out

exit

測試:18.5---->19.30

19.30---->18.5

訪問列表不生效,在OUT方向判斷源地址18.5屬於本VLAN,不作限制

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ip access-l exte test_liu

deny ip host 10.24.19.30 host 10.24.18.5

permit ip any any

----------------------------------------------------

inter vlan 18

ip access-g test_liu in

exit

測試:18.5---->19.30

19.30---->18.5

訪問列表不生效,在in方向判斷源地址19.30不屬於本VLAN,不作限制

__________________________________________________

使用配置

配置路由器

動態路由已設好,IP位址分配如下:

RouterA f0/0: 10.65.1.2

RouterA f0/1: 10.66.1.2

RouterA s0/1: 10.68.1.2

RouterC s0/0: 10.68.1.1

RouterC s0/1: 10.78.1.2

RouterB s0/0: 10.78.1.1

RouterB s0/1: 10.69.1.2

RouterB f0/0: 10.70.1.2

SWA:10.65.1.8gateway:10.65.1.2

PCA:10.65.1.1gateway:10.65.1.2

PCB:10.66.1.1gateway:10.66.1.2

PCC:10.69.1.1gateway:10.69.1.2

PCD:10.70.1.1gateway:10.70.1.2

PCE:10.65.1.3gateway:10.65.1.2

PCF:10.65.2.1gateway:10.65.1.2

基本基礎

先從PCA ping PCD:

[root@PCA @root]#ping 10.70.1.1 (通)

在ROC的s0/0寫一個輸入的訪問控制列表:

RouterC(config)#access-list 1 permit 10.65.1.1 0.0.0.0

RouterC(config)#access-list 1 deny any

RouterC(config)#int s0/0

RouterC(config-if)#ip access-group 1 in

RouterC(config-if)#end

RouterC#sh access-list 1

[root@PCA @root]#ping 10.70.1.1(通)

[root@PCE @root]#ping 10.70.1.1(不通)

[root@PCE @root]#ping 10.66.1.1(通)

[root@PCB @root]#ping 10.70.1.1(不通)

[root@PCD @root]#ping 10.66.1.1(通)

第一個ping,PCA的IP位址是10.65.1.1在訪問控制列表access-list 1中是

允許的,所以通。

第二個ping,PCE雖然是65網段,但是access-list 1對10.65.1.1是完全匹配,

所以10.65.1.3的數據包不能通過。

第三個ping,PCE到PCB不通過RouterC的s0/0,所以能通。

第四個ping,PCB的IP位址是10.66.1.1,它是被禁止的,所以不通。

第五個ping,從PCD到PCB的數據包是從RouterC的s0/0口出,不受access-list 1

的控制,所以通。

下面再寫一個訪問控制列表,先刪除原訪問控制列表:

RouterC(config)#no access-list 1

RouterC(config-if)#no ip access-group 1 in

二者都可能實現去掉訪問列表的目的。前者是從列表號角度刪除,後者是從接口

的輸入和輸出角度刪除。

可以通過sh access-list <n> 命令查看訪問控制列表。

下面再寫一個訪問控制列表:

RouterC(config)#access-list 2 deny 10.65.1.1 0.0.0.255

RouterC(config)#access-list 2 permit any

RouterC(config)#int s0/0

RouterC(config-if)#ip access-group 1 out

RouterC(config-if)#end

RouterC#sh access-list 1

這個訪問控制列表比上一個訪問控制列表有以下幾點不同:

⑴ 先deny後permit,

⑵ 禁止的是一個C類

⑶ 一個輸出的訪問控制

[root@PCA @root]#ping 10.69.1.1(不通)

[root@PCE @root]#ping 10.69.1.1(不通)

[root@PCF @root]#ping 10.69.1.1(通)

[root@PCB @root]#ping 10.69.1.1(通)

因為PCA和PCE的IP位址10.65.1.1、10.65.1.3,在deny範圍內,所以不通。

而PCF的IP是10.65.2.1不在10.65.1.0 0.0.0.255範圍內,所以能通。

梯形基本

訪問控制列表一般是順序匹配的,梯形結構,下面是一個參考:

RouterC(config)#access-list 4 permit 10.65.1.1

RouterC(config)#access-list 4 deny 10.65.1.0 0.0.0.255

RouterC(config)#access-list 4 permit 10.65.0.0 0.0.255.255

RouterC(config)#access-list 4 deny 10.0.0.0 0.255.255.255

RouterC(config)#access-list 4 permit any

RouterC(config)#int s0/1

RouterC(config-if)#ip access-group 4 out

[root@PCA @root]#ping 10.69.1.1(通)

[root@PCE @root]#ping 10.69.1.1(不通)

[root@PCF @root]#ping 10.69.1.1(通)

[root@PCB @root]#ping 10.69.1.1(不通)

標準格式

列表格式

---- 標準型IP訪問列表的格式如下:
---- access-list[list number][permit|deny][source address]
---- [address][wildcard mask][log]
---- 下面解釋一下標準型IP訪問列表的關鍵字和參數。首先,在access和list這2個關鍵字之間必須有一個連字元"-";其次,list number的範圍在0~99之間,這表明該access-list語句是一個普通的標準型IP訪問列表語句。因為對於Cisco IOS,在0~99之間的數字指示出該訪問列表和IP協定有關,所以list number參數具有雙重功能: (1)定義訪問列表的操作協定; (2)通知IOS在處理access-list語句時,把相同的list number參數作為同一實體對待。正如本文在後面所討論的,擴展型IP訪問列表也是通過list number(範圍是100~199之間的數字)而表現其特點的。因此,當運用訪問列表時,還需要補充如下重要的規則: 在需要創建訪問列表的時候,需要選擇適當的list number參數。

允許拒絕

---- 在標準型IP訪問列表中,使用permit語句可以使得和訪問列表項目匹配的數據包通過接口,而deny語句可以在接口過濾掉和訪問列表項目匹配的數據包。source address代表主機的IP位址,利用不同掩碼的組合可以指定主機。
---- 為了更好地了解IP位址和通配符掩碼的作用,這裡舉一個例子。假設您的公司有一個分支機構,其IP位址為C類的192.46.28.0。在您的公司,每個分支機構都需要通過總部的路由器訪問Internet。要實現這點,您就可以使用一個通配符掩碼 0.0.0.255。因為C類IP位址的最後一組數字代表主機,把它們都置1即允許總部訪問網路上的每一台主機。因此,您的標準型IP訪問列表中的access-list語句如下:
---- access-list 1 permit 192.46.28.0 0.0.0.255
---- 注意,通配符掩碼是子網掩碼的補充。因此,如果您是網路高手,您可以先確定子網掩碼,然後把它轉換成可套用的通配符掩碼。這裡,又可以補充一條訪問列表的規則5。

指定地址

---- 如果您想要指定一個特定的主機,可以增加一個通配符掩碼0.0.0.0。例如,為了讓來自IP位址為192.46.27.7的數據包通過,可以使用下列語句:
---- Access-list 1 permit 192.46.27.7 0.0.0.0
---- 在Cisco的訪問列表中,用戶除了使用上述的通配符掩碼0.0.0.0來指定特定的主機外,還可以使用"host"這一關鍵字。例如,為了讓來自IP位址為192.46.27.7的數據包可以通過,您可以使用下列語句:
---- Access-list 1 permit host 192.46.27.7
---- 除了可以利用關鍵字"host"來代表通配符掩碼0.0.0.0外,關鍵字"any"可以作為源地址的縮寫,並代表通配符掩碼0.0.0.0 255.255.255.255。例如,如果希望拒絕來自IP位址為192.46.27.8的站點的數據包,可以在訪問列表中增加以下語句:
---- Access-list 1 deny host 192.46.27.8
---- Access-list 1 permit any
---- 注意上述2條訪問列表語句的次序。第1條語句把來自源地址為192.46.27.8的數據包過濾掉,第2條語句則允許來自任何源地址的數據包通過訪問列表作用的接口。如果改變上述語句的次序,那么訪問列表將不能夠阻止來自源地址為192.46.27.8的數據包通過接口。因為訪問列表是按從上到下的次序執行語句的。這樣,如果第1條語句是:
---- Access-list 1 permit any
---- 的話,那么來自任何源地址的數據包都會通過接口。

拒絕列表

---- 在默認情況下,除非明確規定允許通過,訪問列表總是阻止或拒絕一切數據包的通過,即實際上在每個訪問列表的最後,都隱含有一條"deny any"的語句。假設我們使用了前面創建的標準IP訪問列表,從路由器的角度來看,這條語句的實際內容如下:
---- access-list 1 deny host 192.46.27.8
---- access-list 1 permit any
---- access-list 1 deny any
---- 在上述例子裡面,由於訪問列表中第2條語句明確允許任何數據包都通過,所以隱含的拒絕語句不起作用,但實際情況並不總是如此。例如,如果希望來自源地址為192.46.27.8和192.46.27.12的數據包通過路由器的接口,同時阻止其他一切數據包通過,則訪問列表的代碼如下:
---- access-list 1 permit host 192.46.27.8
---- access-list 1 permit host 192.46.27.12
---- 注意,所有的訪問列表會自動在最後包括deny any語句。
---- 順便討論一下標準型IP訪問列表的參數"log",它起日誌的作用。一旦訪問列表作用於某個接口,那么包括關鍵字"log"的語句將記錄那些滿足訪問列表中"permit"和"deny"條件的數據包。第一個通過接口並且和訪問列表語句匹配的數據包將立即產生一個日誌信息。後續的數據包根據記錄日誌的方式,或者在控制台上顯示日誌,或者在記憶體中記錄日誌。通過Cisco IOS的控制台命令可以選擇記錄日誌方式。

常見問題

(1) “ACL 的最後一條語句都是隱式拒絕語句” 是什麼意思?

每個 ACL 的末尾都會自動插入一條隱含的 deny 語句,雖然ACL中看不到這條語句,它仍其作用。隱含的 deny 語句會阻止所有流量,以防不受歡迎的流量意外進入網路。

(2) 配置ACL後為什麼沒有生效?

在創建訪問控制列表之後,必須將其套用到某個接口才可開始生效。ACL 控制的對象是進出接口的流量。

調用

不同的模組來調用, 將會起到不同的作用, 這也是ACL套用廣泛的根本原因。 常見的調用ACL的模組有: 1. 包過濾: ip access-group;

2. 網路地址轉換:NAT;

3. 策略路由: PBR;

4. ip 服務質量: QoS;

5. 動態路由過濾:RIP/OSPF等 。

最常用的是包過濾 ip access-group,配置命令是Router(config-if)# ip access-group acl-num { in | out } 當使用ACL進行報文過濾時,ACL被套用在接口特定的接口,同時關聯要部署的方向(In/Out)

匹配規則

一個連線埠執行哪條ACL,這需要按照列表中的條件語句執行順序來判斷。如果一個數據包的報頭跟表中某個條件判斷語句相匹配,那么後面的語句就將被忽略,不再進行檢查。數據包只有在跟第一個判斷條件不匹配時,它才被交給ACL 中的下一個條件判斷語句進行比較。如果匹配(假設為允許傳送),則不管是第 一條還是最後一條語句,數據都會立即傳送到目的接口。如果所有的ACL判斷語句都檢測完畢,仍沒有匹配的語句出口,則該數據包將視為被拒絕而被丟棄(隱含拒絕: deny any )。這裡要注意,ACL不能對本身產生的數據包進行控制。

相關詞條

相關搜尋

熱門詞條

聯絡我們