01-ACL配置
本章節下載: 01-ACL配置 (263.30 KB)
ACL(Access Control List,訪問控製列表)是一或多條規則的集合,用於識別報文流。這裏的規則是指描述報文匹配條件的判斷語句,匹配條件可以是報文的源地址、目的地址、端口號等。網絡設備依照這些規則識別出特定的報文,並根據預先設定的策略對其進行處理。
ACL可以應用在諸多領域,其中最基本的就是應用ACL進行報文過濾,具體配置過程請參見“1.3.5 應用ACL進行報文過濾”。此外,ACL還可應用於諸如路由、安全、QoS等業務中,有關ACL在這些業務中的具體應用方式,請參見相關的配置指導。
ACL本身隻能識別報文,而無法對識別出的報文進行處理,對這些報文的具體處理方式由應用ACL的業務模塊來決定。
用戶在創建ACL時必須為其指定編號或名稱,不同的編號對應不同類型的ACL,如表1-1所示;當ACL創建完成後,用戶就可以通過指定編號或名稱的方式來應用和編輯該ACL。
應用於IPv4的基本ACL和高級ACL可以與應用於IPv6的基本ACL和高級ACL存在相同的編號或名稱。在其它情況下,ACL的編號和名稱全局唯一。
根據規則製訂依據的不同,可以將ACL分為如表1-1所示的幾種類型。
表1-1 ACL的分類
ACL類型 |
編號範圍 |
適用的IP版本 |
規則製訂依據 |
基本ACL |
2000~2999 |
IPv4 |
報文的源IPv4地址 |
IPv6 |
報文的源IPv6地址 |
||
高級ACL |
3000~3999 |
IPv4 |
報文的源IPv4地址、目的IPv4地址、報文優先級、IPv4承載的協議類型及特性等三、四層信息 |
IPv6 |
報文的源IPv6地址、目的IPv6地址、報文優先級、IPv6承載的協議類型及特性等三、四層信息 |
||
二層ACL |
4000~4999 |
IPv4和IPv6 |
報文的源MAC地址、目的MAC地址、802.1p優先級、鏈路層協議類型等二層信息 |
當一個ACL中包含多條規則時,報文會按照一定的順序與這些規則進行匹配,一旦匹配上某條規則便結束匹配過程。ACL的規則匹配順序有以下兩種:
· 配置順序:按照規則編號由小到大進行匹配。
· 自動排序:按照“深度優先”原則由深到淺進行匹配,各類型ACL的“深度優先”排序法則如表1-2所示。
表1-2 各類型ACL的“深度優先”排序法則
ACL類型 |
“深度優先”排序法則 |
IPv4基本ACL |
(1) 先比較源IPv4地址範圍,較小者優先 1. 如果源IPv4地址範圍相同,再比較配置的先後次序,先配置者優先 |
IPv4高級ACL |
(1) 先比較協議範圍,指定有IPv4承載的協議類型者優先 2. 如果協議範圍相同,再比較源IPv4地址範圍,較小者優先 3. 如果源IPv4地址範圍也相同,再比較目的IPv4地址範圍,較小者優先 4. 如果目的IPv4地址範圍也相同,再比較四層端口(即TCP/UDP端口)號的覆蓋範圍,較小者優先 5. 如果四層端口號的覆蓋範圍無法比較,再比較配置的先後次序,先配置者優先 |
IPv6基本ACL |
(1) 先比較源IPv6地址範圍,較小者優先 6. 如果源IPv6地址範圍相同,再比較配置的先後次序,先配置者優先 |
IPv6高級ACL |
(1) 先比較協議範圍,指定有IPv6承載的協議類型者優先 7. 如果協議範圍相同,再比較源IPv6地址範圍,較小者優先 8. 如果源IPv6地址範圍也相同,再比較目的IPv6地址範圍,較小者優先 9. 如果目的IPv6地址範圍也相同,再比較四層端口(即TCP/UDP端口)號的覆蓋範圍,較小者優先 10. 如果四層端口號的覆蓋範圍無法比較,再比較配置的先後次序,先配置者優先 |
二層ACL |
(1) 先比較源MAC地址範圍,較小者優先 11. 如果源MAC地址範圍相同,再比較目的MAC地址範圍,較小者優先 12. 如果目的MAC地址範圍也相同,再比較配置的先後次序,先配置者優先 |
· 比較IPv4地址範圍的大小,就是比較IPv4地址通配符掩碼中“0”位的多少:“0”位越多,範圍越小。通配符掩碼(又稱反向掩碼)以點分十進製表示,並以二進製的“0”表示“匹配”,“1”表示“不關心”,這與子網掩碼恰好相反,譬如子網掩碼255.255.255.0對應的通配符掩碼就是0.0.0.255。此外,通配符掩碼中的“0”或“1”可以是不連續的,這樣可以更加靈活地進行匹配,譬如0.255.0.255就是一個合法的通配符掩碼。
· 比較IPv6地址範圍的大小,就是比較IPv6地址前綴的長短:前綴越長,範圍越小。
· 比較MAC地址範圍的大小,就是比較MAC地址掩碼中“1”位的多少:“1”位越多,範圍越小。
ACL中的每條規則都有自己的編號,這個編號在該ACL中是唯一的。在創建規則時,可以手工為其指定一個編號,如未手工指定編號,則由係統為其自動分配一個編號。由於規則的編號可能影響規則匹配的順序,因此當由係統自動分配編號時,為了方便後續在已有規則之前插入新的規則,係統通常會在相鄰編號之間留下一定的空間,這個空間的大小(即相鄰編號之間的差值)就稱為ACL的步長。譬如,當步長為5時,係統會將編號0、5、10、15……依次分配給新創建的規則。
係統為規則自動分配編號的方式如下:係統從0開始,按照步長自動分配一個大於現有最大編號的最小編號。譬如原有編號為0、5、9、10和12的五條規則,步長為5,此時如果創建一條規則且不指定編號,那麼係統將自動為其分配編號15。
如果步長發生了改變,ACL內原有全部規則的編號都將自動從0開始按新步長重新排列。譬如,某ACL內原有編號為0、5、9、10和15的五條規則,當修改步長為2之後,這些規則的編號將依次變為0、2、4、6和8。
傳統報文過濾隻對分片報文的首個分片進行匹配過濾,對後續分片一律放行,因此網絡攻擊者通常會構造後續分片進行流量攻擊。為提高網絡安全性,ACL規則缺省會匹配所有非分片報文和分片報文的全部分片,但這樣又帶來效率低下的問題。為了兼顧網絡安全和匹配效率,可將過濾規則配置為僅對後續分片有效。
表1-3 ACL配置任務簡介
配置任務 |
說明 |
詳細配置 |
配置基本ACL |
請根據需要匹配的報文特征選擇ACL類型 |
|
配置高級ACL |
||
配置二層ACL |
||
複製ACL |
可選 |
|
應用ACL進行報文過濾 |
可選 |
如果ACL規則的匹配項中包含了除IP五元組(源IP地址、源端口號、目的IP地址、目的端口號、傳輸層協議)、ICMP報文的消息類型和消息碼信息、日誌操作和時間段之外的其它匹配項,則設備轉發ACL匹配的這類報文時會啟用慢轉發流程。慢轉發時設備會將報文上送控製平麵,計算報文相應的表項信息。執行慢轉發流程時,設備的轉發能力將會有所降低。
IPv4基本ACL根據報文的源IP地址來製訂規則,對IPv4報文進行匹配。
表1-4 配置IPv4基本ACL
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建IPv4基本ACL,並進入IPv4基本ACL視圖 |
acl basic { acl-number | name acl-name } [ match-order { auto | config } ] |
缺省情況下,不存在ACL IPv4基本ACL的編號範圍為2000~2999 如果以名稱創建IPv4基本ACL,隻能使用acl basic name acl-name命令進入其視圖 如果以編號創建IPv4基本ACL,隻能使用 acl basic acl-number命令進入其視圖 兩個視圖獨立,隻能通過各自的命令訪問各自的視圖 |
(可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有描述信息 |
(可選)配置規則編號的步長 |
step step-value [ start start-value ] |
缺省情況下,規則編號的步長為5,起始值為0 |
創建規則 |
rule [ rule-id ] { deny | permit } [ counting | fragment | logging | source { source-address source-wildcard | any } | time-range time-range-name ] * |
缺省情況下,IPv4基本ACL內不存在規則 logging參數需要使用該ACL的模塊支持日誌記錄功能,例如報文過濾 |
(可選)為規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有描述信息 |
IPv6基本ACL根據報文的源IPv6地址來製訂規則,對IPv6報文進行匹配。
表1-5 配置IPv6基本ACL
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建IPv6基本ACL,並進入IPv6基本ACL視圖 |
acl ipv6 basic { acl-number | name acl-name } [ match-order { auto | config } ] |
缺省情況下,不存在ACL IPv6基本ACL的編號範圍為2000~2999 如果以名稱創建IPv6基本ACL,隻能使用acl ipv6 basic name acl-name命令進入其視圖 如果以編號創建IPv6基本ACL,隻能使用 acl ipv6 basic acl-number命令進入其視圖 兩個視圖獨立,隻能通過各自的命令訪問各自的視圖 |
(可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有描述信息 |
(可選)配置規則編號的步長 |
step step-value [ start start-value ] |
缺省情況下,規則編號的步長為5,起始值為0 |
創建規則 |
rule [ rule-id ] { deny | permit } [ counting | fragment | logging | routing [ type routing-type ] | source { source-address source-prefix | source-address/source-prefix | any } | time-range time-range-name ] * |
缺省情況下,IPv6基本ACL內不存在規則 logging參數需要使用該ACL的模塊支持日誌記錄功能,例如報文過濾 |
(可選)為規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有描述信息 |
IPv4高級ACL可根據報文的源IP地址、目的IP地址、報文優先級、IP承載的協議類型及特性(如TCP/UDP的源端口和目的端口、TCP報文標識、ICMP協議的消息類型和消息碼等)等信息來製定規則,對IPv4報文進行匹配。用戶可利用IPv4高級ACL製訂比IPv4基本ACL更準確、豐富、靈活的規則。
表1-6 配置IPv4高級ACL
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建IPv4高級ACL,並進入IPv4高級ACL視圖 |
acl advanced { acl-number | name acl-name } [ match-order { auto | config } ] |
缺省情況下,不存在ACL IPv4高級ACL的編號範圍為3000~3999 如果以名稱創建IPv4高級ACL,隻能使用acl advanced name acl-name命令進入其視圖 如果以編號創建IPv4高級ACL,隻能使用acl advanced acl-number命令進入其視圖 兩個視圖獨立,隻能通過各自的命令訪問各自的視圖 |
(可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有描述信息 |
(可選)配置規則編號的步長 |
step step-value [ start start-value ] |
缺省情況下,規則編號的步長為5,起始值為0 |
創建規則 |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest-address dest-wildcard | any } | destination-port operator port1 [ port2 ] | { dscp dscp | { precedence precedence | tos tos } * } | fragment | icmp-type { icmp-type [ icmp-code ] | icmp-message } | logging | source { source-address source-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-range-name ] * |
缺省情況下,IPv4高級ACL內不存在規則 logging參數需要使用該ACL的模塊支持日誌記錄功能,例如報文過濾 |
(可選)為規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有描述信息 |
IPv6高級ACL可根據報文的源IPv6地址、目的IPv6地址、報文優先級、QoS本地ID、IPv6承載的協議類型及特性(如TCP/UDP的源端口和目的端口、TCP報文標識、ICMPv6協議的消息類型和消息碼等)等信息來製定規則,對IPv6報文進行匹配。用戶可利用IPv6高級ACL製訂比IPv6基本ACL更準確、豐富、靈活的規則。
表1-7 配置IPv6高級ACL
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建IPv6高級ACL,並進入IPv6高級ACL視圖 |
acl ipv6 advanced { acl-number | name acl-name } [ match-order { auto | config } ] |
缺省情況下,不存在ACL IPv6高級ACL的編號範圍3000~3999 如果以名稱創建IPv6 高級ACL,隻能使用acl ipv6 advanced name acl-name命令進入其視圖 如果以編號創建IPv6高級ACL,隻能使用 acl ipv6 advanced acl-number命令進入其視圖 兩個視圖獨立,隻能通過各自的命令訪問各自的視圖 |
(可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有描述信息 |
(可選)配置規則編號的步長 |
step step-value [ start start-value ] |
缺省情況下,規則編號的步長為5,起始值為0 |
創建規則 |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest-address dest-prefix | dest-address/dest-prefix | any } | destination-port operator port1 [ port2 ] | dscp dscp | flow-label flow-label-value | fragment | icmp6-type { icmp6-type icmp6-code | icmp6-message } | logging | routing [ type routing-type ] | hop-by-hop [ type hop-type ] | source { source-address source-prefix | source-address/source-prefix | any } | source-port | time-range time-range-name ] * |
缺省情況下,IPv6高級ACL內不存在規則 logging參數需要使用該ACL的模塊支持日誌記錄功能,例如報文過濾 |
(可選)為規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有描述信息 |
二層ACL可根據報文的源MAC地址、目的MAC地址、802.1p優先級、鏈路層協議類型、報文的封裝類型、報文的內層源MAC地址、內層目的MAC地址、內層鏈路層協議類型等二層信息來製訂規則,對報文進行匹配。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建二層ACL,並進入二層ACL視圖 |
acl mac { acl-number | name acl-name } [ match-order { auto | config } ] |
缺省情況下,不存在ACL 二層ACL的編號範圍為4000~4999 如果以名稱創建二層ACL,隻能使用acl mac name acl-name命令進入其視圖 如果以編號創建二層ACL,隻能使用 acl mac acl-number命令進入其視圖 兩個視圖獨立,隻能通過各自的命令訪問各自的視圖 |
(可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有描述信息 |
(可選)配置規則編號的步長 |
step step-value [ start start-value ] |
缺省情況下,規則編號的步長為5,起始值為0 |
創建規則 |
rule [ rule-id ] { deny | permit } [ cos dot1p | counting | dest-mac dest-address dest-mask | { lsap lsap-type lsap-type-mask | type protocol-type protocol-type-mask } | source-mac source-address source-mask | time-range time-range-name ] * |
缺省情況下,二層ACL內不存在規則 |
(可選)為規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有描述信息 |
用戶可通過複製一個已存在的ACL(即源ACL),來生成一個新的同類型ACL(即目的ACL)。除了ACL的編號和名稱不同外,目的ACL與源ACL完全相同。
目的ACL要與源ACL的類型相同,且目的ACL必須不存在,否則將導致複製失敗。
表1-9 複製ACL
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
複製並生成一個新的ACL |
acl [ ipv6 | mac ] copy { source-acl-number | name source-acl-name } to { dest-acl-number | name dest-acl-name } |
- |
ACL最基本的應用就是進行報文過濾。例如,將ACL規則應用到指定接口的入或出方向上,從而對該接口收到或發出的報文進行過濾。
本節中的“接口”指的是二層以太網接口和VLAN接口。
一個接口在一個方向上最多可應用3個ACL進行報文過濾,包括一個IPv4 ACL、一個IPv6 ACL以及一個二層ACL。
表1-10 在接口上應用ACL進行報文過濾
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
在接口上應用ACL進行報文過濾 |
packet-filter [ ipv6 | mac ] { acl-number | name acl-name } { inbound | outbound } [ hardware-count ] |
缺省情況下,接口不對報文進行過濾 VLAN接口視圖下配置的入方向報文過濾對所有報文生效,包括通過VLAN接口進行三層轉發的報文和通過VLAN接口對應的物理接口進行二層轉發的報文 VLAN接口視圖下配置的出方向報文過濾僅對通過VLAN接口進行三層轉發的報文生效 |
在配置了報文過濾日誌的生成與發送周期之後,設備將周期性地生成報文過濾日誌信息並發送到信息中心或生成告警信息並發送到SNMP模塊,包括該周期內被匹配的報文數量以及所使用的ACL規則。同時,還會對匹配規則的數據流的第一個數據包進行記錄並送到信息中心或SNMP模塊。有關信息中心的詳細介紹請參見“網絡管理和監控配置指導”中的“信息中心”。有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。
表1-11 配置報文過濾日誌信息或告警信息的生成與發送周期
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
配置報文過濾日誌信息或告警信息的生成與發送周期 |
acl { logging | trap } interval interval |
缺省情況下,報文過濾日誌信息或告警信息的生成與發送周期為0分鍾,即不記錄報文過濾的日誌和告警信息 |
係統缺省的報文過濾動作為Permit,即允許未匹配上ACL規則的報文通過。通過本配置可更改報文過濾的缺省動作為Deny,即禁止未匹配上ACL規則的報文通過。
表1-12 配置報文過濾的缺省動作為deny
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
配置報文過濾的缺省動作為Deny |
packet-filter default deny |
缺省情況下,報文過濾的缺省動作為Permit,即允許未匹配上ACL規則的報文通過 |
在完成上述配置後,在任意視圖下執行display命令可以顯示ACL配置後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除ACL的統計信息。
表1-13 ACL顯示和維護
配置 |
命令 |
顯示ACL的配置和運行情況 |
display acl [ ipv6 | mac ] { acl-number | all | name acl-name } |
顯示ACL在報文過濾中的應用情況 |
display packet-filter { interface [ interface-type interface-number ] [ inbound | outbound ] | interface vlan-interface vlan-interface-number [ inbound | outbound ] [ slot slot-number ] } |
顯示ACL在報文過濾中應用的統計信息 |
display packet-filter statistics interface interface-type interface-number { inbound | outbound } [ [ ipv6 | mac ] { acl-number | name acl-name } ] [ brief ] |
顯示ACL在報文過濾中應用的累加統計信息 |
display packet-filter statistics sum { inbound | outbound } [ ipv6 | mac ] { acl-number | name acl-name } [ brief ] |
顯示ACL在報文過濾中的詳細應用情況 |
display packet-filter verbose interface interface-type interface-number { inbound | outbound } [ [ ipv6 | mac ] { acl-number | name acl-name } ] [ slot slot-number ] |
顯示QoS和ACL資源的使用情況 |
display qos-acl resource [ slot slot-number ] |
清除ACL在報文過濾中應用的統計信息、累加統計信息 |
reset packet-filter statistics interface [ interface-type interface-number ] { inbound | outbound } [ [ ipv6 | mac ] { acl-number | name acl-name } ] |
· 某公司內的各部門之間通過Device實現互連,該公司的工作時間為每周工作日的8點到18點。
· 通過配置,允許總裁辦在任意時間、財務部在工作時間訪問財務數據庫服務器,禁止其它部門在任何時間、財務部在非工作時間訪問該服務器。
圖1-1 ACL典型配置組網圖
# 創建名為work的時間段,其時間範圍為每周工作日的8點到18點。
<Device> system-view
[Device] time-range work 08:00 to 18:00 working-day
# 創建IPv4高級ACL 3000,並製訂如下規則:允許總裁辦在任意時間、財務部在工作時間訪問財務數據庫服務器,禁止其它部門在任何時間、財務部在非工作時間訪問該服務器。
[Device] acl advanced 3000
[Device-acl-ipv4-adv-3000] rule permit ip source 192.168.1.0 0.0.0.255 destination 192.168.0.100 0
[Device-acl-ipv4-adv-3000] rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.0.100 0 time-range work
[Device-acl-ipv4-adv-3000] rule deny ip source any destination 192.168.0.100 0
[Device-acl-ipv4-adv-3000] quit
# 應用IPv4高級ACL 3000對接口GigabitEthernet1/0/1出方向上的報文進行過濾。
[Device] interface gigabitethernet 1/0/1
[Device-GigabitEthernet1/0/1] packet-filter 3000 outbound
[Device-GigabitEthernet1/0/1] quit
配置完成後,在各部門的PC(假設均為Windows XP操作係統)上可以使用ping命令檢驗配置效果,在Device上可以使用display acl命令查看ACL的配置和運行情況。例如在工作時間:
# 在財務部的PC上檢查到財務數據庫服務器是否可達。
C:\> ping 192.168.0.100
Pinging 192.168.0.100 with 32 bytes of data:
Reply from 192.168.0.100: bytes=32 time=1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Ping statistics for 192.168.0.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
由此可見,財務部的PC能夠在工作時間訪問財務數據庫服務器。
# 在市場部的PC上檢查財務數據庫服務器是否可達。
C:\> ping 192.168.0.100
Pinging 192.168.0.100 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.0.100:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
由此可見,市場部的PC不能在工作時間訪問財務數據庫服務器。
# 查看IPv4高級ACL 3000的配置和運行情況。
[Device] display acl 3000
Advanced IPv4 ACL 3000, 3 rules,
ACL's step is 5
rule 0 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.0.100 0
rule 5 permit ip source 192.168.2.0 0.0.0.255 destination 192.168.0.100 0 time-range work (Active)
rule 10 deny ip destination 192.168.0.100 0
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!