ACL

訪問控制列表(Access Control List,ACL) 是路由器交換機接口的指令列表,用來控制連線埠進出的數據包。ACL適用於所有的被路由協定,如IP、IPX、AppleTalk等。

信息點間通信和內外網路的通信都是企業網路中必不可少的業務需求,為了保證區域網路的安全性,需要通過安全策略來保障非授權用戶只能訪問特定的網路資源,從而達到對訪問進行控制的目的。簡而言之,ACL可以過濾網路中的流量,是控制訪問的一種網路技術手段。

配置ACL後,可以限制網路流量,允許特定設備訪問,指定轉發特定連線埠數據包等。如可以配置ACL,禁止區域網路內的設備訪問外部公共網路,或者只能使用FTP服務。ACL既可以在路由器上配置,也可以在具有ACL功能的業務軟體上進行配置。

ACL是物聯網中保障系統安全性的重要技術,在設備硬體層安全基礎上,通過對在軟體層面對設備間通信進行訪問控制,使用可程式方法指定訪問規則,防止非法設備破壞系統安全,非法獲取系統數據。

基本介紹

  • 中文名:訪問控制列表
  • 外文名:Access Control List
  • 定義:設備可訪問的現有服務和信息列表
  • 主要作用:限制網路流量,提高網路性能
  • 原則:3P原則
作用,3P原則,執行過程,ACL分類,基於時間,概述,配置,正確放置,定義規範,常見問題,命令格式,

作用

ACL幫助用戶定義一組許可權規則,對於一組特定的數據說明誰可以訪問並且何時可以訪問。
ACL可以限制網路流量、提高網路性能。例如,ACL可以根據數據包的協定,指定數據包的優先權。
ACL提供對通信流量的控制手段。例如,ACL可以限定或簡化路由更新信息的長度,從而限制通過路由器某一網段的通信流量。
ACL是提供網路安全訪問的基本手段。ACL允許主機A訪問人力資源網路,而拒絕主機B訪問。
ACL可以在路由器連線埠處決定哪種類型的通信流量被轉發或被阻塞。例如,用戶可以允許E-mail通信流量被路由,拒絕所有的Telnet通信流量。
例如:某部門要求只能使用 WWW 這個功能,就可以通過ACL實現; 又例如,為了某部門的保密性,不允許其訪問外網,也不允許外網訪問它,就可以通過ACL實現。

3P原則

記住 3P 原則,您便記住了在路由器上套用 ACL 的一般規則。您可以為每種協定 (per protocol)、每個方向 (per direction)、每個接口 (per interface) 配置一個 ACL:
每種協定一個 ACL:要控制接口上的流量,必須為接口上啟用的每種協定定義相應的 ACL。
每個方向一個 ACL :一個 ACL 只能控制接口上一個方向的流量。要控制入站流量和出站流量,必須分別定義兩個 ACL。
每個接口一個 ACL :一個 ACL 只能控制一個接口(例如快速乙太網0/0)上的流量。
ACL 的編寫可能相當複雜而且極具挑戰性。每個接口上都可以針對多種協定和各個方向進行定義。示例中的路由器有兩個接口配置了 IP、AppleTalk 和 IPX。該路由器可能需要 12 個不同的 ACL — 協定數 (3) 乘以方向數 (2),再乘以連線埠數 (2)。

執行過程

一個連線埠執行哪條ACL,這需要按照列表中的條件語句執行順序來判斷。如果一個數據包的報頭跟表中某個條件判斷語句相匹配,那么後面的語句就將被忽略,不再進行檢查。
數據包只有在跟第一個判斷條件不匹配時,它才被交給ACL中的下一個條件判斷語句進行比較。如果匹配(假設為允許傳送),則不管是第一條還是最後一條語句,數據都會立即傳送到目的接口。如果所有的ACL判斷語句都檢測完畢,仍沒有匹配的語句出口,則該數據包將視為被拒絕而被丟棄。這裡要注意,ACL不能對本路由器產生的數據包進行控制。
如果設備使用了TCAM,比如aute U3052交換機,那么所有的ACL是並行執行的。舉例來說,如果一個連線埠設定了多條ACL規則,並不是逐條匹配,而是一次執行所有ACL語句。

ACL分類

