ACL簡介定義
訪問控制列表ACL(Access Control List)是由一條或多條規則組成的集合。所謂規則,是指描述報文匹配條件的判斷語句,這些條件可以是報文的源地址、目的地址、端口號等。
ACL本質上是一種報文過濾器,規則是過濾器的濾芯。設備基于這些規則進行報文匹配,可以過濾出特定的報文,并根據應用ACL的業務模塊的處理策略來允許或阻止該報文通過。
目的
隨著網絡的飛速發展,網絡安全和網絡服務質量QoS(Quality of Service)問題日益突出。
以上種種問題,都對正常的網絡通信造成了很大的影響。因此,提高網絡安全性服務質量迫在眉睫。ACL就在這種情況下應運而生了。
通過ACL可以實現對網絡中報文流的精確識別和控制,達到控制網絡訪問行為、防止網絡攻擊和提高網絡帶寬利用率的目的,從而切實保障網絡環境的安全性和網絡服務質量的可靠性。
下圖是一個典型的ACL應用組網場景
ACL基本原理
ACL由一系列規則組成,通過將報文與ACL規則進行匹配,設備可以過濾出特定的報文。
ACL組成
一條ACL的結構組成,如下圖1-2所示
ACL編號
用于標識ACL,表明該ACL是數字型ACL。根據ACL規則功能的不同,ACL被劃分為基本ACL、高級ACL、二層ACL和用戶ACL這幾種類型,每類ACL編號的取值范圍不同。關于每類ACL編號的詳細介紹,請參見ACL的分類
除了可以通過ACL編號標識ACL,設備還支持通過名稱來標識ACL,就像用域名代替IP地址一樣,更加方便記憶。這種ACL,稱為命名型ACL。
命名型ACL實際上是“名字+數字”的形式,可以在定義命名型ACL時同時指定ACL編號。如果不
定編號,則由系統自動分配。例如,下面就是一個既有名字“deny-telnet-login”又有編“3998”的ACL。
#
acl name deny-telnet-login 3998
rule 0 deny tcp source 10.152.0.0 0.0.63.255 destination 10.64.0.97 0 destination-port eq telnet
rule 5 deny tcp source 10.242.128.0 0.0.127.255 destination 10.64.0.97 0 destination-port eq telnet
#
規則
即描述報文匹配條件的判斷語句。
ACL的匹配機制
設備將報文與ACL規則進行匹配時,遵循“一旦命中即停止匹配”的機制
首先系統會查找設備上是否配置了ACL。
從整個ACL匹配流程可以看出,報文與ACL規則匹配后,會產生兩種匹配結果:“匹配”和“不匹配”。
ACL的分類基于ACL標識方法的劃分
劃分如下:
用戶在創建ACL時可以為其指定編號,不同的編號對應不同類型的ACL,如表1-1所示。同時,為了便于記憶和識別,用戶還可以創建命名型ACL,即在創建ACL時為其設置名稱。命名型ACL,也可以是“名稱 數字”的形式,即在定義命名型ACL時,同時指定ACL編號。如果不指定編號,系統則會自動為其分配一個數字型ACL的編號。
基于對IPv4和IPv6支持情況的劃分
劃分如下:
以上兩種ACL,以及既支持過濾IPv4報文又支持過濾IPv6報文的ACL,統一稱做“ACL”。各類型ACL對IPv4和IPv6的支持情況,如表1-1所示。
基于ACL規則定義方式的劃分
如表1-1所示,基于ACL規則定義方式的劃分如下。
表1-1 基于ACL規則定義方式的ACL分類
分類
適用的IP版本
規則定義描述
編號范圍
基本ACL
IPv4
僅使用報文的源IP地址、分片信息和生效時間段信息來定義規則。
2000~2999
高級ACL
IPv4
既可使用IPv4報文的源IP地址,也可使用目的IP地址、IP協議類型、ICMP類型、TCP源/目的端口、UDP源/目的端口號、生效時間段等來定義規則。
3000~3999
二層ACL
IPv4&IPv6
使用報文的以太網幀頭信息來定義規則,如根據源MAC(Media Access Control)地址、目的MAC地址、二層協議類型等。
4000~4999
用戶自定義ACL
IPv4&IPv6
使用報文頭、偏移位置、字符串掩碼和用戶自定義字符串來定義規則,即以報文頭為基準,指定從報文的第幾個字節開始與字符串掩碼進行“與”操作,并將提取出的字符串與用戶自定義的字符串進行比較,從而過濾出相匹配的報文。
5000~5999
用戶ACL
IPv4
既可使用IPv4報文的源IP地址,也可使用目的IP地址、IP協議類型、ICMP類型、TCP源端口/目的端口、UDP源端口/目的端口號等來定義規則。
6000~6031
基本ACL6
IPv6
可使用IPv6報文的源IPv6地址、分片信息和生效時間段來定義規則。
2000~2999
高級ACL6
IPv6
可以使用IPv6報文的源IPv6地址、目的IPv6地址、IPv6協議類型、ICMPv6類型、TCP源/目的端口、UDP源/目的端口號、生效時間段等來定義規則。
3000~3999
ACL的匹配順序
一條ACL可以由多條“deny | permit”語句組成,每一條語句描述一條規則,這些規則可能存在重復或矛盾的地方。例如,在一條ACL中先后配置以下兩條規則:
rule deny ip destination 10.1.0.0 0.0.255.255 //表示拒絕目的IP地址為10.1.0.0/16網段地址的報文通過
rule permit ip destination 10.1.1.0 0.0.0.255 //表示允許目的IP地址為10.1.1.0/24網段地址的報文通過,該網段地址范圍小于10.1.0.0/16網段范圍
其中,permit規則與deny規則是相互矛盾的。對于目的IP=10.1.1.1的報文,如果系統先將deny規則與其匹配,則該報文會被拒絕通過。相反,如果系統先將permit規則與其匹配,則該報文會得到允許通過。
因此,對于規則之間存在重復或矛盾的情形,報文的匹配結果與ACL的匹配順序是息息相關的。
設備支持兩種ACL匹配順序:配置順序(config模式)和自動排序(auto模式)。缺省的ACL匹配順序是config模式。
配置順序
配置順序,即系統按照ACL規則編號從小到大的順序進行報文匹配,規則編號越小越容易被匹配。
自動排序
自動排序,是指系統使用“深度優先”的原則,將規則按照精確度從高到低進行排序,并按照精確度從高到低的順序進行報文匹配。規則中定義的匹配項限制越嚴格,規則的精確度就越高,即優先級越高,系統越先匹配。
ACL的生效時間產生背景
ACL定義了豐富的匹配項,可以滿足大部分的報文過濾需求。但需求是不斷變化發展的,新的需求總是不斷涌現。例如,某公司要求,在上班時間只允許員工瀏覽與工作相關的幾個網站,下班或周末時間才可以訪問其他互聯網網站;再如,在每天20:00~22:00的網絡流量的高峰期,為防止P2P、下載類業務占用大量帶寬對其他數據業務的正常使用造成影響,需要對P2P、下載類業務的帶寬進行限制。
基于時間的ACL過濾就是用來解決上述問題的。管理員可以根據網絡訪問行為的要求和網絡的擁塞情況,配置一個或多個ACL生效時間段,然后在ACL規則中引用該時間段,從而實現在不同的時間段設置不同的策略,達到網絡優化的目的。
生效時間段模式
在ACL規則中引用的生效時間段存在兩種模式:
可以使用同一名稱(time-name)配置內容不同的多條時間段,配置的各周期時間段之間以及各絕對時間段之間的交集將成為最終生效的時間范圍。
例如,在ACL 2001中引用了時間段“test”,“test”包含了三個生效時間段:
#
time-range test 8:00 to 18:00 working-day
time-range test 14:00 to 18:00 off-day
time-range test from 00:00 2014/01/01 to 23:59 2014/12/31
#
acl number 2001
rule 5 permit time-range test
時間段“test”最終描述的時間范圍為:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。
實驗
還是老樣子先奉上完整拓撲(已配置好)戳我
拓撲圖
概述:
配置命令
AR1上:
// 創建時間組
time-range morning 8:00 to 12:00 working-day
time-range afternoon 13:30 to 17:30 working-day
// 創建高級ACL
acl name deny_renshiToInternet 3000
rule deny ip source 192.168.10.0 0.0.0.255 destination 172.16.1.0 0.0.0.255 time-range morning
rule deny ip source 192.168.10.0 0.0.0.255 destination 172.16.1.0 0.0.0.255 time-range afternoon
// 出接口掛起
int g0/0/1

traffic-fitter outbound acl 3000
AR2上:
// 創建時間組
time-range caiwu 12:00 to 18:00 off-day
// 創建高級ACL
acl name permit_caiwuToInternet 3000
rule permit ip source 192.168.20.0 0.0.0.255 destination 172.16.1.0 0.0.0.255 time-range caiwu
rule deny ip source any
// 出接口掛起
int g0/0/2
traffic-fitter outbound acl 3000
AR3上:
// 創建時間組
time-range yanfa 8:00 to 18:00 working-day
time-range yanfa from 00:00 2022/10/22 to 23:59 2023/10/22
// 創建高級ACL
acl name permit_yanfaToInternet 3000
rule permit ip source 192.168.30.0 0.0.0.255 destination 172.16.1.0 0.0.0.255 time-range yanfa
rule deny ip source any
// 出接口掛起
int g0/0/1
traffic-fitter outbound acl 3000
測試
由于寫這篇文章時是2022年10月30日14點23分(星期日),所以三個網段的pc都能ping通AR5,看不出作用
不過可以使用 clock 時間 日期 來修改路由器時間,這里就不做演示了
給大家看一下各路由器的時間組以及ACL規則
AR1
AR2
AR3