ACL原理和作用ACL類型和特點 acl是什么意思

?隨著網絡的飛速發展,網絡安全和網絡服務質量QoS (Quality of Service)問題日益突出 。訪問控制列表 (ACL, Access Control List)是與其緊密相關的一個技術 。
?ACL可以通過對網絡中報文流的精確識別,與其他技術結合,達到控制網絡訪問行為、防止網絡攻擊和提高網絡帶寬利用率的目的 , 從而切實保障網絡環境的安全性和網絡服務質量的可靠性 。
?在本章節中 , 將介紹ACL的基本原理和基本作用,ACL的不同種類及特點 , ACL的基本組成和匹配順序,通配符的使用方法和ACL的相關配置 。
技術背景:需要一個工具,實現流量過濾
?隨著網絡的飛速發展,網絡安全和網絡服務質量QoS(Quality of Service)問題日益突出 。
?園區重要服務器資源被隨意訪問 , 園區機密信息容易泄露,造成安全隱患 。
?Internet病毒肆意侵略園區內網,內網環境的安全性堪憂 。
?網絡帶寬被各類業務隨意擠占,服務質量要求最高的語音、視頻業務的帶寬得不到保障 , 造成用戶體驗差 。
?以上種種問題,都對正常的網絡通信造成了很大的影響 。因此 , 提高網絡安全性和服務質量迫在眉睫,我們需要對網絡進行控制 。比如,需要借助一個工具幫助實現一些流量的過濾 。

ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
?某公司為保證財務數據安全,禁止研發部門訪問財務服務器 , 但總裁辦公室不受限制 。
ACL概述
?通過ACL可以實現對網絡中報文流的精確識別和控制,達到控制網絡訪問行為、防止網絡攻擊和提高網絡帶寬利用率的目的 , 從而切實保障網絡環境的安全性和網絡服務質量的可靠性 。
?ACL是由permit或deny語句組成的一系列有順序的規則的集合;它通過匹配報文的相關字段實現對報文的分類 。
?ACL是能夠匹配一個IP數據包中的源IP地址、目的IP地址、協議類型、源目的端口等元素的基礎性工具;ACL還能夠用于匹配路由條目 。
?在本章課程中主要通過流量過濾來介紹ACL 。
?ACL是由一系列permit或deny語句組成的、有序規則的列表 。
?ACL是一個匹配工具 , 能夠對報文進行匹配和區分 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
ACL應用
?匹配IP流量
?在Traffic-filter中被調用
?在NAT(Network Address Translation)中被調用
?在路由策略中被調用
?在防火墻的策略部署中被調用
?在QoS中被調用
?其他……
ACL的組成
?ACL的組成:
?ACL編號:在網絡設備上配置ACL時,每個ACL都需要分配一個編號 , 稱為ACL編號,用來標識ACL 。不同分類的ACL編號范圍不同,這個后面具體講 。
?規則:前面提到了,一個ACL通常由若干條“permit/deny”語句組成,每條語句就是該ACL的一條規則 。
?規則編號:每條規則都有一個相應的編號,稱為規則編號,用來標識ACL規則 。可以自定義 , 也可以系統自動分配 。ACL規則的編號范圍是0~4294967294,所有規則均按照規則編號從小到大進行排序 。
?動作:每條規則中的permit或deny,就是與這條規則相對應的處理動作 。permit指“允許”,deny指“拒絕”,但是ACL一般是結合其他技術使用,不同的場景,處理動作的含義也有所不同 。
?比如:ACL如果與流量過濾技術結合使用(即流量過濾中調用ACL),permit就是“允許通行”的意思,deny就是“拒絕通行”的意思 。
?匹配項:ACL定義了極其豐富的匹配項 。例子中體現的源地址,ACL還支持很多其他規則匹配項 。例如,二層以太網幀頭信息(如源MAC、目的MAC、以太幀協議類型)、三層報文信息(如目的地址、協議類型)以及四層報文信息(如TCP/UDP端口號)等 。
?提問:rule 5 permit source 1.1.1.0 0.0.0.255 是什么意思?這個在后續課程中會介紹 。
?ACL由若干條permit或deny語句組成 。每條語句就是該ACL的一條規則,每條語句中的permit或deny就是與這條規則相對應的處理動作 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
規則編號
?規則編號和步長的概念:
?規則編號:每條規則都有一個相應的編號 , 稱為規則編號,用來標識ACL規則 ??梢宰远x,也可以系統自動分配 。
?步長:系統自動為ACL規則分配編號時,每個相鄰規則編號之間會有一個差值 , 這個差值稱為“步長” 。缺省步長為5,所以規則編號就是5/10/15…以此類推 。
?如果手工指定了一條規則,但未指定規則編號,系統就會使用大于當前ACL內最大規則編號且是步長整數倍的最小整數作為規則編號 。
?步長可以調整 , 如果將步長改為2,系統則會自動從當前步長值開始重新排列規則編號,規則編號就變成2、4、6… 。
?那步長的作用是什么?直接rule 1/2/3/4…為什么不可以?
?先來看一個小題目:如果希望增加一條規則 , 該如何處理?
?可以在rule 10和rule 15之間,手工加入一條rule 11 。
?因此,設置一定長度的步長的作用 , 是方便后續在舊規則之間插入新的規則 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
規則編號與步長
?規則編號(Rule ID):
一個ACL中的每一條規則都有一個相應的編號 。
?步長(Step):
步長是系統自動為ACL規則分配編號時,每個相鄰規則編號之間的差值 , 缺省值為5 。步長的作用是為了方便后續在舊規則之間,插入新的規則 。
?Rule ID分配規則:
系統為ACL中首條未手工指定編號的規則分配編號時,使用步長值(例如步長=5,首條規則編號為5)作為該規則的起始編號;為后續規則分配編號時 , 則使用大于當前ACL內最大規則編號且是步長整數倍的最小整數作為規則編號 。
通配符 (1)
?當進行IP地址匹配的時候,后面會跟著32位掩碼位,這32位稱為通配符 。
?通配符,也是點分十進制格式 , 換算成二進制后,“0”表示“匹配”,“1”表示“不關心” 。
?具體看下這2條規則:
?rule 5: 拒絕源IP地址為10.1.1.1報文通過——因為通配符為全0 , 所以每一位都要嚴格匹配,因此匹配的是主機IP地址10.1.1.1;
?rule 15:允許源IP地址為10.1.1.0/24網段地址的報文通過——因為通配符:0.0.0.11111111,后8位為1,表示不關心,因此10.1.1.xxxxxxxx 的后8位可以為任意值,所以匹配的是10.1.1.0/24網段 。
?例子:如果要精確匹配192.168.1.1/24這個IP地址對應的網段地址,通配符是多少?
?可以得出:網絡位需要嚴格匹配,主機位無所謂,因此通配符為“0.0.0.255” 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
匹配規則:
“0”表示“匹配”;“1”表示“隨機分配”
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
通配符 (Wildcard)
?通配符是一個32比特長度的數值,用于指示IP地址中,哪些比特位需要嚴格匹配,哪些比特位無需匹配 。
?通配符通常采用類似網絡掩碼的點分十進制形式表示 , 但是含義卻與網絡掩碼完全不同 。
通配符 (2)
?如果想匹配192.168.1.0/24網段中的奇數IP地址 , 通配符該怎么寫呢?
?我們先來看一看 , 奇數IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……
?后八位寫成二進制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……
?可以看出共同點:最后8位的高7位是任意值 , 最低位固定為1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)
?這就得出了通配符的一個特點:通配符中的1或者0是可以不連續的 。
?還有兩個特殊的通配符:
?當通配符全為0來匹配IP地址時 , 表示精確匹配某個IP地址;
?當通配符全為1來匹配0.0.0.0地址時,表示匹配了所有IP地址 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
?匹配192.168.1.0/24這個子網中的奇數IP地址 , 例如192.168.1.1、192.168.1.3、192.168.1.5等 。
ACL的分類與標識
?基于ACL規則定義方式的劃分,可分為:
?基本ACL、高級ACL、二層ACL、用戶自定義ACL和用戶ACL 。
?基于ACL標識方法的劃分,則可分為:
?數字型ACL和命名型ACL 。
?注意:用戶在創建ACL時可以為其指定編號,不同的編號對應不同類型的ACL 。同時,為了便于記憶和識別,用戶還可以創建命名型ACL,即在創建ACL時為其設置名稱 。命名型ACL,也可以是“名稱 數字”的形式,即在定義命名型ACL時 , 同時指定ACL編號 。如果不指定編號,系統則會自動為其分配一個數字型ACL的編號 。
?基于ACL規則定義方式的分類
分類
編號范圍
規則定義描述
基本ACL
2000~2999
僅使用報文的源IP地址、分片信息和生效時間段信息來定義規則 。
高級ACL
3000~3999
可使用IPv4報文的源IP地址、目的IP地址、IP協議類型、ICMP類型、TCP源/目的端口號、UDP源/目的端口號、生效時間段等來定義規則 。
二層ACL
4000~4999
使用報文的以太網幀頭信息來定義規則,如根據源MAC地址、目的MAC地址、二層協議類型等 。
用戶自定義ACL
5000~5999
使用報文頭、偏移位置、字符串掩碼和用戶自定義字符串來定義規則 。
用戶ACL
6000~6999
既可使用IPv4報文的源IP地址或源UCL(User Control List)組,也可使用目的IP地址或目的UCL組、IP協議類型、ICMP類型、TCP源端口/目的端口、UDP源端口/目的端口號等來定義規則 。
基于ACL標識方法的分類
分類
規則定義描述
數字型ACL
傳統的ACL標識方法 。創建ACL時 , 指定一個唯一的數字標識該ACL 。
命名型ACL
通過名稱代替編號來標識ACL 。
基本ACL&高級ACL
?基本ACL:
?主要針對IP報文的源IP地址進行匹配 , 基本ACL的編號范圍是2000-2999 。
?比如這個例子,創建的是acl 2000,就意味著創建的是基本ACL 。
?高級ACL:
?可以根據IP報文中的源IP地址、目的IP地址、協議類型,TCP或UDP的源目端口號等元素進行匹配,可以理解為:基本ACL是高級ACL的一個子集,高級ACL可以比基本ACL定義出更精確、更復雜、更靈活的規則 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
ACL的匹配機制
?ACL的匹配機制概括來說就是:
?配置ACL的設備接收報文后 , 會將該報文與ACL中的規則逐條進行匹配,如果不能匹配上,就會繼續嘗試去匹配下一條規則 。
?一旦匹配上,則設備會對該報文執行這條規則中定義的處理動作,并且不再繼續嘗試與后續規則匹配 。
?匹配流程:首先系統會查找設備上是否配置了ACL 。
?如果ACL不存在,則返回ACL匹配結果為:不匹配 。
?如果ACL存在,則查找設備是否配置了ACL規則 。
?如果規則不存在,則返回ACL匹配結果為:不匹配 。
?如果規則存在,則系統會從ACL中編號最小的規則開始查找 。
?如果匹配上了permit規則 , 則停止查找規則 , 并返回ACL匹配結果為:匹配(允許) 。
?如果匹配上了deny規則,則停止查找規則 , 并返回ACL匹配結果為:匹配(拒絕) 。
?如果未匹配上規則 , 則繼續查找下一條規則 , 以此循環 。如果一直查到最后一條規則,報文仍未匹配上,則返回ACL匹配結果為:不匹配 。
?從整個ACL匹配流程可以看出,報文與ACL規則匹配后 , 會產生兩種匹配結果:“匹配”和“不匹配” 。
?匹配(命中規則):指存在ACL,且在ACL中查找到了符合匹配條件的規則 。不論匹配的動作是“permit”還是“deny”,都稱為“匹配”,而不是只是匹配上permit規則才算“匹配” 。
?不匹配(未命中規則):指不存在ACL,或ACL中無規則 , 再或者在ACL中遍歷了所有規則都沒有找到符合匹配條件的規則 。以上三種情況,都叫做“不匹配” 。
?匹配原則:一旦命中即停止匹配 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
ACL的匹配順序及匹配結果
?配置順序(config模式)
?系統按照ACL規則編號從小到大的順序進行報文匹配,規則編號越小越容易被匹配 。
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
?一條ACL可以由多條“deny或permit”語句組成,每一條語句描述一條規則 , 這些規則可能存在包含關系,也可能有重復或矛盾的地方,因此ACL的匹配順序是十分重要的 。
?華為設備支持兩種匹配順序:自動排序(auto模式)和配置順序(config模式) 。缺省的ACL匹配順序是config模式 。
?自動排序,是指系統使用“深度優先”的原則,將規則按照精確度從高到低進行排序,并按照精確度從高到低的順序進行報文匹配 ?!@個比較復雜,這里就不具體展開了,感興趣的同學可以課后查看資料 。
?配置順序 , 系統按照ACL規則編號從小到大的順序進行報文匹配 , 規則編號越小越容易被匹配 ?!@個就是我們前面提到的匹配順序 。
?如果后面又添加了一條規則,則這條規則會被加入到相應的位置,報文仍然會按照從小到大的順序進行匹配 。
?匹配結果:(如圖所示,以192.168.1.3/24為例)
?首先理解ACL 2000的含義:
?rule 1:允許源IP地址為192.168.1.1的報文
?rule 2:允許源IP地址為192.168.1.2的報文
?rule 3:拒絕源IP地址為192.168.1.2的報文
?rule 4:允許其他所有IP地址的報文
ACL的匹配位置
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
入站 (Inbound)及出站 (Outbound)方向
ACL原理和作用ACL類型和特點 acl是什么意思

文章插圖
基本ACL的基礎配置命令
?創建基本ACL
?[Huawei] acl [ number ] acl-number [ match-order config ]
?