網(wǎng)絡層訪問權限控制技術 ACL詳解(二) ACL基本配置
ACL配置技術詳解
本文引用地址:http://m.butianyuan.cn/article/201706/357705.htm“說那么多廢話做什么,趕快開始進行配置吧。”,A公司的網(wǎng)管說。呵呵,并不是我想說那么多廢話,因為理解這些基礎的概念與簡單的原理對后續(xù)的配置和排錯都是相當有用的。說說看,你的第一個需求是什么。
“做為一個網(wǎng)管,我不期望普通用戶能telnet到網(wǎng)絡設備”――ACL基礎
“補充一點,要求能夠從我現(xiàn)在的機器(研發(fā)VLAN的10.1.6.66)上telnet到網(wǎng)絡設備上去。”。hamm,是個不錯的主意,誰都不希望有人在自己的花園中撤野。讓我們分析一下,在A公司的網(wǎng)絡中,除出口路由器外,其它所有的網(wǎng)絡設備段的是放在Vlan1中,那個我只需要在到VLAN 1的路由器接口上配置只允許源地址為10.1.6.66的包通過,其它的包通通過濾掉。這中只管源IP地址的ACL就叫做
標準IP ACL:
我們在SWA上進行如下的配置:
access-list 1 permit host 10.1.6.66
access-list 1 deny any
int vlan 1
ip access-group 1 out
這幾條命令中的相應關鍵字的意義如下:
access-list:配置均ACL的關鍵字,所有的ACL均使用這個命令進行配置。
access-list后面的1:ACL號,ACL號相同的所有ACL形成一個組。在判斷一個包時,使用同一組中的條目從上到下逐一進行判斷,一遇到滿足的條目就終止對該包的判斷。1-99為標準的IP ACL號,標準IP ACL由于只讀取IP包頭的源地址部分,消耗資源少。
permit/deny:操作。Permit是允許通過,deny是丟棄包。
host 10.1.6.66/any:匹配條件,等同于10.1.6.66 0.0.0.0。剛才說過,標準的ACL只限制源地址。Host 10.1.6.66(10.1.6.66 0.0.0.0)的意思是只匹配源地址為10.1.6.66的包。0.0.0.0是wildcards,某位的wildcards為0表示IP地址的對應位必須符合,為1表示IP地址的對應位不管是什么都行。簡單點說,就是255.255.255.255減去子網(wǎng)掩碼后的值,0.0.0.0的wildcards就是意味著IP地址必須符合10.1.6.66,可以簡稱為host 10.1.6.66。any表示匹配所有地址。
注意:IOS中的ACL均使用wildcards,并且會用wildcards對IP地址進行嚴格的對齊,如你輸入一條access-list 1 permit 10.1.1.129 0.0.0.31,在你show access-list看時,會變成access-list 1 permit 10.1.1.128 0.0.0.31,PIXOS中的ACL均使用subnet masks,并且不會進行對齊操作。更為詳細的關于IP V4地址的資料可以參見拙著《IP v4基礎知識》http://www.ultratechnology.net/showarticle.php?s=articleid=60 一文
int vlan1///ip access-group 1 out:這兩句將access-list 1應用到vlan1接口的out方向。其中1是ACL號,和相應的ACL進行關聯(lián)。Out是對路由器該接口上哪個方向的包進行過濾,可以有in和out兩種選擇。
注意:這里的in/out都是站在路由器或三層模塊(以后簡稱R)上看的,in表示從該接口進入R的包,out表示從該接口出去的包。
好了,這就是一個最基本的ACL的配置方法。什么,你說普通用戶還能telnet到RTA?那你在int vlan3上現(xiàn)加一個ip access-group 1 out吧。Hammmm,等等,你這樣加上去普通用戶就訪問不了internet了。讓我們把剛才的ACL去掉,重新寫一個。
回憶一下,我們的目的是除了10.1.6.66能夠進行telnet操作外,其它用戶都不允許進行telnet操作。剛才我們說過,標準的IP ACL只能控制源IP地址,不能控制到端口。要控制到第四層的端口,就需要使用到:
擴展的IP ACL的配置
先看看配置實例吧。在SWA上進行如下配置:
int vlan 1
no ip access-group 1 out
exit
no access-list 1
access-list 101 permit tcp host 10.1.6.66 any eq telnet
access-list 101 deny tcp any any eq telnet
int vlan 1
ip access-group 101 out
int vlan 3
ip access-group 101 out
你應該注意到到這里的ACL有一些變化了,現(xiàn)在對變化的部分做一些說明:
access-list 101:注意這里的101,和剛才的標準ACL中的1一樣,101是ACL號,表示這是一個擴展的IP ACL。擴展的IP ACL號范圍是100-199,擴展的IP ACL可以控制源IP、目的IP、源端口、目的端口等,能實現(xiàn)相當精細的控制,擴展ACL不僅讀取IP包頭的源地址/目的地址,還要讀取第四層包頭中的源端口和目的端口,的IP在沒有硬件ACL加速情況下,會消耗大量的CPU資源。
int vlan 1///no ip access-group 1 out///exit///no access-list 1:取消access-list 1,對于非命名的ACL,可以只需要這一句就可以全部取消。注意,在取消或修改一個ACL前,必須先在它所應用的接口上先把應用給no掉,否則會導致相當嚴重的后果。
tcp host 10.1.6.66 any eq telnet:匹配條件。完整格式為:協(xié)議 源地址 源wildcards [關系] [源端口] 目的地址 目的wildcards [關系] [目的端口]。其中協(xié)議可以是IP、TCP、UDP、EIGRP等,[]內為可選字段。僅在協(xié)議為tcp/udp等具備端口號的協(xié)議才有用。關系可以是eq(等于)、neq(不等于)、lt(大于)、range(范圍)等。端口一般為數(shù)字的1-65535,對于周知端口,如23(服務名為telnet)等可以用服務名代替。源端口和目的端口不定義時表示所有端口。
把這個ACL應用上去后,用戶們開始打電話來罵娘了,因為他們都訪問不了Internet了,是哪里出了問題了呢?
注意:所有的ACL,缺省情況下,從安全角度考慮,最后都會隱含一句deny any(標準ACL)或deny ip any any(擴展IP ACL)。所以在不了解業(yè)務會使用到哪些端口的情況下,最好在ACL的最后加上一句permit ip any any,在這里就是access-list 101 permit ip any any。
現(xiàn)在用戶倒是能夠訪問Internet了,但我們的可憐的網(wǎng)管卻發(fā)現(xiàn)普通用戶還是能夠telnet到他的SWA上面,因為SWA上面有很多個網(wǎng)絡接口,而且使用擴展的ACL會消耗很多的資源。有什么簡單的辦法能夠控制用戶對網(wǎng)絡設備的Telnet訪問,而又不消耗太多的資源呢?這就需要使用到:
對網(wǎng)絡設備自身的訪問如何進行控制的技術
讓我們先把剛才配置的ACL都取掉(具體配置略,不然后讀者會以為我在騙稿費了。),再在每臺網(wǎng)絡設備上均進行如下配置:
access-list 1 permit host 10.1.6.66
line vty 0 4(部分設備是15)
access-class 1 in
這樣就行了,telnet都是訪問的設備上的line vty,在line vty下面使用access-class與ACL組進行關聯(lián),in關鍵字表示控制進入的連接。
就這么簡單?wk,你丫是不是在玩我們,為什么還要繞一大圈?臭雞蛋和爛西紅柿開始在70的腦袋上方狂飛。(5555555,偶也只是想向大家把ACL的基礎知識講的明白一些的嘛)。經過剛才的配置,我們可以理出一個簡單的ACL配置步驟了:
u 分析需求,找清楚需求中要保護什么或控制什么;為方便配置,最好能以表格形式列出。在本文的后面會舉例的。
u 分析符合條件的數(shù)據(jù)流的路徑,尋找一個最適合進行控制的位置;
u 書寫ACL,并將ACL應用到接口上;
u 測試并修改ACL。
當A公司的領導知道在網(wǎng)管能夠控制普通用戶對網(wǎng)絡設備的訪問后,我們的可憐的網(wǎng)管就收到了很多看起來很難的要求。領導要求網(wǎng)管:
評論