目前有三種主要的ACL:標準ACL、擴展ACL及命名ACL。其他的還有標準MAC ACL、時間控制ACL、以太協定 ACL 、IPv6 ACL等。
標準的ACL使用 1 ~ 99 以及1300~1999之間的數字作為表號,擴展的ACL使用 100 ~ 199以及2000~2699之間的數字作為表號。
標準ACL可以阻止來自某一網路的所有通信流量,或者允許來自某一特定網路的所有通信流量,或者拒絕某一協定簇(比如IP)的所有通信流量。
擴展ACL比標準ACL提供了更廣泛的控制範圍。例如,網路管理員如果希望做到“允許外來的Web通信流量通過,拒絕外來的FTP和Telnet等通信流量”,那么,他可以使用擴展ACL來達到目的,標準ACL不能控制這么精確。
在標準與擴展訪問控制列表中均要使用表號,而在命名訪問控制列表中使用一個字母或數字組合的字元串來代替前面所使用的數字。使用命名訪問控制列表可以用來刪除某一條特定的控制條目,這樣可以讓我們在使用過程中方便地進行修改。 在使用命名訪問控制列表時,要求路由器的IOS在11.2以上的版本,並且不能以同一名字命名多個ACL,不同類型的ACL也不能使用相同的名字。
隨著網路的發展和用戶要求的變化,從IOS 12.0開始,思科(CISCO)路由器新增加了一種基於時間的訪問列表。通過它,可以根據一天中的不同時間,或者根據一星期中的不同日期,或二者相結合來控制網路數據包的轉發。這種基於時間的訪問列表,就是在原來的標準訪問列表和擴展訪問列表中,加入有效的時間範圍來更合理有效地控制網路。首先定義一個時間範圍,然後在原來的各種訪問列表的基礎上套用它。
基於時間訪問列表的設計中,用time-range 命令來指定時間範圍的名稱,然後用absolute命令,或者一個或多個periodic命令來具體定義時間範圍。

基於時間

概述

一個很通常的需求,就是在某個公司里,有時希望限制員工在某個時間範圍內才可以訪問網頁,即HTTP服務,或其它服務,在時間範圍之外,就不能訪問,那么這樣的需求,就可以通過配置基於時間的ACL來實現。
要通過ACL來限制用戶在規定的時間範圍內訪問特定的服務,首先設備上必須配置好正確的時間。在相應的時間要允許相應的服務,這樣的命令,在配置ACL時,是正常配置的,但是,如果就將命令正常配置之後,默認是在所有時間內允許的,要做到在相應時間內允許,還必須為該命令加上一個時間限制,這樣就使得這條ACL命令只在此時間範圍內才能生效。而要配置這樣的時間範圍,是通過配置time-range來實現的,在time-range中定義好時間,再將此time-range跟在某ACL的條目之後,那么此條目就在該時間範圍內起作用,其它時間是不起作用的。
在定義time-range時,常用的時間簡單分為兩種,第一種叫做絕對時間(absolute),即這個時間只生效一次,比如2010年1月1月15:00;另一種時間叫做周期時間(periodic),即這個時間是會多次重複的,比如每周一,或者每周一到周五。

配置

ACL
前提:在R1路由器上需要提前配置好正確的時間,此步驟省略。
  1. 配置time-range
r1(config)#time-range TELNET
r1(config-time-range)#periodic weekdays 9:00 to 15:00
說明:定義的時間範圍為每周一到周五的9:00 to 15:00
  1. 配置ACL
說明:配置R1在上面的時間範圍內拒絕R2到R4的telnet,其它流量全部通過。
r1(config)#access-list 150 deny tcp host 10.1.1.2 any eq 23 time-range TELNET
r1(config)#access-list 150 permit ip any any
  1. 套用ACL
r1(config)#int f0/1
r1(config-if)#ip access-group 150 out
  1. 測試時間範圍內的流量情況
(1)查看當前R1的時間
r1#sh clock
14:34:33.002 GMT Thu Oct 1 2009
r1#
說明:當前時間為周四14:34,即在所配置的時間範圍內。
(2)測試R2向R4發起telnet會話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ...
% Destination unreachable; gateway or host down
r2#
說明:可以看到,在規定的時間範圍內,R2向R4發起telnet會話是被拒絕的。
(3)測試除telnet外的其它流量
r2#ping 14.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 14.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
r2#
說明:可以看到,在規定的時間範圍內,除了telnet之外,其它流量不受限制。
(4)測試除R2之外的設備telnet情況
r3#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
說明:可以看到,除R2之外,其它設備telnet並不受限制。
  1. 測試時間範圍外的流量情況
(1)查看當前R1的時間
r1#sh clock
15:01:15.206 GMT Thu Oct 1 2009
r1#
說明:當前時間為周四15:01,即在所配置的時間範圍之外。
(2)測試R2向R4發起telnet會話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
說明:在時間範圍之外,所限制的流量被放開。

正確放置

