什麼是ACL?
通路控制清單簡稱為ACL,通路控制清單使用包過濾技術,在路由器上讀取第三層及第四層標頭中的資訊如源位址,目的位址,源端口,目的端口等,根據預先定義好的規則對包進行過濾,進而達到通路控制的目的。該技術初期僅在路由器上支援,近些年來已經擴充到三層交換機,部分最新的二層交換機也開始提供ACL的支援了。
通路控制清單使用原則
由于ACL涉及的配置指令很靈活,功能也很強大,是以我們不能隻通過一個小小的例子就完全掌握全部ACL的配置。在介紹例子前為大家将ACL設定原則羅列出來,友善各位讀者更好的消化ACL知識。
1、最小特權原則
隻給受控對象完成任務所必須的最小的權限。也就是說被控制的總規則是各個規則的交集,隻滿足部分條件的是不容許通過規則的。
2、最靠近受控對象原則
所有的網絡層通路權限控制。也就是說在檢查規則時是采用自上而下在ACL中一條條檢測的,隻要發現符合條件了就立刻轉發,而不繼續檢測下面的ACL語句。
3、預設丢棄原則
在CISCO路由交換裝置中預設最後一句為ACL中加入了DENY ANY ANY,也就是丢棄所有不符合條件的資料包。這一點要特别注意,雖然我們可以修改這個預設,但未改前一定要引起重視。
由于ACL是使用包過濾技術來實作的,過濾的依據又僅僅隻是第三層和第四層標頭中的部分資訊,這種技術具有一些固有的局限性,如無法識别到具體的人,無法識别到應用内部的權限級别等。是以,要達到端到端的權限控制目的,需要和系統級及應用級的通路權限控制結合使用。
标準通路清單:
通路控制清單ACL分很多種,不同場合應用不同種類的ACL。其中最簡單的就是标準通路控制清單,标準通路控制清單是通過使用IP包中的源IP位址進行過濾,使用的通路控制清單号1到99來建立相應的ACL
标準通路控制清單的格式
通路控制清單ACL分很多種,不同場合應用不同種類的ACL。其中最簡單的就是标準通路控制清單,他是通過使用IP包中的源IP位址進行過濾,使用的通路控制清單号1到99來建立相應的ACL。
标準通路控制清單是最簡單的ACL。
它的具體格式如下:access-list ACL号 permit|deny host ip位址
例如: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指令。
标準通路控制清單執行個體一
執行個體1:禁止172.16.4.0/24網段中除172.16.4.13這台計算機通路172.16.3.0/24的計算機。172.16.4.13可以正常通路172.16.3.0/24。
路由器配置指令
access-list 1 permit host 172.16.4.13 設定ACL,容許172.16.4.13的資料包通過。
access-list 1 deny any 設定ACL,阻止其他一切IP位址進行通訊傳輸。
int e 1 進入E1端口。
ip access-group 1 in 将ACL 1宣告。
經過設定後E1端口就隻容許來自172.16.4.13這個IP位址的資料包傳輸出去了。來自其他IP位址的資料包都無法通過E1傳輸。
小提示:由于CISCO預設添加了DENY ANY的語句在每個ACL中,是以上面的access-list 1 deny any這句指令可以省略。另外在路由器連接配接網絡不多的情況下也可以在E0端口使用ip access-group 1 out指令來宣告,宣告結果和上面最後兩句指令效果一樣。
标準通路控制清單執行個體二
配置任務:禁止172.16.4.13這個計算機對172.16.3.0/24網段的通路,而172.16.4.0/24中的其他計算機可以正常通路。
路由器配置指令:
access-list 1 deny host 172.16.4.13 設定ACL,禁止172.16.4.13的資料包通過
access-list 1 permit any 設定ACL,容許其他位址的計算機進行通訊
int e 1 進入E1端口
ip access-group 1 in 将ACL1宣告,同理可以進入E0端口後使用ip access-group 1 out來完成宣告。
配置完畢後除了172.16.4.13其他IP位址都可以通過路由器正常通訊,傳輸資料包。
總結:标準ACL占用路由器資源很少,是一種最基本最簡單的通路控制清單格式。應用比較廣泛,經常在要求控制級别較低的情況下使用。如果要更加複雜的控制資料包的傳輸就需要使用擴充通路控制清單了,他可以滿足我們到端口級的要求。
擴充通路控制清單:
上面我們提到的标準通路控制清單是基于IP位址進行過濾的,是最簡單的ACL。那麼如果我們希望将過濾細到端口怎麼辦呢?或者希望對資料包的目的位址進行過濾。這時候就需要使用擴充通路控制清單了。使用擴充IP通路清單可以有效的容許使用者通路實體LAN而并不容許他使用某個特定服務(例如WWW,FTP等)。擴充通路控制清單使用的ACL号為100到199。
擴充通路控制清單的格式
剛剛我們提到了标準通路控制清單,他是基于IP位址進行過濾的,是最簡單的ACL。那麼如果我們希望将過濾細到端口怎麼辦呢?或者希望對資料包的目的位址進行過濾。這時候就需要使用擴充通路控制清單了。使用擴充IP通路清單可以有效的容許使用者通路實體LAN而并不容許他使用某個特定服務(例如WWW,FTP等)。擴充通路控制清單使用的ACL号為100到199。
擴充通路控制清單的格式:
擴充通路控制清單是一種進階的ACL,配置指令的具體格式如下:
access-list ACL号 [permit|deny] [協定] [定義過濾源主機範圍] [定義過濾源端口] [定義過濾目的主機通路] [定義過濾目的端口]
例如:access-list 101 deny tcp any host 192.168.1.1 eq www這句指令是将所有主機通路192.168.1.1這個位址網頁服務(WWW)TCP連接配接的資料包丢棄。
小提示:同樣在擴充通路控制清單中也可以定義過濾某個網段,當然和标準通路控制清單一樣需要我們使用反向掩碼定義IP位址後的子網路遮罩。
擴充通路控制清單執行個體
我們采用如圖所示的網絡結構。路由器連接配接了二個網段,分别為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隻寫此一句即可。
int e 1 進入E1端口
ip access-group 101 out 将ACL101宣告出去
設定完畢後172.16.3.0的計算機就無法通路172.16.4.0的計算機了,就算是伺服器172.16.4.13開啟了FTP服務也無法通路,惟獨可以通路的就是172.16.4.13的WWW服務了。而172.16.4.0的計算機通路172.16.3.0的計算機沒有任何問題。
擴充ACL有一個最大的好處就是可以保護伺服器,例如很多伺服器為了更好的提供服務都是暴露在公網上的,這時為了保證服務正常提供所有端口都對外界開放,很容易招來黑客和病毒的攻擊,通過擴充ACL可以将除了服務端口以外的其他端口都封鎖掉,降低了被攻擊的機率。如本例就是僅僅将80端口對外界開放。
總結:擴充ACL功能很強大,他可以控制源IP,目的IP,源端口,目的端口等,能實作相當精細的控制,擴充ACL不僅讀取IP標頭的源位址/目的位址,還要讀取第四層標頭中的源端口和目的端口的IP。不過他存在一個缺點,那就是在沒有硬體ACL加速的情況下,擴充ACL會消耗大量的路由器CPU資源。是以當使用中低檔路由器時應盡量減少擴充ACL的條目數,将其簡化為标準ACL或将多條擴充ACL合一是最有效的方法。
基于名稱的通路控制清單
不管是标準通路控制清單還是擴充通路控制清單都有一個弊端,那就是當設定好ACL的規則後發現其中的某條有問題,希望進行修改或删除的話隻能将全部ACL資訊都删除。也就是說修改一條或删除一條都會影響到整個ACL清單。這一個缺點影響了我們的工作,為我們帶來了繁重的負擔。不過我們可以用基于名稱的通路控制清單來解決這個問題。
一、基于名稱的通路控制清單的格式:
ip access-list [standard|extended] [ACL名稱]
例如:ip access-list standard softer就建立了一個名為softer的标準通路控制清單。
二、基于名稱的通路控制清單的使用方法:
當我們建立了一個基于名稱的通路清單後就可以進入到這個ACL中進行配置了。
例如我們添加三條ACL規則
permit 1.1.1.1 0.0.0.0
permit 2.2.2.2 0.0.0.0
permit 3.3.3.3 0.0.0.0
如果我們發現第二條指令應該是2.2.2.1而不是2.2.2.2,如果使用不是基于名稱的通路控制清單的話,使用no permit 2.2.2.2 0.0.0.0後整個ACL資訊都會被删除掉。正是因為使用了基于名稱的通路控制清單,我們使用no permit 2.2.2.2 0.0.0.0後第一條和第三條指令依然存在。
總結:如果設定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防病毒指令還可以正常生效。
筆者所在公司就使用的這種反向ACL的方式進行防病毒的,運作了一年多效果很不錯,也非常穩定。
基于時間的通路控制清單:
上面我們介紹了标準ACL與擴充ACL,實際上我們數量掌握了這兩種通路控制清單就可以應付大部分過濾網絡資料包的要求了。不過實際工作中總會有人提出這樣或那樣的苛刻要求,這時我們還需要掌握一些關于ACL的進階技巧。基于時間的通路控制清單就屬于進階技巧之一。
配置執行個體:
要想使基于時間的ACL生效需要我們配置兩方面的指令:
1、定義時間段及時間範圍。
2、ACL自身的配置,即将詳細的規則添加到ACL中。
3、宣告ACL,将設定好的ACL添加到相應的端口中。
網絡環境介紹:
我們采用如圖所示的網絡結構。路由器連接配接了二個網段,分别為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 宣告ACL101。
基于時間的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記錄了滿足通路控制清單規則的資料流量就可以完整的查詢公司網絡哪個地方流量大,哪個地方有病毒了。簡單的一句指令就完成了很多專業工具才能完成的工作。

本文轉自shenzhoulong 51CTO部落格,原文連結:http://blog.51cto.com/shenzhoulong/274696,如需轉載請自行聯系原作者