一、ACL功能簡介
随着網絡規模的擴大和流量的增加,對網絡安全的控制和對帶寬的配置設定成為網絡管理的重要内容。通過對資料包進行過濾,可以有效防止非法使用者對網絡的通路,同時也可以控制流量,節約網絡資源。ACL(Access Control List,通路控制清單)即是通過配置對封包的比對規則和處理操作來實作包過濾的功能。
二、ACL種類
1. 基本ACL:隻根據資料包的源IP位址制定規則,序号為2000~2999,定義時間段也屬于基本ACL。
2. 進階ACL:進階ACL可以使用資料包的源IP位址、目的IP位址、IP承載的協定類型、針對協定的特性(例如TCP或UDP的源端口、目的端口,ICMP協定的消息類型、消息碼等)内容定義規則。進階ACL序号取值範圍3000~3999(3998與3999是系統為叢集管理預留的編号,使用者無法配置)。進階ACL支援對三種封包優先級的分析處理:ToS(Type of Service,服務類型)優先級、IP優先級和DSCP(Differentiated Services CodePoint,差分服務編碼點)優先級。
3. 二層ACL:根據資料包的源MAC位址、目的MAC位址、802.1p優先級、二層協定類型等二層資訊制定規則。使用者可以利用進階ACL定義比基本ACL更準确、更豐富、更靈活的規則。二層ACL的序号取值範圍為4000~4999。
4. 使用者自定義ACL:以資料包的頭部為基準,指定從第幾個位元組開始與掩碼進行“與”操作,将從封包提取出來的字元串和使用者定義的字元串進行比較,找到比對的封包。
三、ACL比對順序
一條ACL可以包含多個規則,是以會出現規則比對順序,其支援兩種比對順序:一種是配置順序(根據使用者配置規則的先後順序進行規則比對,一種是自動排序(根據深度優先的順序進行規則比對)
1. 基本ACL的“深度優先”順序判斷原則
(1) 先比較源IP位址範圍,源IP位址範圍小(反掩碼中“0”位的數量多)的規則優先;
(2) 如果源IP位址範圍相同,則比較是否帶有fragment參數,帶有fragment參數的規則優先;
(3) 如果源IP位址範圍、是否帶有fragment參數這兩個判斷條件也相同,則先配置的規則優先。
2. 進階ACL的“深度優先”順序判斷原則
(1) 首先比較協定範圍,指定了IP協定承載的協定類型的規則優先;
(2) 如果協定範圍相同,則比較源IP位址範圍,源IP位址範圍小(反掩碼中“0”位的數量多)的規則優先;
(3)如果協定範圍、源IP位址範圍相同,則比較目的IP位址範圍,目的IP位址範圍小(反掩碼中“0”位的數量多)的規則優先;
(4) 如果協定範圍、源IP位址範圍、目的IP位址範圍相同,則比較四層端口号(TCP/UDP端口号)範圍,四層端口号範圍小的規則優先;
(5)如果協定範圍、源IP位址範圍、目的IP位址範圍、四層端口号範圍相同,則比較規則中參數的個數,參數個數多的規則優先。
如果規則A與規則B的協定範圍、源IP位址範圍、目的IP位址範圍、四層端口号範圍完全相同,并且其它的參數個數也相同,将按照權重規則進行排序。裝置為每個參數設定一個固定的權值,最終的比對順序由各個參數的權值和參數的取值來決定。各個參數自身的權值從大到小排列為icmp-type、established、dscp、tos、precedence、fragment。比較規則如下: z 裝置以一個固定權值依次減去規則中所配置的各個參數自身的權值,所得結果小的規則優先; z 如果各個規則中參數種類完全相同,則這些參數取值的累加和小的規則優先。
五、ACL在交換機(路由器)上的應用方式
1. ACL直接下發到硬體的情況
ACL可以直接下發到交換機(路由器)的硬體,用于資料轉發過程中的封包過濾和流分類。此時一條ACL中多個規則的比對順序是由交換機的硬體決定的,對于S3100系列以太網交換機,比對順序為先下發的規則先比對。 ACL直接下發到硬體的情況包括:通過ACL過濾轉發資料、配置QoS功能時引用ACL等。
2. ACL被上層軟體引用的情況
ACL也可以用來對由軟體處理的封包進行過濾和流分類。此時ACL規則的比對順序有兩種:1)config:按使用者配置的先後順序;2)auto:按“深度優先”的順序。
使用者可以在定義ACL的時候指定一條ACL中多個規則的比對順序。使用者一旦指定某一條ACL的比對順序,就不能再更改該順序。隻有把該ACL中所有的規則全部删除後,才能重新指定其比對順序。 ACL被上層軟體引用的情況包括:路由政策引用ACL、對Telnet、SNMP和WEB登入使用者進行控制時引用ACL等。
六、ACL配置
1. 配置時間段
ACL時間段配置屬于基本ACL,其配置步驟如表
配置步驟 指令 說明
進入系統視圖 system-view
建立一個時間段 time-range time-name { start-time to end-time
days-of-the-week from start-time start-date ]
[ to end-time end-date ] | from start-time start-date
[ to end-time end-date ] | to end-time end-date } []中為可選項,可不填
舉例
(1)配置周期時間段,時間為周一到周五每天8:00到18:00
<Sysname> system-view
[Sysname] time-range test 8:00 to 18:00 working-day
(2)配置絕對時間段,時間為2017年1月28日15:00到2018年1月28日15:00
<Sysname> system-view
[Sysname] time-range test from 15:001/28/2017 to 15:00 1/28/2018
(3)檢視配置情況
[Sysname] display time-range test
2. 配置基本ACL
(1)配置步驟
配置步驟 指令 說明
進入系統視圖 system-view
建立并進入基本ACL視圖 acl number acl-number [match-order] {auto |config} 預設為config
定義基本ACL規則 rule [rule-id] {deny | permit} [rule-string]
定義ACL的描述資訊 description text
(2)配置舉例
配置ACL2000,禁止源192.168.0.1的封包通過
<Sysname> system-view
[Sysname] acl number 2000
[Sysname-acl-basic-2000] rule deny source 192.168.0.1 0
顯示配置
[sysname] display acl 2000
3. 配置進階ACL
配置步驟 指令 說明
進入系統視圖 system-view
建立并進入進階ACL視圖 acl number acl-number [match-order {auto |config}]
定義進階ACL規則 rule [rule-id] {permit |deny} protocol [rule-string]
定義進階ACL規則的注釋資訊 rule rule-id comment text 可選,預設情況沒有注釋
定義ACL描述資訊 description text
舉例
<Sysname> system-view
[Sysname] acl number 3000
[Sysname-acl-adv-3000] rule permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq 80
3. 配置二層ACL
配置步驟同進階ACL配置,但要首先确定源MAC位址、目的MAC位址、802.1p優先級、二層協定類型等參數
舉例:
<Sysname> system-view
[Sysname] acl number 4000
[Sysname-acl-ethernetframe-4000] rule deny cos 3 source 000d-88f5-97ed ffff-ffff-ffff dest 0011-4301-991e ffff-ffff-ffff
需要注意的是:1)當進階ACL的比對順序為config時,使用者可以修改該ACL中的任何一條已經存在的規則,在修改ACL中的某條規則時,該規則中沒有修改到的部分仍舊保持原來的狀态;當進階ACL的比對順序為auto時,使用者不能修改該ACL中的任何一條已經存在的規則,否則系統會提示錯誤資訊。 2)在建立一條ACL規則的時候,使用者可以不指定規則的編号,裝置将自動為這個規則配置設定一個編号:如果此ACL中沒有規則,編号為0;如果此ACL中已有規則,編号為現有規則的最大編号+1;如果此ACL中現有規則的最大編号為65534,則系統會提示錯誤資訊,此時使用者必須指定規則的編号才能建立成功。3) 新建立或修改後的規則不能和已經存在的規則相同,否則會導緻建立或修改不成功,系統會提示該規則已經存在。 4) 當進階ACL的比對順序為auto時,新建立的規則将按照“深度優先”的原則插入到已有的規則中,但是所有規則對應的編号不會改變。
七、ACL下發
ACL規則生效需要對規則進行下發,硬體下發方式有四種方式。
1)全局下發ACL:對所有端口接收的封包應用ACL規則進行過濾。
2)VLAN下發ACL:對所有端口接收的屬于指定VLAN的封包應用ACL規則進行過濾。
3)端口組下發ACL:對端口組内所有端口接收的封包應用ACL規則進行過濾。
4)端口下發ACL:對端口接收的封包應用ACL規則進行過濾。
1. 全局下發ACL
配置步驟 指令 說明
進入系統視圖 system-view
全局下發ACL packet-filter inbound acl-rule
舉例:
在全局下發ACL,對所有端口接受的封包應用基本ACL2000進行過濾
<Sysname>system-view
[Sysname] packet-filter inbound ip-group 2000
2. VLAN下發ACL
配置步驟 指令 說明
進入系統視圖 system-view
全局下發ACL packet-filter vlan vlan-id inbound acl-rule
舉例:
在全局下發ACL,對所有端口接受的封包應用基本ACL2000進行過濾
<Sysname>system-view
[Sysname] packet-filter vlan 10 inbound ip-group 2000
3. 端口組下發ACL
配置步驟 指令 說明
進入系統視圖 system-view
進入端口組視圖 port-group group-id
端口組下發ACL packet-filter inbound acl-rule
舉例:
在全局下發ACL,對所有端口接受的封包應用基本ACL2000進行過濾
<Sysname>system-view
[Sysname]port-group 1
[Sysname-port-group-1] packet-filter inbound ip-group 2000
4. 端口下發ACL
配置步驟 指令 說明
進入系統視圖 system-view
進入端口組視圖 interface interface-type interface-number
端口組下發ACL packet-filter inbound acl-rule
舉例:
在全局下發ACL,對所有端口接受的封包應用基本ACL2000進行過濾
<Sysname>system-view
[Sysname] interface e 0/0/1
[Sysname-Ethernet0/0/1] packet-filter inbound ip-group 2000
5. ACL被上層軟體引用
(1)Telnet登入使用者控制
在VTY使用者界面引用基本ACL 2000,對Telnet登入使用者進行控制。
[Sysname] user-interface vty 0 4
[Sysname-ui-vty0-4] acl 2000 inbound
(2)通過源IP對WEB登入控制
通過源IP位址對WEB登入使用者進行控制,僅允許IP位址為10.110.100.46的WEB使用者通過HTTP方式通路交換機。EB登入使用者進行控制配置
<Sysname> system-view
[Sysname] acl number 2001 match-order config
[Sysname-acl-basic-2001] rule 1 permit source 10.110.100.46 0
[Sysname-acl-basic-2001] quit
[Sysname] ip http acl 2000
進階ACL:根據資料包的源IP位址、目的IP位址、IP承載的協定類型、協定特性等三、四層資訊制定規則。
配置步驟 指令 說明
進入系統視圖 system-view
進入端口組視圖 port-group group-id
端口組下發ACL packet-filter inbound acl-rule