ACL通過過濾數據包並且丟棄不希望抵達目的地的數據包來控制通信流量。然而,網路能否有效地減少不必要的通信流量,這還要取決於網路管理員把ACL放置在哪個地方。
假設在的一個運行TCP/IP協定的網路環境中,網路只想拒絕從RouterA的T0接口連線的網路到RouterD的E1接口連線的網路的訪問,即禁止從網路1到網路2的訪問。
根據減少不必要通信流量的通行準則,網管員應該儘可能地把ACL放置在靠近被拒絕的通信流量的來源處,即RouterA上。如果網管員使用標準ACL來進行網路流量限制,因為標準ACL只能檢查源IP位址,所以實際執行情況為:凡是檢查到源IP位址和網路1匹配的數據包將會被丟掉,即網路1到網路2、網路3和網路4的訪問都將被禁止。由此可見,這個ACL控制方法不能達到網管員的目的。同理,將ACL放在RouterB和RouterC上也存在同樣的問題。只有將ACL放在連線目標網路的RouterD上(E0接口),網路才能準確實現網管員的目標。由此可以得出一個結論: 標準ACL要儘量靠近目的端。
網管員如果使用擴展ACL來進行上述控制,則完全可以把ACL放在RouterA上,因為擴展ACL能控制源地址(網路1),也能控制目的地址(網路2),這樣從網路1到網路2訪問的數據包在RouterA上就被丟棄,不會傳到RouterB、RouterC和RouterD上,從而減少不必要的網路流量。因此,我們可以得出另一個結論:擴展ACL要儘量靠近源端。ACL的主要的命令  命令描述access-list 定義訪問控制列表參數ip access-group 指派一個訪問控制列表到一個接口ip access-list extended 定義一個擴展訪問控制列表Remark 注釋一個訪問控制列表show ip access-list 顯示已配置的訪問控制列表。

定義規範

(1)ACL的列表號指出了是哪種協定的ACL。各種協定有自己的ACL,而每個協定的ACL又分為標準ACL和擴展ACL。這些ACL是通過ACL列表號區別的。如果在使用一種訪問ACL時用錯了列表號,那么就會出錯誤。
(2)一個ACL的配置是每協定、每接口、每方向的。路由器的一個接口上每一種協定可以配置進方向和出方向兩個ACL。也就是說,如果路由器上啟用了IP和IPX兩種協定棧,那么路由器的一個接口上可以配置IP、IPX兩種協定,每種協定進出兩個方向,共四個ACL。
(3)ACL的語句順序決定了對數據包的控制順序。在ACL中各描述語句的放置順序是很重要的。當路由器決定某一數據包是被轉發還是被阻塞時,會按照各項描述語句在ACL中的順序,根據各描述語句的判斷條件,對數據報進行檢查,一旦找到了某一匹配條件就結束比較過程,不再檢查以後的其他條件判斷語句。
(4)最有限制性的語句應該放在ACL語句的首行。把最有限制性的語句放在ACL語句的首行或者語句中靠近前面的位置上,把“全部允許”或者“全部拒絕”這樣的語句放在末行或接近末行,可以防止出現諸如本該拒絕(放過)的數據包被放過(拒絕)的情況。
(5)新的表項只能被添加到ACL的末尾,這意味著不可能改變已有訪問控制列表的功能。如果必須改變,只有先刪除已存在的ACL,然後創建一個新ACL,將新ACL套用到相應的接口上。
(6)在將ACL套用到接口之前,一定要先建立ACL。首先在全局模式下建立ACL,然後把它套用在接口的出方向或進方向上。在接口上套用一個不存在的ACL是不可能的。
(7)ACL語句不能被逐條的刪除,只能一次性刪除整個ACL。
(8)在ACL的最後,有一條隱含的“全部拒絕”的命令,所以在 ACL里一定至少有一條“允許”的語句。
(9)ACL只能過濾穿過路由器的數據流量,不能過濾由本路由器上發出的數據包。
(10)在路由器選擇進行以前,套用在接口進入方向的ACL起作用。
(11)在路由器選擇決定以後,套用在接口離開方向的ACL起作用。

常見問題

  1. “ACL 的最後一條語句都是隱式拒絕語句” 是什麼意思?
每個 ACL 的末尾都會自動插入一條隱含的 deny 語句,雖然ACL中看不到這條語句,它仍起作用。隱含的 deny 語句會阻止所有流量,以防不受歡迎的流量意外進入網路。
  1. 配置ACL後為什麼沒有生效?
在創建訪問控制列表之後,必須將其套用到某個接口才可開始生效。ACL 控制的對象是進出接口的流量。

命令格式

access-list命令
(1)標準訪問列表
access-list access-list-number { permit | deny } {source [source-wildcard] | any}
命令解釋如下。
access-list:訪問列表命令。
access-list-number:訪問列表號碼,值為1~99.
permit:允許。
deny:拒絕。
source:源IP位址。
source-wildcard:源IP位址的通配符。
(2)擴展訪問列表
access-list access-list-number { permit | deny } { protocol \ protocol-keyword } { source [ source-wildcard ] | any } { destination destination-wildcard } | any }[protocol-specific options][log]
命令解釋如下。
access-list-number:訪問列表號碼,值為100~199.
protocol \ protocol-keyword:可使用的協定,包括IP、ICMP、IGRP、EIGRP、OSPF等。
destination destination-wild:目的IP位址,格式與源IP位址相同。
protocol-specific options:協定制定的選項。
log:記錄有關數據報進入訪問列表的信息。

相關詞條

熱門詞條

聯絡我們