1. 程式人生 > >ACL(訪問控制列表)基礎篇

ACL(訪問控制列表)基礎篇

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

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

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

 說到這,大家一定迫不及待的想看看ACL

長啥模樣。話不多說,先上圖!

圍繞這張ACL結構圖,一一介紹ACL的基本概念。

1、ACL分類

   首先,圖中是一個數字型ACLACL編號為2000。這類似於人類的身份證號,用於唯一標識自己的身份。當然,人類的身份證上不僅有身份證編號,還有每個人自己的名字。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屬於基本ACLACL 3998屬於高階ACL高階ACL可以定義比基本ACL更準確、更豐富、更靈活的規則,所以高階ACL的功能更加強大

ACL類別

規則定義描述

編號範圍

基本ACL

僅使用報文的

IP地址、分片標記和時間段資訊來定義規則。

20002999

高階ACL

既可使用報文的源IP地址,也可使用目的地址、IP優先順序、ToSDSCPIP協議型別、ICMP型別、TCP源埠/目的埠、UDP源埠/目的埠號等來定義規則。

30003999

二層ACL

可根據報文的乙太網幀頭資訊來定義規則,如根據源MAC地址、目的MAC地址、以太幀協議型別等。

40004999

使用者自定義ACL

可根據報文偏移位置和偏移量來定義規則。

50005999

使用者ACL

既可使用IPv4報文的源IP地址或UCLUser Control List)組,也可使用目的地址或目的UCLIP協議型別、ICMP型別、TCP源埠/目的埠、UDP源埠/目的埠號等來定義規則。

60009999

2、ACL規則

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

  每條規則都擁有自己的規則編號,如5104294967294。這些編號,可以自行配置,也可以由系統自動分配。那麼系統是怎樣自動分配規則編號的?

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

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

  其實,ACL提供了極其豐富的匹配選項。你可以選擇二層乙太網幀頭資訊(如源MAC、目的MAC、以太幀協議型別)作為匹配選項,也可以選擇三層報文資訊(如源地址、目的地址、協議型別)作為匹配選項,還可以選擇四層報文資訊(如TCP/UDP埠號)等等等等。

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

3、步長

  最後,為大家介紹ACL中一個非常重要的概念——步長。瞭解了這個知識點,上文中遺留的問題“系統怎樣自動分配規則編號”便迎刃而解了。

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

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

  有圖為證~

 

ACL的預設步長值是5。通過display acl acl-number命令,可以檢視ACL規則、步長等配置資訊。通過step step命令,可以修改ACL步長值。

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

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

先來看個例子。

假設,一條ACL中,已包含了下面三條規則51015。如果你希望源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.11.1.1.2的報文,會在匹配上編號較小的rule 5rule 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 10rule 15之間插入rule 11後,源IP地址為1.1.1.3的報文,就可以先命中rule 11而停止繼續往下匹配,所以該報文將會被系統禁止通過。

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

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

      回顧一下全文,知識點主要包括:ACL是什麼、有什麼作用、分哪幾類、規則是如何定義的、步長的含義以及步長的作用