【交換機在江湖之初窺門徑】訪問控制列表-細說ACL那些事兒(ACL匹配篇)
Hi,小伙伴們,小編又來報道啦!在上一期中,小編圍繞一張ACL結構圖展開介紹,讓大家了解了ACL的概念、作用和分類,並且知道了ACL是通過規則匹配來實現報文過濾的。但ACL到底是如何進行規則匹配的,相信大家還是一頭霧水。本期,小編就將帶領大家深入ACL內部,說一說關於“ACL匹配”的那些事兒。 1 、ACL匹配機制首先,小編為大家介紹ACL匹配機制。上一期提到,ACL在匹配報文時遵循“一旦命中即停止匹配”的原則。其實,這句話就是對ACL匹配機制的一個高度的概括。當然,ACL匹配過程中,還存在很多細節。比如,ACL不存在系統會怎么處理?ACL存在但規則不存在系統會怎么處理?為了對整個ACL匹配過程展開詳細的介紹,小編畫了一張ACL匹配流程圖,相信對大家理解ACL匹配機制能有所幫助。
從整個ACL匹配流程可以看出,報文與ACL規則匹配后,會產生兩種匹配結果:“匹配”和“不匹配”。 l 匹配(命中規則):指存在ACL,且在ACL中查找到了符合匹配條件的規則。不論匹配的動作是“permit”還是“deny”,都稱為“匹配”,而不是只是匹配上permit規則才算“匹配”。 l 不匹配(未命中規則):指不存在ACL,或ACL中無規則,再或者在ACL中遍歷了所有規則都沒有找到符合匹配條件的規則。切記以上三種情況,都叫做“不匹配”。
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規則編號從小到大的順序進行報文匹配,規則編號越小越容易被匹配。后插入的規則,如果你指定的規則編號更小,那么這條規則可能會被先匹配上。
自動排序,是指系統使用“深度優先”的原則,將規則按照精確度從高到底進行排序,系統按照精確度從高到低的順序進行報文匹配。規則中定義的匹配項限制越嚴格,規則的精確度就越高,即優先級越高,那么該規則的編號就越小,系統越先匹配。例如,有一條規則的目的IP地址匹配項是一台主機地址2.2.2.2/32,而另一條規則的目的IP地址匹配項是一個網段2.2.2.0/24,前一條規則指定的地址范圍更小,所以其精確度更高,系統會優先將報文與前一條規則進行匹配。
例如,在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地址、協議類型、端口號等等。 今天小編為大家講解幾個最常用的匹配選項:協議類型、目的地址和生效時間段。
協議類型 格式為: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的報文通過
通配符掩碼的格式與IP地址相同,也是一個32比特位的數字字符串,用於指示目的IP地址中的哪些位將被檢查。各比特位中,0表示“檢查相應的位”,1表示“不檢查相應的位”, 概括為一句話就是“檢查0,忽略1”。 如圖所示,以8比特為例,通配符的低8位如果為全0,就表示對目的IP地址的低8位全部進行檢查;全1就表示全部忽略。有多少位為0,就表示檢查多少位;有多少位為1,就表示忽略多少位。
為了進一步加深對通配符掩碼的理解,小編特出一道考題來考考大家:
1. 首先,分析該目的地址和通配符掩碼共同確定的地址范圍的高兩個字節。目的地址高兩個字節是“172.30”,通配符掩的高兩個字節是“0.0”,按照“檢查0”原則,該目的地址和通配符掩碼確定的地址的高兩個字節必然是“172.30”。 2. 然后,再分析第三個字節。通配符掩碼的第三個字節是15,轉換為二進制比特是00001111。根據“檢查0,忽略1”原則,小編將分析過程畫圖如下。
3. 由於通配符掩碼的高4位是0000、后四位是1111,所以得出該目的地址和通配符掩碼確定的地址的第三個字節,是00010000~00011111這樣一個地址范圍,轉化成十進制是16~31。同理,目的地址的最后一個字節是0,通配符掩碼的最后一個字節是255(轉換成二進制比特是全1),按照“忽略1”原則,該目的地址和通配符掩碼確定的地址的第四個字節也是一個地址范圍00000000~11111111,轉化成十進制是0~255。 基於以上分析,我們得到最終結果是:destination-address =172.30.16.0 destination-wildcard = 0.0.15.255共同確定的地址范圍為172.30.16.0/24~172.30.31.0/24,最小的IP地址是172.30.16.0,最大的IP地址是172.30.31.255。小伙伴們,你們答對了嗎?
生效時間段 time-range ? 第一種模式——相對時間段:以星期為參數來定義時間范圍。 格式為:time-range time-name start-time to end-time { days } &<1-7>
? 第二種模式——絕對時間段:從某年某月某日的某一時間開始,到某年某月某日的某一時間結束。 格式為:time-range time-name from time1 date1 [ to time2 date2 ]
例如,每天20:00~22:00為網絡流量的高峰期,大量P2P、下載類業務的使用影響了其他數據業務的正常使用,此時通過設置在這個時間段內降低P2P、下載類業務的帶寬,可以防止網絡擁塞。配置如下: time-range time1 20:00 to 22:00 daily 再舉一例,某公司對外開放服務器的訪問權限,但開放時間限制為:從2014年1月1日零點開始生效,到2014年12月31日晚上23:59截止。此時通過設置在這個時間段內訪問服務器的報文才允許通過,就可以達到基於時間的訪問權限控制的效果。配置如下: time-range time2 from 00:00 2014/1/1 to 23:59 2014/12/31 最后,小遍提醒大家,配置完時間段,千萬別忘記要將時間段與ACL規則關聯起來,這樣才是一條基於時間的ACL的完整配置過程。配置如下: acl acl-number rule [ rule-id ] { deny | permit } other-options time-range time-name
好啦,說完ACL規則的匹配項,本文也要接近尾聲了。回顧全文,小編圍繞ACL匹配機制、ACL匹配順序和ACL匹配項展開了介紹,讓大家了解了ACL匹配報文的整個流程,知道了ACL存在哪些匹配結果、ACL按照什么樣的順序進行規則匹配,並且掌握了最常用的ACL規則匹配項的使用方法。現在大家對ACL的認識,是不是又進一步加深了呢? 在下一期連載系列中,小編將為大家帶來ACL的應用篇,讓大家了解ACL可以應用的范圍,並將帶領大家一起動手配置真實的ACL應用案例。敬請期待喲! |