什么是ACL?
訪問控制列表簡稱為ACL,訪問控制列表使用包過濾技術,在路由器上讀取第三層及第四層包頭中的信息如源地址,目的地址,源端口,目的端口等,根據預先定義好的規則對包進行過濾,從而達到訪問控制的目的。
ACL的原理
對路由器來說有兩個方向
出:已經經路由器的處理,正離開路由器接口的數據包
入:已經到達路由器接口的數據包,將被路由器處理
順序為:自下而上,依次匹配。 默認為拒絕
ACL的使用原則
1、最小特權原則
只給受控對象完成任務所必須的最小的權限。也就是說被控制的總規則是各個規則的交集,只滿足部分條件的是不容許通過規則的。
2、最靠近受控對象原則
所有的網絡層訪問權限控制。也就是說在檢查規則時是采用自上而下在ACL中一條條檢測的,只要發現符合條件了就立刻轉發,而不繼續檢測下面的ACL語句。
3、默認丟棄原則
在CISCO路由交換設備中默認最后一句為ACL中加入了DENY ANY ANY,也就是丟棄所有不符合條件的數據包。
一、標准訪問列表
訪問控制列表ACL分很多種,不同場合應用不同種類的ACL。其中最簡單的就是標准訪問控制列表,標准訪問控制列表是通過使用IP包中的源IP地址進行過濾,使用訪問控制列表號1到99來創建相應的ACL。
它的具體格式:
access-list access-list-number [permit | deny ] [sourceaddress][wildcard-mask]
access-list-number 為1-99 或者 1300-1999之間的數字,這個是訪問列表號。
拿下面這個例子來具體說說
一台路由器,一台PC和一台服務器。分別給PC和服務器配置好IP地址和默認網關。他們分別在不同的網段,配置好服務器是PC和服務器ping通。目的是拒絕192.168.1.0網段的主機從f0/0出去。
配置步驟:
access-list 10 deny 192.168.1.0 0.0.0.255 //丟棄所有來自源地址192.168.1.0的數據包
access-list 10 permit any //使除了1.0網段之外的其他網段可通 (這一步非常重要)
int f0/0 //進入相應端口
ip access-list 10 out //將ACL應用至端口,如無此步驟,那么一切都沒用
可見路由器將來自192.168.1.0 的數據拒絕訪問了。
有值得注意的地方:
1.標准ACL應配置盡量靠近目的端
2.一定要加permit any使其他網絡可通
3.訪問列表使從上到下逐條進行匹配的,所以在設置訪問列表的時候要注意順序。如果從第一條匹配到最后一條還是不知道怎么做,路由器就會丟棄這個數據包(默認),也就是為什么要加permit any。
刪除已建立的標准ACL
no access-list + [access-list number]
對於標准的ACL 來說,不能刪除單個ACL語句,只能刪除整個ACL。
二、擴展訪問控制列表
上面我們提到的標准訪問控制列表是基於IP地址進行過濾的,是最簡單的ACL。那么如果我們希望將過濾細到端口怎么辦呢?或者希望對數據包的目的地址進行過濾。這時候就需要使用擴展訪問控制列表了。使用擴展IP訪問列表可以有效的容許用戶訪問物理LAN而並不容許他使用某個特定服務(例如WWW,FTP等)。擴展訪問控制列表使用的ACL號為100到199。
擴展訪問控制列表的格式:
access-list access-list number {permit/deny} protocol +源地址+反碼 +目標地址+反碼+operator operan(It小於,gt大於,eq等於,neq不等於.具體可?)+端口號
注意事項:
1.擴展ACL的列表號范圍使100-199或2000-2699
2.因為默認情況下,每個訪問控制列表的末尾隱含deny all,所以在每個擴展訪問控制列表里面必須有:access-list number permit ip any any
3.不同的服務要使用不同的協議,比如TFTP使用的是UDP協議
例如路由器連接了兩個網段(可參照上面的拓撲),禁止192.168.1.0的PC訪問192.168.2.0的PC包括服務器,不過唯獨可以訪問192.168.2.10的www服務(端口號為80),而其它服務不能訪問。
配置如下:
access-list 101 permit tcp any 192.168.2.10 0.0.0.255 eq 80 //設置ACL101,允許源地址為任意ip,目的地址為192.168.2.10主機的80端口。思科默認deny 阿拉蕾,此處只寫這句就夠了。
int f0/0 //進入端口
ip access-group 101 out //將ACL101應用到端口
刪除和標准ACL一樣,不能單條刪除,只能刪除整個ACL
三、命名訪問控制列表
不管是標准訪問控制列表還是擴展訪問控制列表都有一個弊端,那就是當設置好ACL的規則后發現其中的某條有問題,希望進行修改或刪除的話只能將全部ACL信息都刪除。也就是說修改一條或刪除一條都會影響到整個ACL列表。這一個缺點影響了我們的工作,為我們帶來了繁重的負擔。不過我們可以用基於名稱的訪問控制列表來解決這個問題。
例如:
ip access-list [standard/extened] access-list-name
ip access-list standard killer //建立一個名為killer的標准訪問控制列表
使用方法:
ip access-list standard + name
11 permit host + ip //默認第一條是10 ,第二條20
deny any
刪除命名ACL,可以向之前的ACL插入ACL,也可以刪除單條ACL
ip access-list standard benet
no 11
使用show access-list 可查看配置的ACL信息