訪問控制列表-細說ACL那些事兒(初步認識ACL)

ACL,是Access Control List的簡稱,中文名稱叫“訪問控制列表”,它由一系列規則(即描述報文匹配條件的判斷語句)組成。這些條件,可以是報文的源地址、目的地址、端口號等。這樣解釋ACL,大家是不是覺得太抽象了!

好,現在小編換一種解釋方式。打個比方,ACL其實是一種報文過濾器,ACL規則就是過濾器的濾芯。安裝什麼樣的濾芯(即根據報文特徵配置相應的ACL規則),ACL就能過濾出什麼樣的報文了。

基於過濾出的報文,我們能夠做到阻塞攻擊報文、為不同類報文流提供差分服務、對Telnet登錄/FTP文件下載進行控制等等,從而提高網絡環境的安全性和網絡傳輸的可靠性。

說到這,大家一定迫不及待的想看看ACL長啥模樣。話不多說,先上圖!

訪問控制列表-細說ACL那些事兒(初步認識ACL)

ACL分類

首先,圖中是一個數字型ACL,ACL編號為2000。這類似於人類的身份證號,用於唯一標識自己的身份。當然,人類的身份證上不僅有身份證編號,還有每個人自己的名字。ACL也同樣如此,除了數字型ACL,還有一種叫做命名型的ACL,它就能擁有自己的ACL名稱。

訪問控制列表-細說ACL那些事兒(初步認識ACL)

通過名稱代替編號來定義ACL,就像用域名代替IP地址一樣,可以方便記憶,也讓大家更容易識別此ACL的使用目的。

另外,小編告訴大家,命名型ACL實際上是“名字+數字”的形式,可以在定義命名型ACL時同時指定ACL編號。如果不指定編號,則由系統自動分配。上圖就是一個既有名字“deny-telnet-login”又有編號 “3998”的ACL。

細心的你,一定會注意到,ACL結構圖中的ACL編號是“2000”,而這個例子中的ACL編號是“3998”,兩者有什麼區別嗎?

實際上,按照ACL規則功能的不同,ACL被劃分為基本ACL、高級ACL、二層ACL、用戶自定義ACL和用戶ACL這五種類型。每種類型ACL對應的編號範圍是不同的。ACL 2000屬於基本ACL,ACL 3998屬於高級ACL。高級ACL可以定義比基本ACL更準確、更豐富、更靈活的規則,所以高級ACL的功能更加強大。

訪問控制列表-細說ACL那些事兒(初步認識ACL)

ACL規則

接下來,我們來看看圖中ACL的 “deny | permit”語句。這些條件語句,我們稱作ACL規則(rule)。其中的“deny | permit”,稱作ACL動作,表示拒絕/允許。

ACL規則的編號範圍是0~4294967294,所有規則均按照規則編號從小到大進行排序。所以,上圖中我們可以看到rule 5排在首位,而規則編號最大的rule 4294967294排在末位。系統按照規則編號從小到大的順序,將規則依次與報文匹配,一旦匹配上一條規則即停止匹配。

除了包含ACL動作和規則編號,我們可以看到ACL規則中還定義了源地址生效時間段這樣的字段。這些字段,稱作匹配選項,它是ACL規則的重要組成部分。

其實,ACL提供了極其豐富的匹配選項。你可以選擇二層以太網幀頭信息(如源MAC目的MAC以太幀協議類型)作為匹配選項,也可以選擇三層報文信息(如

源地址、目的地址、協議類型)作為匹配選項,還可以選擇四層報文信息(如TCP/UDP端口號)等等等等。

你只需分析清楚需要過濾的報文的特徵,便可以指定使用哪一種ACL匹配選項,從而讓ACL能正確的識別需過濾的報文。

步長

步長,是指系統自動為ACL規則分配編號時,每個相鄰規則編號之間的差值。也就是說,系統是根據步長值自動為ACL規則分配編號的。

圖中的ACL 2000,步長就是5。系統按照5、10、15…這樣的規律為ACL規則分配編號。如果將步長調整為了2,那麼規則編號會自動從步長值開始重新排列,變成2、4、6…。

訪問控制列表-細說ACL那些事兒(初步認識ACL)

ACL的缺省步長值是5。通過display acl acl-number命令,可以查看ACL規則、步長等配置信息。通過step step命令,可以修改ACL步長值。

說到這,小夥伴們是不是好奇了,設置ACL步長有什麼作用呢?

實際上,設置步長的目的,是為了方便大家在ACL規則之間插入新的規則。

先來看個例子。

假設,一條ACL中,已包含了下面三條規則5、10、15。如果你希望源IP地址為1.1.1.3的報文也被禁止通過,該如何處理呢?

rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址為1.1.1.1的報文通過 
rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址為1.1.1.2的報文通過
rule 15 permit source 1.1.1.0 0.0.0.255 //表示允許源IP地址為1.1.1.0網段的報文通過

我們來分析一下。由於ACL匹配報文時遵循“一旦命中即停止匹配”的原則,所以源IP地址為1.1.1.1和1.1.1.2的報文,會在匹配上編號較小的rule 5和rule 10後停止匹配,從而被系統禁止通過;而源IP地址為1.1.1.3的報文,則只會命中rule 15,從而得到系統允許通過。要想讓源IP地址為1.1.1.3的報文也被禁止通過,我們必須為該報文配置一條新的deny規則。

rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址為1.1.1.1的報文通過

rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址為1.1.1.2的報文通過

rule 11 deny source 1.1.1.3 0 //表示禁止源IP地址為1.1.1.3的報文通過

rule 15 permit source 1.1.1.0 0.0.0.255 //表示允許源IP地址為1.1.1.0網段的報文通過

在rule 10和rule 15之間插入rule 11後,源IP地址為1.1.1.3的報文,就可以先命中rule 11而停止繼續往下匹配,所以該報文將會被系統禁止通過。

試想一下,如果這條ACL規則之間間隔不是5,而是1(rule 1、rule 2、rule 3…),這時再想插入新的規則,該怎麼辦呢?只能先刪除已有的規則,然後再配置新規則,最後將之前刪除的規則重新配置回來。如果這樣做,那付出的代價可真是太大了!

所以,通過設置ACL步長,為規則之間留下一定的空間,後續再想插入新的規則,就非常輕鬆了。


分享到:


相關文章: