當前位置:首頁 > 百科知識 > 通信 > 正文

ACL

設備可訪問的現(xiàn)有服務和信息列表
abel-module="para" style="word-wrap: break-word; margin-bottom: 15px; white-space: normal; text-transform: none; word-spacing: 0px; zoom: 1; color: rgb(51,51,51); font: 14px/24px arial, 宋體, sans-serif; widows: 1; letter-spacing: normal; background-color: rgb(255,255,255); text-indent: 28px; -webkit-text-stroke-width: 0px">訪問控制列表(Access Control List,ACL) 是路由器交換機接口的指令列表,用來控制端口進出的數(shù)據包。ACL適用于所有的被路由協(xié)議,如IP、IPX、AppleTalk等。
信息點間通信和內外網絡的通信都是企業(yè)網絡中必不可少的業(yè)務需求,為了保證內網的安全性,需要通過安全策略來保障非授權用戶只能訪問特定的網絡資源,從而達到對訪問進行控制的目的。簡而言之,ACL可以過濾網絡中的流量,是控制訪問的一種網絡技術手段。
配置ACL后,可以限制網絡流量,允許特定設備訪問,指定轉發(fā)特定端口數(shù)據包等。如可以配置ACL,禁止局域網內的設備訪問外部公共網絡,或者只能使用FTP服務。ACL既可以在路由器上配置,也可以在具有ACL功能的業(yè)務軟件上進行配置。
ACL是物聯(lián)網中保障系統(tǒng)安全性的重要技術,在設備硬件層安全基礎上,通過對在軟件層面對設備間通信進行訪問控制,使用可編程方法指定訪問規(guī)則,防止非法設備破壞系統(tǒng)安全,非法獲取系統(tǒng)數(shù)據。

 

rosoft YaHei', SimHei, Verdana; padding-left: 0px; clear: both; margin: 35px 0px 15px -30px; border-left: rgb(79,156,238) 12px solid; widows: 1; display: block; letter-spacing: normal; padding-right: 0px; text-indent: 0px; -webkit-text-stroke-width: 0px">作用

ACL可以限制網絡流量、提高網絡性能。例如,ACL可以根據數(shù)據包的協(xié)議,指定數(shù)據包的優(yōu)先級。
ACL提供對通信流量的控制手段。例如,ACL可以限定或簡化路由更新信息的長度,從而限制通過路由器某一網段的通信流量。
ACL是提供網絡安全訪問的基本手段。ACL允許主機A訪問人力資源網絡,而拒絕主機B訪問。
ACL可以在路由器端口處決定哪種類型的通信流量被轉發(fā)或被阻塞。例如,用戶可以允許E-mail通信流量被路由,拒絕所有的Telnet通信流量。
例如:某部門要求只能使用 WWW 這個功能,就可以通過ACL實現(xiàn); 又例如,為了某部門的保密性,不允許其訪問外網,也不允許外網訪問它,就可以通過ACL實現(xiàn)。

3P原則

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

執(zhí)行過程

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

ACL分類

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

基于時間

概述

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

配置

前提:在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發(fā)起telnet會話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ...
% Destination unreachable; gateway or host down
r2#
說明:可以看到,在規(guī)定的時間范圍內,R2向R4發(fā)起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#
說明:可以看到,在規(guī)定的時間范圍內,除了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發(fā)起telnet會話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
說明:在時間范圍之外,所限制的流量被放開。

正確放置

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

定義規(guī)范

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

常見問題

  1. “ACL 的最后一條語句都是隱式拒絕語句” 是什么意思?
每個 ACL 的末尾都會自動插入一條隱含的 deny 語句,雖然ACL中看不到這條語句,它仍起作用。隱含的 deny 語句會阻止所有流量,以防不受歡迎的流量意外進入網絡。
  1. 配置ACL后為什么沒有生效?
在創(chuàng)建訪問控制列表之后,必須將其應用到某個接口才可開始生效。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:可使用的協(xié)議,包括IP、ICMP、IGRP、EIGRP、OSPF等。
destination destination-wild:目的IP地址,格式與源IP地址相同。
protocol-specific options:協(xié)議制定的選項。
log:記錄有關數(shù)據報進入訪問列表的信息。

內容來自百科網