•隨著網(wǎng)絡(luò)的飛速發(fā)展,網(wǎng)絡(luò)安全和網(wǎng)絡(luò)服務(wù)質(zhì)量QoS (Quality of Service)問題日益突出。訪問控制列表 (ACL, Access Control List)是與其緊密相關(guān)的一個技術(shù)。
•ACL可以通過對網(wǎng)絡(luò)中報文流的精確識別,與其他技術(shù)結(jié)合,達(dá)到控制網(wǎng)絡(luò)訪問行為、防止網(wǎng)絡(luò)攻擊和提高網(wǎng)絡(luò)帶寬利用率的目的,從而切實(shí)保障網(wǎng)絡(luò)環(huán)境的安全性和網(wǎng)絡(luò)服務(wù)質(zhì)量的可靠性。
•在本章節(jié)中,將介紹ACL的基本原理和基本作用,ACL的不同種類及特點(diǎn),ACL的基本組成和匹配順序,通配符的使用方法和ACL的相關(guān)配置。
技術(shù)背景:需要一個工具,實(shí)現(xiàn)流量過濾
•隨著網(wǎng)絡(luò)的飛速發(fā)展,網(wǎng)絡(luò)安全和網(wǎng)絡(luò)服務(wù)質(zhì)量QoS(Quality of Service)問題日益突出。
?園區(qū)重要服務(wù)器資源被隨意訪問,園區(qū)機(jī)密信息容易泄露,造成安全隱患。
?Internet病毒肆意侵略園區(qū)內(nèi)網(wǎng),內(nèi)網(wǎng)環(huán)境的安全性堪憂。
?網(wǎng)絡(luò)帶寬被各類業(yè)務(wù)隨意擠占,服務(wù)質(zhì)量要求最高的語音、視頻業(yè)務(wù)的帶寬得不到保障,造成用戶體驗(yàn)差。
•以上種種問題,都對正常的網(wǎng)絡(luò)通信造成了很大的影響。因此,提高網(wǎng)絡(luò)安全性和服務(wù)質(zhì)量迫在眉睫,我們需要對網(wǎng)絡(luò)進(jìn)行控制。比如,需要借助一個工具幫助實(shí)現(xiàn)一些流量的過濾。
•某公司為保證財(cái)務(wù)數(shù)據(jù)安全,禁止研發(fā)部門訪問財(cái)務(wù)服務(wù)器,但總裁辦公室不受限制。
ACL概述
•通過ACL可以實(shí)現(xiàn)對網(wǎng)絡(luò)中報文流的精確識別和控制,達(dá)到控制網(wǎng)絡(luò)訪問行為、防止網(wǎng)絡(luò)攻擊和提高網(wǎng)絡(luò)帶寬利用率的目的,從而切實(shí)保障網(wǎng)絡(luò)環(huán)境的安全性和網(wǎng)絡(luò)服務(wù)質(zhì)量的可靠性。
?ACL是由permit或deny語句組成的一系列有順序的規(guī)則的集合;它通過匹配報文的相關(guān)字段實(shí)現(xiàn)對報文的分類。
?ACL是能夠匹配一個IP數(shù)據(jù)包中的源IP地址、目的IP地址、協(xié)議類型、源目的端口等元素的基礎(chǔ)性工具;ACL還能夠用于匹配路由條目。
•在本章課程中主要通過流量過濾來介紹ACL。
•ACL是由一系列permit或deny語句組成的、有序規(guī)則的列表。
•ACL是一個匹配工具,能夠?qū)笪倪M(jìn)行匹配和區(qū)分。
ACL應(yīng)用
•匹配IP流量
•在Traffic-filter中被調(diào)用
•在NAT(Network Address Translation)中被調(diào)用
•在路由策略中被調(diào)用
•在防火墻的策略部署中被調(diào)用
•在QoS中被調(diào)用
•其他……
ACL的組成
•ACL的組成:
?ACL編號:在網(wǎng)絡(luò)設(shè)備上配置ACL時,每個ACL都需要分配一個編號,稱為ACL編號,用來標(biāo)識ACL。不同分類的ACL編號范圍不同,這個后面具體講。
?規(guī)則:前面提到了,一個ACL通常由若干條“permit/deny”語句組成,每條語句就是該ACL的一條規(guī)則。
?規(guī)則編號:每條規(guī)則都有一個相應(yīng)的編號,稱為規(guī)則編號,用來標(biāo)識ACL規(guī)則。可以自定義,也可以系統(tǒng)自動分配。ACL規(guī)則的編號范圍是0~4294967294,所有規(guī)則均按照規(guī)則編號從小到大進(jìn)行排序。
?動作:每條規(guī)則中的permit或deny,就是與這條規(guī)則相對應(yīng)的處理動作。permit指“允許”,deny指“拒絕”,但是ACL一般是結(jié)合其他技術(shù)使用,不同的場景,處理動作的含義也有所不同。
?比如:ACL如果與流量過濾技術(shù)結(jié)合使用(即流量過濾中調(diào)用ACL),permit就是“允許通行”的意思,deny就是“拒絕通行”的意思。
?匹配項(xiàng):ACL定義了極其豐富的匹配項(xiàng)。例子中體現(xiàn)的源地址,ACL還支持很多其他規(guī)則匹配項(xiàng)。例如,二層以太網(wǎng)幀頭信息(如源mac、目的MAC、以太幀協(xié)議類型)、三層報文信息(如目的地址、協(xié)議類型)以及四層報文信息(如TCP/UDP端口號)等。
•提問:rule 5 permit source 1.1.1.0 0.0.0.255 是什么意思?這個在后續(xù)課程中會介紹。
•ACL由若干條permit或deny語句組成。每條語句就是該ACL的一條規(guī)則,每條語句中的permit或deny就是與這條規(guī)則相對應(yīng)的處理動作。
規(guī)則編號
•規(guī)則編號和步長的概念:
?規(guī)則編號:每條規(guī)則都有一個相應(yīng)的編號,稱為規(guī)則編號,用來標(biāo)識ACL規(guī)則。可以自定義,也可以系統(tǒng)自動分配。
?步長:系統(tǒng)自動為ACL規(guī)則分配編號時,每個相鄰規(guī)則編號之間會有一個差值,這個差值稱為“步長”。缺省步長為5,所以規(guī)則編號就是5/10/15…以此類推。
?如果手工指定了一條規(guī)則,但未指定規(guī)則編號,系統(tǒng)就會使用大于當(dāng)前ACL內(nèi)最大規(guī)則編號且是步長整數(shù)倍的最小整數(shù)作為規(guī)則編號。
?步長可以調(diào)整,如果將步長改為2,系統(tǒng)則會自動從當(dāng)前步長值開始重新排列規(guī)則編號,規(guī)則編號就變成2、4、6…。
•那步長的作用是什么?直接rule 1/2/3/4…為什么不可以?
?先來看一個小題目:如果希望增加一條規(guī)則,該如何處理?
?可以在rule 10和rule 15之間,手工加入一條rule 11。
?因此,設(shè)置一定長度的步長的作用,是方便后續(xù)在舊規(guī)則之間插入新的規(guī)則。
規(guī)則編號與步長
•規(guī)則編號(Rule ID):
一個ACL中的每一條規(guī)則都有一個相應(yīng)的編號。
•步長(Step):
步長是系統(tǒng)自動為ACL規(guī)則分配編號時,每個相鄰規(guī)則編號之間的差值,缺省值為5。步長的作用是為了方便后續(xù)在舊規(guī)則之間,插入新的規(guī)則。
•Rule ID分配規(guī)則:
系統(tǒng)為ACL中首條未手工指定編號的規(guī)則分配編號時,使用步長值(例如步長=5,首條規(guī)則編號為5)作為該規(guī)則的起始編號;為后續(xù)規(guī)則分配編號時,則使用大于當(dāng)前ACL內(nèi)最大規(guī)則編號且是步長整數(shù)倍的最小整數(shù)作為規(guī)則編號。
通配符 (1)
•當(dāng)進(jìn)行IP地址匹配的時候,后面會跟著32位掩碼位,這32位稱為通配符。
•通配符,也是點(diǎn)分十進(jìn)制格式,換算成二進(jìn)制后,“0”表示“匹配”,“1”表示“不關(guān)心”。
•具體看下這2條規(guī)則:
?rule 5: 拒絕源IP地址為10.1.1.1報文通過——因?yàn)橥ㄅ浞麨槿?,所以每一位都要嚴(yán)格匹配,因此匹配的是主機(jī)IP地址10.1.1.1;
?rule 15:允許源IP地址為10.1.1.0/24網(wǎng)段地址的報文通過——因?yàn)橥ㄅ浞?.0.0.11111111,后8位為1,表示不關(guān)心,因此10.1.1.xxxxxxxx 的后8位可以為任意值,所以匹配的是10.1.1.0/24網(wǎng)段。
•例子:如果要精確匹配192.168.1.1/24這個IP地址對應(yīng)的網(wǎng)段地址,通配符是多少?
?可以得出:網(wǎng)絡(luò)位需要嚴(yán)格匹配,主機(jī)位無所謂,因此通配符為“0.0.0.255”。
匹配規(guī)則:
“0”表示“匹配”;“1”表示“隨機(jī)分配”
通配符 (Wildcard)
•通配符是一個32比特長度的數(shù)值,用于指示IP地址中,哪些比特位需要嚴(yán)格匹配,哪些比特位無需匹配。
•通配符通常采用類似網(wǎng)絡(luò)掩碼的點(diǎn)分十進(jìn)制形式表示,但是含義卻與網(wǎng)絡(luò)掩碼完全不同。
通配符 (2)
•如果想匹配192.168.1.0/24網(wǎng)段中的奇數(shù)IP地址,通配符該怎么寫呢?
?我們先來看一看,奇數(shù)IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……
?后八位寫成二進(jìn)制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……
?可以看出共同點(diǎn):最后8位的高7位是任意值,最低位固定為1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)
•這就得出了通配符的一個特點(diǎn):通配符中的1或者0是可以不連續(xù)的。
•還有兩個特殊的通配符:
?當(dāng)通配符全為0來匹配IP地址時,表示精確匹配某個IP地址;
?當(dāng)通配符全為1來匹配0.0.0.0地址時,表示匹配了所有IP地址。
•匹配192.168.1.0/24這個子網(wǎng)中的奇數(shù)IP地址,例如192.168.1.1、192.168.1.3、192.168.1.5等。
ACL的分類與標(biāo)識
•基于ACL規(guī)則定義方式的劃分,可分為:
?基本ACL、高級ACL、二層ACL、用戶自定義ACL和用戶ACL。
•基于ACL標(biāo)識方法的劃分,則可分為:
?數(shù)字型ACL和命名型ACL。
•注意:用戶在創(chuàng)建ACL時可以為其指定編號,不同的編號對應(yīng)不同類型的ACL。同時,為了便于記憶和識別,用戶還可以創(chuàng)建命名型ACL,即在創(chuàng)建ACL時為其設(shè)置名稱。命名型ACL,也可以是“名稱 數(shù)字”的形式,即在定義命名型ACL時,同時指定ACL編號。如果不指定編號,系統(tǒng)則會自動為其分配一個數(shù)字型ACL的編號。
•基于ACL規(guī)則定義方式的分類
|
分類 |
編號范圍 |
規(guī)則定義描述 |
|
基本ACL |
2000~2999 |
僅使用報文的源IP地址、分片信息和生效時間段信息來定義規(guī)則。 |
|
高級ACL |
3000~3999 |
可使用IPv4報文的源IP地址、目的IP地址、IP協(xié)議類型、ICMP類型、TCP源/目的端口號、UDP源/目的端口號、生效時間段等來定義規(guī)則。 |
|
二層ACL |
4000~4999 |
使用報文的以太網(wǎng)幀頭信息來定義規(guī)則,如根據(jù)源MAC地址、目的MAC地址、二層協(xié)議類型等。 |
|
用戶自定義ACL |
5000~5999 |
使用報文頭、偏移位置、字符串掩碼和用戶自定義字符串來定義規(guī)則。 |
|
用戶ACL |
6000~6999 |
既可使用IPv4報文的源IP地址或源UCL(User Control List)組,也可使用目的IP地址或目的UCL組、IP協(xié)議類型、ICMP類型、TCP源端口/目的端口、UDP源端口/目的端口號等來定義規(guī)則。 |
基于ACL標(biāo)識方法的分類
|
分類 |
規(guī)則定義描述 |
|
數(shù)字型ACL |
傳統(tǒng)的ACL標(biāo)識方法。創(chuàng)建ACL時,指定一個唯一的數(shù)字標(biāo)識該ACL。 |
|
命名型ACL |
通過名稱代替編號來標(biāo)識ACL。 |
基本ACL&高級ACL
•基本ACL:
?主要針對IP報文的源IP地址進(jìn)行匹配,基本ACL的編號范圍是2000-2999。
?比如這個例子,創(chuàng)建的是acl 2000,就意味著創(chuàng)建的是基本ACL。
•高級ACL:
?可以根據(jù)IP報文中的源IP地址、目的IP地址、協(xié)議類型,TCP或UDP的源目端口號等元素進(jìn)行匹配,可以理解為:基本ACL是高級ACL的一個子集,高級ACL可以比基本ACL定義出更精確、更復(fù)雜、更靈活的規(guī)則。
ACL的匹配機(jī)制
•ACL的匹配機(jī)制概括來說就是:
?配置ACL的設(shè)備接收報文后,會將該報文與ACL中的規(guī)則逐條進(jìn)行匹配,如果不能匹配上,就會繼續(xù)嘗試去匹配下一條規(guī)則。
?一旦匹配上,則設(shè)備會對該報文執(zhí)行這條規(guī)則中定義的處理動作,并且不再繼續(xù)嘗試與后續(xù)規(guī)則匹配。
•匹配流程:首先系統(tǒng)會查找設(shè)備上是否配置了ACL。
?如果ACL不存在,則返回ACL匹配結(jié)果為:不匹配。
?如果ACL存在,則查找設(shè)備是否配置了ACL規(guī)則。
?如果規(guī)則不存在,則返回ACL匹配結(jié)果為:不匹配。
?如果規(guī)則存在,則系統(tǒng)會從ACL中編號最小的規(guī)則開始查找。
−如果匹配上了permit規(guī)則,則停止查找規(guī)則,并返回ACL匹配結(jié)果為:匹配(允許)。
−如果匹配上了deny規(guī)則,則停止查找規(guī)則,并返回ACL匹配結(jié)果為:匹配(拒絕)。
−如果未匹配上規(guī)則,則繼續(xù)查找下一條規(guī)則,以此循環(huán)。如果一直查到最后一條規(guī)則,報文仍未匹配上,則返回ACL匹配結(jié)果為:不匹配。
•從整個ACL匹配流程可以看出,報文與ACL規(guī)則匹配后,會產(chǎn)生兩種匹配結(jié)果:“匹配”和“不匹配”。
?匹配(命中規(guī)則):指存在ACL,且在ACL中查找到了符合匹配條件的規(guī)則。不論匹配的動作是“permit”還是“deny”,都稱為“匹配”,而不是只是匹配上permit規(guī)則才算“匹配”。
?不匹配(未命中規(guī)則):指不存在ACL,或ACL中無規(guī)則,再或者在ACL中遍歷了所有規(guī)則都沒有找到符合匹配條件的規(guī)則。以上三種情況,都叫做“不匹配”。
•匹配原則:一旦命中即停止匹配。
ACL的匹配順序及匹配結(jié)果
•配置順序(config模式)
?系統(tǒng)按照ACL規(guī)則編號從小到大的順序進(jìn)行報文匹配,規(guī)則編號越小越容易被匹配。
•一條ACL可以由多條“deny或permit”語句組成,每一條語句描述一條規(guī)則,這些規(guī)則可能存在包含關(guān)系,也可能有重復(fù)或矛盾的地方,因此ACL的匹配順序是十分重要的。
•華為設(shè)備支持兩種匹配順序:自動排序(auto模式)和配置順序(config模式)。缺省的ACL匹配順序是config模式。
?自動排序,是指系統(tǒng)使用“深度優(yōu)先”的原則,將規(guī)則按照精確度從高到低進(jìn)行排序,并按照精確度從高到低的順序進(jìn)行報文匹配。——這個比較復(fù)雜,這里就不具體展開了,感興趣的同學(xué)可以課后查看資料。
?配置順序,系統(tǒng)按照ACL規(guī)則編號從小到大的順序進(jìn)行報文匹配,規(guī)則編號越小越容易被匹配。——這個就是我們前面提到的匹配順序。
?如果后面又添加了一條規(guī)則,則這條規(guī)則會被加入到相應(yīng)的位置,報文仍然會按照從小到大的順序進(jìn)行匹配。
•匹配結(jié)果:(如圖所示,以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的匹配位置
入站 (Inbound)及出站 (Outbound)方向
基本ACL的基礎(chǔ)配置命令
•創(chuàng)建基本ACL
•[Huawei] acl [ number ] acl-number [ match-order config ]
?acl-number:指定訪問控制列表的編號。
?match-order config:指定ACL規(guī)則的匹配順序,config表示配置順序。
•[Huawei] acl name acl-name { basic | acl-number } [ match-order config ]
?acl-name:指定創(chuàng)建的ACL的名稱。
?basic:指定ACL的類型為基本ACL。
•配置基本ACL規(guī)則
•[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]
?rule-id:指定ACL的規(guī)則ID。
?deny:指定拒絕符合條件的報文。
?permit:指定允許符合條件的報文。
?source { source-address source-wildcard | any }:指定ACL規(guī)則匹配報文的源地址信息。如果不配置,表示報文的任何源地址都匹配。其中:
?source-address:指定報文的源地址。
?source-wildcard:指定源地址通配符。
?any:表示報文的任意源地址。相當(dāng)于source-address為0.0.0.0或者source-wildcard為255.255.255.255。
?time-range time-name:指定ACL規(guī)則生效的時間段。其中,time-name表示ACL規(guī)則生效時間段名稱。如果不指定時間段,表示任何時間都生效。






