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