ACL概述
- 訪問控制列表ACL(Access Control List)是由一系列permit或deny語句組成的、有序規則的列表,它通過匹配報文的相關信息實現對報文的分類;
- ACL本身只能夠用於報文的匹配和區分,而無法實現對報文的過濾功能,針對ACL所匹配的報文的過濾功能,需要特定的機制來實現(例如在交換機的接口上使用traffic-filter命令調用ACL來進行報文過濾),ACL只是一個匹配用的工具;
- ACL除了能夠對報文進行匹配,還能夠用於匹配路由;
- ACL是一個使用非常廣泛的基礎性工具,能夠被各種應用或命令所調用。
一、ACL技術背景
二、ACL的應用
- 匹配IP流量(可基於源、目IP地址、協議類型、端口號等元素)
- 在Traffic-filter中被調用
- 在NAT中被調用
- 在路由路由策略中被調用
- 在IPSec VPN中被調用
- 在防火牆的策略部署中被調用
- 在QoS中被調用
- 其他……
三、ACL包過濾原理
1)基於ACL的包過濾技術
- 對進出的數據包逐個過濾,丟棄或允許通過
- ACL應用於接口上,每個接口的出入雙向分別過濾
- 僅當數據包經過一個接口時,才能被此接口的此方向的ACL過濾
2)入站包過濾工作流程
3)出站包過濾工作流程
四、通配符掩碼
1)概述
- 通配符掩碼(wildcard-mask)俗稱 反掩碼
- 通配符掩碼和IP地址結合使用,以描述一個地址范圍
- 通配符掩碼和子網掩碼相似,但含義不同
- 0表示對應位須比較
- 1表示對應位不比較
2)特殊的通配符掩碼
192.168.1.1 0.0.0.0 = 192.168.1.1 0
精確匹配192.168.1.1這個IP
0.0.0.0 255.255.255.255 = any
匹配所有IP
3)應用示例
示例:匹配192.168.1.0/24這個子網中最后一個8位組為基數的IP地址,例如192.168.1.1、192.168.1.3、192.168.1.5等。
五、ACL分類
1)ACL的標識
- 可以給訪問控制列表指定名稱,便於維護
- 利用數字序號標識訪問控制列表
2)基本ACL
- 基本訪問控制列表只根據報文的源IP地址信息制定規則
3)高級ACL
- 高級訪問控制列表根據報文的源IP地址、目的IP地址、IP承載的協議類型、協議特性等三、四層信息制定規則
4)二層ACL
- 二層ACL根據報文的源MAC地址、目的MAC地址、802.1p優先級、二層協議類型等二層信息制定匹配規則
5)ACL的步長
- ACL 中的每條規則都有自己的編號,這個編號在該ACL中是唯一的。在創建規則時,可以手工為其指定一個編號,如未手工指定編號,則由系統為其自動分配一個編號。
- 由於規則的編號可能影響規則匹配的順序,因此當由系統自動分配編號時,為了方便后續在已有規則之前插入新的規則,系統通常會在相鄰編號之間留下一定的空間,這個空間的大小(即相鄰編號之間的差值)就稱為ACL的步長。
- 譬如,當步長為5 時,系統會將編號0、5、10、15……依次分配給新創建的規則。
六、配置ACL包過濾
1)ACL包過濾配置任務
- 根據需要選擇合適的ACL分類
- 創建正確的規則
- 設置匹配條件
- 設置合適的動作(Permit/Deny)
- 在路由器的接口上應用ACL,並指明過濾報文的方向(入站/出站)
2)設置包過濾規則
- 包過濾功能默認開啟
- 設置包過濾的默認過濾方式
- 系統默認的過濾方式是permit,即允許未匹配上ACL規則的報文通過
- 可以配置包過濾的缺省動作為deny
[H3C] packet-filter default deny
3)配置基本ACL
- 配置基本ACL,並指定ACL序號
- 基本IPv4 ACL的序號取值范圍為2000~2999
[H3C] acl basic acl-number
- 定義規則
- 制定要匹配的源IP地址范圍
- 指定動作是permit或deny
[H3C-acl-basic-2000] rule [ rule-id ]{ deny | permit } [ counting | fragment | logging | source{ sour-addrsour-wildcard| any }|time-range time-range-name]
4)配置高級ACL
- 配置高級IPv4 ACL,並指定ACL序號
- 高級IPv4 ACL的序號取值范圍為3000~3999
[H3C] acl advanced acl-number
- 定義規則
- 需要配置規則來匹配源IP地址、目的IP地址、IP承載的協議類型、協議端口號等信息
- 指定動作是permit或deny
[H3C-acl-adv-3000]rule [ rule-id ] { deny | permit } protocol [ destination { dest-addr dest-wildcard| any } | destination-port operator port1[ port2 ] established | fragment | source { sour-addr sour-wildcard | any } | source-port operator port1[ port2 ] |time-range time-range-name ]
5)配置二層ACL
- 配置二層ACL,並指定ACL序號
- 二層ACL的序號取值范圍為4000~4999
[H3C] acl mac acl-number
- 定義規則
- 需要配置規則來匹配源MAC地址、目的MAC地址、802.1p優先級、二層協議類型等二層信息
- 指定動作是permit或拒絕deny
[H3C-acl-ethernetframe-4000]rule [ rule-id ] { deny| permit } [ cos vlan-pri | dest-mac dest-addr dest-mask| lsap lsap-type lsap-type-mask | source-mac sour-addr source-mask| time-range time-range-name]
6)在接口上應用ACL
- 將ACL應用到接口上,配置的ACL包過濾才能生效
- 指明在接口上應用的方向是Outbound(數據離開路由器的方向)還是Inbound(數據進入路由器的方向)
[H3C-Serial2/0 ] packet-filter { acl-number |name acl-name } { inbound| outbound}
7)ACL包過濾顯示與調試
七、ACL包過濾的注意事項
1)ACL規則的匹配順序
- 匹配順序指ACL中規則的優先級
- ACL支持兩種匹配順序:
- 配置順序(config):按照用戶配置規則的先后順序進行規則匹配
-
- 自動排序(auto):按照“深度優先”的順序進行規則匹配,即地址范圍小的規則被優先進行匹配
- 配置ACL的匹配順序:
[H3C] acl number acl-number[match-order {auto | config}]
2)不同匹配順序導致結果不同
3)在網絡中的正確位置配置ACL包過濾
- 盡可能在靠近數據源的路由器接口上配置ACL,以減少不必要的流量轉發
- 高級ACL
- 應該在靠近被過濾源的接口上應用ACL,以盡早阻止不必要的流量進入網絡
- 基本ACL
- 過於靠近被過濾源的基本ACL可能阻止該源訪問合法目的
- 應在不影響其他合法訪問的前提下,盡可能使ACL靠近被過濾的源
4)ACL部署位置示例
- 基本ACL部署位置示例
- 高級ACL部署位置示例
5)ACL包過濾的局限性
- ACL包過濾是根據數據包頭中的二、三、四層信息來進行報文過濾的,對應用層的信息無法識別
- 無法根據用戶名來決定數據是否通過
- 無法給不同的用戶授予不同的權限級別
- ACL包過濾防火牆是靜態防火牆,無法對應用層的協議進行動態檢測