訪問控制列表-ACL匹配規則


1 、ACL匹配機制

首先,小編為大家介紹ACL匹配機制。上一期提到,ACL在匹配報文時遵循“一旦命中即停止匹配”的原則。其實,這句話就是對ACL匹配機制的一個高度的概括。當然,ACL匹配過程中,還存在很多細節。比如,ACL不存在系統會怎么處理?ACL存在但規則不存在系統會怎么處理?為了對整個ACL匹配過程展開詳細的介紹,小編畫了一張ACL匹配流程圖,相信對大家理解ACL匹配機制能有所幫助。

 

從整個ACL匹配流程可以看出,報文與ACL規則匹配后,會產生兩種匹配結果:匹配”和“不匹配”

l  匹配(命中規則):指存在ACL,且在ACL中查找到了符合匹配條件的規則。不論匹配的動作是“permit”還是“deny”,都稱為“匹配”,而不是只是匹配上permit規則才算“匹配”。

l  不匹配(未命中規則):指不存在ACL,或ACL中無規則,再或者在ACL中遍歷了所有規則都沒有找到符合匹配條件的規則。切記以上三種情況,都叫做“不匹配”。

無論報文匹配ACL的結果是“不匹配”、“允許”還是“拒絕”,該報文最終是被允許通過還是拒絕通過,實際是由應用ACL的各個業務模塊來決定的。不同的業務模塊,對命中和未命中規則報文的處理方式也各不相同。例如,在Telnet模塊中應用ACL,只要報文命中了permit規則,就允許通過;而在流策略中應用ACL,如果報文命中了permit規則,但流行為動作配置的是deny,該報文會被拒絕通過。

2 、ACL規則匹配順序

從上面的ACL匹配報文流程圖中,可以看到,只要報文未命中規則且仍剩余規則,系統會一直從剩余規則中選擇下一條與報文進行匹配。

系統是根據什么樣的順序來選擇規則進行報文匹配的呢?

回答這個問題之前,先來看個例子。假設我們先后執行了以下兩條命令進行配置:

rule deny ip destination 1.1.0.0 0.0.255.255   //表示拒絕目的IP地址為1.1.0.0網段的報文通過

rule permit ip destination 1.1.1.0 0.0.0.255   //表示允許目的IP地址為1.1.1.0網段的報文通過,該網段地址范圍小於1.1.0.0網段范圍

這條permit規則與deny規則是相互矛盾的。對於目的IP=1.1.1.1的報文,如果系統先將deny規則與其匹配,則該報文會被禁止通過。相反,如果系統先將permit規則與其匹配,則該報文會得到允許通過。

因此,對於規則之間存在重復或矛盾的情形,報文的匹配結果與ACL規則匹配順序是息息相關的。下面,小編就為大家介紹ACL定義的兩種規則匹配順序:配置順序(config)和自動排序(auto)。

配置順序,即系統按照ACL規則編號從小到大的順序進行報文匹配,規則編號越小越容易被匹配。后插入的規則,如果你指定的規則編號更小,那么這條規則可能會被先匹配上。

ACL規則的生效前提,是要在業務模塊中應用ACL。當ACL被業務模塊引用時,你可以隨時修改ACL規則,但規則修改后是否立即生效與具體的業務模塊相關。關於ACL的應用,在后續連載的應用篇中,小編還將為大家詳細介紹。

自動排序,是指系統使用“深度優先”的原則,將規則按照精確度從高到底進行排序,系統按照精確度從高到低的順序進行報文匹配。規則中定義的匹配項限制越嚴格,規則的精確度就越高,即優先級越高,那么該規則的編號就越小,系統越先匹配。例如,有一條規則的目的IP地址匹配項是一台主機地址2.2.2.2/32,而另一條規則的目的IP地址匹配項是一個網段2.2.2.0/24,前一條規則指定的地址范圍更小,所以其精確度更高,系統會優先將報文與前一條規則進行匹配。

在自動排序的ACL中配置規則,不允許自行指定規則編號。系統能自動識別出該規則在這條ACL中對應的優先級,並為其分配一個適當的規則編號。

例如,在auto模式的acl 3001中,存在以下兩條規則。

如果在acl 3001中插入rule deny ip destination 1.1.1.1 0(目的IP地址是主機地址,優先級高於上圖中的兩條規則),系統將按照規則的優先級關系,重新為各規則分配編號。插入新規則后,新的排序如下。

 

可以看到,rule deny ip destination 1.1.1.1 0的優先級最高,排列最靠前。

3、ACL規則匹配項

最后,我們來說說ACL規則最核心的部分??規則匹配項。

在上一期中,小編在介紹ACL分類時,就已經提到各類ACL的規則定義描述。比如,基本ACL可以使用報文的源IP地址作為匹配選項;高級ACL則更高一籌,不僅可以使用源IP地址,還能使用目的IP地址、協議類型、端口號等等。

今天小編為大家講解幾個最常用的匹配選項??協議類型、目的地址和生效時間段。

PS:源地址的使用方法與目的地址同理,小編不再贅述。

協議類型

格式為:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf

高級ACL支持過濾的報文類型很多,常用的協議類型包括: ICMP(協議號1)、TCP(協議號6)、UDP(協議號17)、GRE(協議號47)、IGMP(協議號2)、IP(指任何IP層協議)、IPinIP(協議號4)、OSPF(協議號89)。protocol-number取值可以是1~255。

什么情況下可以使用協議類型作為匹配項?

例如,交換機某個接口下的用戶存在大量的攻擊者,你希望能夠禁止這個接口下的所有用戶接入網絡。這時,通過指定協議類型為IP來屏蔽這些用戶的IP流量,就可以達到目的。配置如下:

rule deny ip //表示拒絕IP報文通過

再如,交換機上打開透明防火牆功能后,在缺省情況下,透明防火牆會在域間丟棄所有入域間的報文,包括業務報文和協議報文。如果你希望像OSPF這樣的動態路由協議報文能正常通過防火牆,保證路由互通,這時,通過指定協議類型為OSPF即可解決問題。配置如下:

rule permit ospf  //表示允許OSPF報文通過

 

目的地址

格式為:destination { destination-address destination-wildcard | any }

destination-address:指定報文的目的地址。

destination-wildcard:指定通配符掩碼。可以為0,相當於0.0.0.0,表示目的地址為主機地址。

 any:表示對任意目的地址都匹配。

什么情況下可以使用目的地址作為匹配項?

例如,某公司有一台非常重要的服務器,其IP地址為1.1.1.1,現希望對該服務器的訪問權限進行限制。這時,你可以通過指定目的地址為匹配選項來解決該問題。配置如下:

rule deny ip destination 1.1.1.1 0  //表示拒絕目的地址是1.1.1.1的報文通過

小編提醒:在將目的地址定義為ACL規則匹配項時,還需要同時指定通配符掩碼,用來與目的地址字段共同確定一個地址范圍。

通配符掩碼的格式與IP地址相同,也是一個32比特位的數字字符串,用於指示目的IP地址中的哪些位將被檢查。各比特位中,0表示“檢查相應的位”,1表示“不檢查相應的位”,

概括為一句話就是“檢查0,忽略1”。 如圖所示,以8比特為例,通配符的低8位如果為全0,就表示對目的IP地址的低8位全部進行檢查;全1就表示全部忽略。有多少位為0,就表示檢查多少位;有多少位為1,就表示忽略多少位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM