當(dāng)前位置:首頁(yè) > 百科知識(shí) > 通信 > 正文

ACL

設(shè)備可訪問的現(xiàn)有服務(wù)和信息列表
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) 是路由器交換機(jī)接口的指令列表,用來控制端口進(jìn)出的數(shù)據(jù)包。ACL適用于所有的被路由協(xié)議,如IP、IPX、AppleTalk等。
信息點(diǎn)間通信和內(nèi)外網(wǎng)絡(luò)的通信都是企業(yè)網(wǎng)絡(luò)中必不可少的業(yè)務(wù)需求,為了保證內(nèi)網(wǎng)的安全性,需要通過安全策略來保障非授權(quán)用戶只能訪問特定的網(wǎng)絡(luò)資源,從而達(dá)到對(duì)訪問進(jìn)行控制的目的。簡(jiǎn)而言之,ACL可以過濾網(wǎng)絡(luò)中的流量,是控制訪問的一種網(wǎng)絡(luò)技術(shù)手段。
配置ACL后,可以限制網(wǎng)絡(luò)流量,允許特定設(shè)備訪問,指定轉(zhuǎn)發(fā)特定端口數(shù)據(jù)包等。如可以配置ACL,禁止局域網(wǎng)內(nèi)的設(shè)備訪問外部公共網(wǎng)絡(luò),或者只能使用FTP服務(wù)。ACL既可以在路由器上配置,也可以在具有ACL功能的業(yè)務(wù)軟件上進(jìn)行配置。
ACL是物聯(lián)網(wǎng)中保障系統(tǒng)安全性的重要技術(shù),在設(shè)備硬件層安全基礎(chǔ)上,通過對(duì)在軟件層面對(duì)設(shè)備間通信進(jìn)行訪問控制,使用可編程方法指定訪問規(guī)則,防止非法設(shè)備破壞系統(tǒng)安全,非法獲取系統(tǒng)數(shù)據(jù)。

 

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

3P原則

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

執(zhí)行過程

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

ACL分類

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

基于時(shí)間

概述

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

配置

前提:在R1路由器上需要提前配置好正確的時(shí)間,此步驟省略。
  1. 配置time-range
r1(config)#time-range TELNET
r1(config-time-range)#periodic weekdays 9:00 to 15:00
說明:定義的時(shí)間范圍為每周一到周五的9:00 to 15:00
  1. 配置ACL
說明:配置R1在上面的時(shí)間范圍內(nèi)拒絕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. 應(yīng)用ACL
r1(config)#int f0/1
r1(config-if)#ip access-group 150 out
  1. 測(cè)試時(shí)間范圍內(nèi)的流量情況
(1)查看當(dāng)前R1的時(shí)間
r1#sh clock
14:34:33.002 GMT Thu Oct 1 2009
r1#
說明:當(dāng)前時(shí)間為周四14:34,即在所配置的時(shí)間范圍內(nèi)。
(2)測(cè)試R2向R4發(fā)起telnet會(huì)話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ...
% Destination unreachable; gateway or host down
r2#
說明:可以看到,在規(guī)定的時(shí)間范圍內(nèi),R2向R4發(fā)起telnet會(huì)話是被拒絕的。
(3)測(cè)試除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ī)定的時(shí)間范圍內(nèi),除了telnet之外,其它流量不受限制。
(4)測(cè)試除R2之外的設(shè)備telnet情況
r3#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
說明:可以看到,除R2之外,其它設(shè)備telnet并不受限制。
  1. 測(cè)試時(shí)間范圍外的流量情況
(1)查看當(dāng)前R1的時(shí)間
r1#sh clock
15:01:15.206 GMT Thu Oct 1 2009
r1#
說明:當(dāng)前時(shí)間為周四15:01,即在所配置的時(shí)間范圍之外。
(2)測(cè)試R2向R4發(fā)起telnet會(huì)話
r2#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
說明:在時(shí)間范圍之外,所限制的流量被放開。

正確放置

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

定義規(guī)范

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

常見問題

  1. “ACL 的最后一條語(yǔ)句都是隱式拒絕語(yǔ)句” 是什么意思?
每個(gè) ACL 的末尾都會(huì)自動(dòng)插入一條隱含的 deny 語(yǔ)句,雖然ACL中看不到這條語(yǔ)句,它仍起作用。隱含的 deny 語(yǔ)句會(huì)阻止所有流量,以防不受歡迎的流量意外進(jìn)入網(wǎng)絡(luò)。
  1. 配置ACL后為什么沒有生效?
在創(chuàng)建訪問控制列表之后,必須將其應(yīng)用到某個(gè)接口才可開始生效。ACL 控制的對(duì)象是進(jìn)出接口的流量。

命令格式

access-list命令
(1)標(biāo)準(zhǔn)訪問列表
access-list access-list-number { permit | deny } {source [source-wildcard] | any}
命令解釋如下。
access-list:訪問列表命令。
access-list-number:訪問列表號(hào)碼,值為1~99.
permit:允許。
deny:拒絕。
source:源IP地址。
source-wildcard:源IP地址的通配符。
(2)擴(kuò)展訪問列表
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:訪問列表號(hào)碼,值為100~199.
protocol \ protocol-keyword:可使用的協(xié)議,包括IP、ICMP、IGRP、EIGRP、OSPF等。
destination destination-wild:目的IP地址,格式與源IP地址相同。
protocol-specific options:協(xié)議制定的選項(xiàng)。
log:記錄有關(guān)數(shù)據(jù)報(bào)進(jìn)入訪問列表的信息。

內(nèi)容來自百科網(wǎng)