一、ACL概述
ACL (Access Control List,訪問控制列表)是一系列運用到路由器接口的指令列表。這些指令告訴路由器接收哪些數據包、拒絕哪些數據包,接收或者拒絕根據一定的規則進行,如源地址、目標地址、端口號等。ACL使得用戶能夠管理數據流,檢測特定的數據包。
路由器將根據ACL中指定的條件,對經過路由器端口的數據包進行檢査。ACL可以基於所有的Routed Protocols (被路由協議,如IP、IPX等)對經過路由器的數據包進行過濾。ACL在路由器的端口過濾數據流,決定是否轉發或者阻止數據包。ACL應該根據路由器的端口所允許的每個協議來制定,如果需要控制流經某個端口的所有數據流,就需要爲該端口允許的每一個協議分別創建ACL。例如,如果端口被配置爲允許IP、AppleTalk和IPX協議的數據流,那麼就需要創建至少3個ACL, 本文中僅討論IP的訪問控制列表。針對IP協議,在路由器的每一個端口,可以創建兩個ACL:—個用於過濾進入(inbound)端口的數據流,另一個用於過濾流出(outboimd)端口的數據流。
順序執行:—個ACL列表中可以包含多個ACL指令,ACL指令的放置順序很重要。當路由器在決定是否轉發或者阻止數據包的時候,Cisco的IOS軟件,按照ACL中指令的順序依次檢査數據包是否滿足某一個指令條件。當檢測到某個指令條件滿足的時候,就執行該指令規定的動作,並且不會再檢測後面的指令條件。
ACL作用:
* 限制網絡流量,提高網絡性能。
* 提供數據流控制。
* 爲網絡訪問提供基本的安全層。
二、ACL 類型
- 標準ACL: access-list-number編號1~99之間的整數,只針對源地址進行過濾。
- 擴展ACL: access-list-number編號100~199之間的整數,可以同時使用源地址和目標地址作爲過濾條件,還可以針對不同的協議、協議的特徵、端口號、時間範圍等過濾。可以更加細微的控制通信量。
- 動態ACL
- 自反ACL
- 基於時間的ACL
三、標準ACL
3.1 通配符掩碼
使用通配符掩碼與源或目標地址一起分辨匹配的地址範圍。
掩碼位匹配含義:設置爲“1”表示忽略IP地址中對應位(IP取0或1都可以匹配);設置爲“0”表示IP地址中對應位必須精確匹配。
例如:(1)192.168.1.0 0.0.0.255 匹配的是192.168.1.0~192.168.1.255
(2)192.168.1.0 0.0.0.254 匹配192.168.1.0網段中所有偶數IP
(3)192.168.1.1 0.0.0.254 匹配192.168.1.0網段中所有奇數IP
any關鍵字: 代替地址掩碼對0.0.0.0 255.255.255.255,匹配任何IP
host關鍵字: 代替通配符掩碼0.0.0.0,精確匹配某個IP。例如:要實現匹配IP地址192.168.1.2,則可以寫成192.168.1.2 0.0.0.0或者寫成host 192.168.1.2。(注:標準ACL中沒有通配符掩碼默認該掩碼爲 0.0.0.0,host也可以省略;擴展ACL中通配符 0.0.0.0或 host關鍵字不可以省略)
3.2 配置標準ACL的方法
3.2.1 配置步驟
配置標準ACL需要兩步,一是創建訪問控制列表,二是將列表綁定到特定端口。
Step 1 創建ACL
全局模式下配置ACL。
創建標準ACL的基本格式: access-list access-list-number { deny | permit } { 源地址 [ 源地址通配符掩碼 ] | any } [ log ]
其中,access-list-number是1~99的ACL編號;deny拒絕,permit允許;log是日誌選項,匹配的條目信息顯示在控制檯上,也可以輸出到日誌服務器。
例如:在某路由器R3上創建一組ACL配置如下:
R3 (config) #access-list 1 deny 12.1.1.1 拒絕R1的IP地址12.1.1.1,通配符掩碼 0.0.0.0 可以省略。
R3 (config) #access-list 1 permit any 允許其餘所有IP
注意:訪問控制列表最後隱含一條deny any 規則;ACL從上往下匹配,規則順序不能改變。
Step 2 應用ACL
創建好列表後,要將ACL綁定到每個它想應用的接口才能實現訪問控制功能。
例如:將上述列表應用到R3的S1/0接口,配置爲:
R3 (config) #interface s1/0
R3 (config-if) #ip access-group 1 in 在接口下調用ACL 1,針對的是從s1/0接口進入路由器R3的流量
3.2.2 編輯修改標準ACL
1)刪除ACL
刪除編號即可刪除ACL。
命令格式:R3 (config) #no access-list 1
2)取消ACL在接口的應用
命令格式:R3 (config) #int s1/0
R3 (config-if) #no ip access-group 1 in
3)編輯ACL
標準ACL不支持插入或刪除一行操作,可以將現有ACL拷貝到記事本里修改,然後粘貼到路由器的命令行中。
4)查看ACL
命令格式:R3#show access-lists
R3#show access-lists 1
3.3 配置標準命名ACL的方法
標準命名ACL指使用字符串代替數字來標識ACL。其優點包括:
- 可以在不刪除整個ACL情況下修改。
- 字符串直觀標識ACL用途。
- 可以配置超過99個標準ACL。
注意:命名不能相同。
創建標準命名ACL格式:Router (config)# ip access-list standard access-list name
例如:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#deny 12.1.1.1
R3 (config-std-nac1)#permit any
R3 (config-std-nac1)#exit
R3 (config)#int s1/0
R3 (config-if)#ip access-group deny-R1 in
可局部修改:
1)刪除某一句:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#no deny 12.1.1.1
2)使用行號刪除某一句:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#no 20 刪除第20行內容
3)刪除整個ACL:
R3 (config)#no ip access-list standard deny-R1
3.4 標準ACL放置的位置
- ACL僅對穿越路由器的數據包進行過濾,對本路由器起源的數據包不做過濾(詳細案例見《CCNA學習與實驗指南》崔北亮著,訪問控制列表一章)
- 儘量應用在靠近目標端。
四、擴展ACL
4.1 配置擴展ACL
Step 1 創建擴展ACL
基本格式:access-list access-list-number {deny | permit | remark} 協議類型 source [source-wildcard] [operator operand] [port port-number or name] destination destination-wildcard [operator operand] [port port-number or name] [established]
實例:配置實現拒絕R1去往R3的Telent通信,允許其他服務。
R2 (config) # access-list 100 deny tcp host 12.1.1.1 host 23.1.1.3 eq Telent
R2 (config) # access-list 100 permit ip any any
解釋:Telent流量使用的是TCP協議,目標端口23
因此此處拒絕TCP協議,源地址是R1,源端口任意;目標地址R3,目標端口23(配置語句中Telent表示23)。
Step 2 應用ACL
將列表應用於R2的S1/0接口,當數據包進入R2的時候判斷,配置爲:
R2 (config) # int s1/0
R2 (config) # ip access-group 100 in
4.2 配置擴展命名ACL
類似於標準命名ACL:
ip access-list extended tcp-firewall
4.3 擴展ACL放置的位置
儘量應用在靠近源端,這樣可以使一些非法流量儘早丟棄,節省中間設備帶寬和CPU資源。
五、反射ACL
5.1 概念
提供真正意義上的單向訪問控制。
5.2 應用
六、動態ACL
可以根據用戶驗證過程創建特定的臨時的ACL。