通路控制清單簡稱為ACL,通路控制清單使用包過濾技術,在路由器上讀取第三層及第四層標頭中的資訊如源位址,目的位址,源端口,目的端口等,根據預先定 義好的規則對包進行過濾,進而達到通路控制的目的。該技術初期僅在路由器上支援,近些年來已經擴充到三層交換機,部分最新的二層交換機也開始提供ACL的 支援了。
通路控制清單的原理:
1、對路由器接口來說有兩個方向:
入:已經到達路由器接口的資料包,但是還沒有被路由器處理。
出:已經 經過路由器的處理,正要離開路由器接口的資料包
2、比對順序為:"自上而下,依次比對"。預設為拒絕
3、通路控制清單的類型:
- 标準通路控制清單:一般應用在out出站接口。建議配置在離目标端最近的路由上
- 擴充通路控制清單:配置在離源端最近的路由上,一般應用在入站in方向
- 命名通路控制清單:允許在标準和擴充通路清單中使用名稱代替表号
4、通路控制清單使用原則
(1)、最小特權原則
隻給受控對象完成任務所必須的最小的權限。也就是說被控制的總規則是各個規則的交集,隻滿足部分條件的是不容許通過規則的。
(2)、預設丢棄原則
在CISCO路由交換裝置中預設最後一句為ACL中加入了DENY ANY ANY,也就是丢棄所有不符合條件的資料包。這一點要特别注意,雖然我們可以修改這個預設,但未改前一定要引起重視。
(3)、最靠近受控對象原則
所有的網絡層通路權限控制。也就是說在檢查規則時是采用自上而下在ACL中一條條檢測的,隻要發現符合條件了就立刻轉發,而不繼續檢測下面的ACL語句。
由于ACL是使用包過濾技術來實作的,過濾的依據又僅僅隻是第三層和第四層標頭中的部分資訊,這種技術具有一些固有的局限性,如無法識别到具體的人,無法 識别到應用内部的權限級别等。是以,要達到端到端的權限控制目的,需要和系統級及應用級的通路權限控制結合使用。
下面分别介紹3種類型的通路控制清單
一、标準通路清單
通路控制清單ACL分很多種,不同場合應用不同種類的ACL.其中最簡單的就是标準通路控制清單,标準通路控制清單是通過使用IP包中的源IP位址進行過濾,使用通路控制清單号1到99來建立相應的ACL。
它的具體格式:
access-list access-list-number [permit | deny ] [sourceaddress][wildcard-mask]
access-list-number 為1-99 或者 1300-1999之間的數字,這個是通路清單号。
例如:
- access-list 10 deny host 192.168.1.1 //将所有來自192.168.1.1位址的資料包丢棄。
當然我們也可以用網段來表示,對某個網段進行過濾。指令如下:
- access-list 10 deny 192.168.1.0 0.0.0.255
通過上面的配置将來自192.168.1.0/24的所有計算機資料包進行過濾丢棄。為什麼後頭的子網路遮罩表示的是0.0.0.255呢?這是因為CISCO規定在ACL中用反向掩瑪表示子網路遮罩,反向掩碼為0.0.0.255的代表他的子網路遮罩為255.255.255.0。
對于标準通路控制清單來說,預設的指令是HOST,也就是說access-list 10 deny 192.168.1.1表示的是拒絕192.168.1.1這台主機資料包通訊,可以省去我們輸入host指令。
标準通路清單配置執行個體:
- R1(config)#access-list 10 deny 192.168.100.0 0.0.0.255
- R1(config)#access-list 10 permit any
- R1(config)#int fa0/0.1
- R1(config-subif)#ip access-group 10 out
說明:
阻止來自網段192.168.100.0的機器從int fa0/0.1端口出去,通路清單在配置好之後,要把它在端口上應用,否則配置了還是無效的。
注意事項:
1、标準通路清單,一般來說配置盡量靠近目的端。
2、配置的第二條指令中的any相當于 0.0.0.0 255.255.255.255
3、一定要加pemint any,使其他的網絡可通。
4、通路清單是從上到下一條一條進行比對的,是以在設定通路清單的時候要注意順序。如果從第一條比對到最後一條還是不知道要怎麼做,路由器就會丢棄這個資料包,也就是為什麼上面的例子中上一定要加permit any.
5、如果隻阻止一個主機,那可以用 host 192.168.1.12 或者 192.168.1.12 0.0.0.0,這兩種配置是等價的。
删除已建立的标準ACL
R1(config)#no access-list <access-list number>
對标準的ACL來說,不能删除單個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、擴充通路控制清單号的範圍是100-199或者2000-2699。
2、不同的服務要使用不同的協定,比如TFTP使用的是UDP協定。
3、因為預設情況下,每個通路控制清單的末尾隐含deny all,是以在每個擴充通路控制清單裡面必須有:access-list 110 permit ip any any 。
4、更多注意事項可以參考上面标準通路控制清單部分。
例如:
- access-list 101 deny tcp any host 192.168.1.1 eq www //将所有主機通路192.168.1.1這個位址網頁服務(WWW)TCP連接配接的資料包丢棄。
同樣在擴充通路控制清單中也可以定義過濾某個網段,當然和标準通路控制清單一樣需要我們使用反向掩碼定義IP位址後的子網路遮罩。
擴充通路控制清單配置執行個體:
- R2(config)#access-list 110 deny tcp any host 192.168.100.10 eq www
- R2(config)#access-list 110 deny tcp any host 192.168.100.10 eq ftp
- R2(config)#int fa0/0
- R2(config-if)#ip access-group 110 out
上面配置的含義是拒絕通路192.168.100.10的www和ftp服務
執行個體二:
路由器連接配接了二個網段,分别為172.16.4.0/24,172.16.3.0/24.在172.16.4.0/24網段中有一台伺服器提供WWW服務,IP位址為172.16.4.13。
要求:禁止172.16.3.0的計算機通路172.16.4.0的計算機,包括那台伺服器,不過惟獨可以通路172.16.4.13上的WWW服務,而其他服務不能通路。
路由器配置指令:
- access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www //設定ACL101,容許源位址為任意IP,目的位址為172.16.4.13主機的80端口即WWW服務。由于CISCO預設添加DENY ANY的指令,是以ACL隻寫此一句即可。
進入相應端口
- ip access-group 101 out //将ACL101應用到端口
設定完畢後172.16.3.0的計算機就無法通路172.16.4.0的計算機了,就算是伺服器172.16.4.13開啟了FTP服務也無法通路,惟獨可以通路的就是172.16.4.13的WWW服務了。
删除已建立的擴充标準ACL
删除和标準一樣,不能單條删除,隻能删除整個acl
總結:擴充ACL功能很強大,他可以控制源IP,目的IP,源端口,目的端口等,能實作相當精細的控制,擴充ACL不僅讀取IP標頭的源位址/目的位址,還要讀取第四層標頭中的源端口和目的端口的IP.不過他存在一個缺點,那就是在沒有硬體ACL加速的情況下,擴充ACL會消耗大量的路由器CPU資源。是以當使用中低檔路由器時應盡量減少擴充ACL的條目數,将其簡化為标準ACL或将多條擴充ACL合一是最有效的方法。
三、命名通路控制清單
不管是标準通路控制清單還是擴充通路控制清單都有一個弊端,那就是當設定好ACL的規則後發現其中的某條有問題,希望進行修改或删除的話隻能将全部ACL資訊都删除。也就是說修改一條或删除一條都會影響到整個ACL清單。這一個缺點影響了我們的工作,為我們帶來了繁重的負擔。不過我們可以用基于名稱的通路控制清單來解決這個問題。
命名通路控制清單格式:
ip access-list {standard/extended} <access-list-name>(可有字母,數字組合的字元串)
例如:
- ip access-list standard softer //建立一個名為softer的标準通路控制清單。
命名通路控制清單使用方法:
- router(config)#ip access-list standard +自定義名
- router(config-std-nac1)#11 permit host +ip //預設情況下第一條為10,第二條為20.如果不指定序列号,則新添加的ACL被添加到清單的末尾
- router(config-std-nac1)#deny any
對于命名ACL來說,可以向之前的acl中插入acl,删除也可以删除單條acl,
如:
- router(config)#ip access-list standard benet
- router(config-std-nasl)#no 11
使用show access-lists可檢視配置的acl資訊
總結:如果設定ACL的規則比較多的話,應該使用基于名稱的通路控制清單進行管理,這樣可以減輕很多後期維護的工作,友善我們随時進行調整ACL規則。
四、反向通路控制清單
反向通路控制清單屬于ACL的一種進階應用。他可以有效的防範病毒。通過配置反向ACL可以保證AB兩個網段的計算機互相PING,A可以PING通B而B不能PING通A.
說得通俗些的話就是傳輸資料可以分為兩個過程,首先是源主機向目的主機發送連接配接請求和資料,然後是目的主機在雙方建立好連接配接後發送資料給源主機。反向ACL控制的就是上面提到的連接配接請求。
反向通路控制清單的格式:
反向通路控制清單格式非常簡單,隻要在配置好的擴充通路清單最後加上established即可。
反向通路控制清單配置執行個體:
路由器連接配接了二個網段,分别為172.16.4.0/24,172.16.3.0/24.在172.16.4.0/24網段中的計算機都是伺服器,我們通過反向ACL設定保護這些伺服器免受來自172.16.3.0這個網段的病毒攻擊。
要求:禁止病毒從172.16.3.0/24這個網段傳播到172.16.4.0/24這個伺服器網段。
路由器配置指令:
- access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.0 0.0.0.255 established //定義ACL101,容許所有來自172.16.3.0網段的計算機通路172.16.4.0網段中的計算機,前提是TCP連接配接已經建立了的。當TCP連接配接沒有建立的話是不容許172.16.3.0通路172.16.4.0的。
進入路由相應端口
- ip access-group 101 out //将ACL101應用到端口
設定完畢後病毒就不會輕易的從172.16.3.0傳播到172.16.4.0的伺服器區了。因為病毒要想傳播都是主動進行TCP連接配接的,由于路由器上采用反向ACL禁止了172.16.3.0網段的TCP主動連接配接,是以病毒無法順利傳播。
檢驗反向ACL是否順利配置的一個簡單方法就是拿172.16.4.0裡的一台伺服器PING在172.16.3.0中的計算機,如果可以PING通的話再用172.16.3.0那台計算機PING172.16.4.0的伺服器,PING不通則說明ACL配置成功。
通過上文配置的反向ACL會出現一個問題,那就是172.16.3.0的計算機不能通路伺服器的服務了,假如圖中172.16.4.13提供了WWW服務的話也不能正常通路。解決的方法是在ESTABLISHED那句前頭再添加一個擴充ACL規則,例如:
- access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.13 0.0.0.0 eq www
這樣根據"最靠近受控對象原則"即在檢查ACL規則時是采用自上而下在ACL中一條條檢測的,隻要發現符合條件了就立刻轉發,而不繼續檢測下面的ACL語句。172.16.3.0的計算機就可以正常通路該伺服器的WWW服務了,而下面的ESTABLISHED防病毒指令還可以正常生效。
五、定時通路控制清單
設定步驟:
1、定義時間段及時間範圍。
2、ACL自身的配置,即将詳細的規則添加到ACL中。
3、宣告ACL,将設定好的ACL添加到相應的端口中。
定義時間範圍的名稱:
- router(config)#time-range time-range-name
定義一個時間周期
- router(config-time-range)#periodic(周期) days-of-the-week hh:mm to [days-of-the-week] hh:mm
其中days-of-the-week的取值有
Monday Tuesday Wednesday Thursday Friday Saturday Sunday{周一到周日}
daily(每天)weekdays(在平日)weekend(周末)
定義一個絕對時間
- router(config)#time-range time-range-name
- router(config-time-range)#absolute [start hh:mm day month year] [end hh:mm day month year]
在擴充ACL中引入時間範圍
- router(config)#access-list access-list-number {permit|deny} protocol {source ip +反碼 destination ip +反碼 +operator+time-range+time-range-name}
定時通路控制清單執行個體:
路由器連接配接了二個網段,分别為172.16.4.0/24,172.16.3.0/24.在172.16.4.0/24網段中有一台伺服器提供FTP服務,IP位址為172.16.4.13.
要求:隻容許172.16.3.0網段的使用者在周末通路172.16.4.13上的FTP資源,工作時間不能下載下傳該FTP資源。
路由器配置指令:
- time-range softer //定義時間段名稱為softer
- periodic weekend 00:00 to 23:59 //定義具體時間範圍,為每周周末(6,日)的0點到23點59分。當然可以使用periodic weekdays定義工作日或跟星期幾定義具體的周幾。
- access-list 101 deny tcp any 172.16.4.13 0.0.0.0 eq ftp time-range softer //設定ACL,禁止在時間段softer範圍内通路172.16.4.13的FTP服務。
- access-list 101 permit ip any any //設定ACL,容許其他時間段和其他條件下的正常通路。
進入相應端口。
- ip access-group 101 out //應用到端口
基于時間的ACL比較适合于時間段的管理,通過上面的設定172.16.3.0的使用者就隻能在周末通路伺服器提供的FTP資源了,平時無法通路。
六、通路控制清單流量記錄
網絡管理者就是要能夠合理的管理公司的網絡,俗話說知己知彼方能百戰百勝,是以有效的記錄ACL流量資訊可以第一時間的了解網絡流量和病毒的傳播方式。下面這篇文章就為大家簡單介紹下如何儲存通路控制清單的流量資訊,方法就是在擴充ACL規則最後加上LOG指令。
實作方法:
- log 192.168.1.1 //為路由器指定一個日志伺服器位址,該位址為192.168.1.1
- access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www log //在希望監測的擴充ACL最後加上LOG指令,這樣就會把滿足該條件的資訊儲存到指定的日志伺服器192.168.1.1中。
小提示:如果在擴充ACL最後加上log-input,則不僅會儲存流量資訊,還會将資料包通過的端口資訊也進行儲存。使用LOG記錄了滿足通路控制清單規則的資料流量就可以完整的查詢公司網絡哪個地方流量大,哪個地方有病毒了。簡單的一句指令就完成了很多專業工具才能完成的工作。