天天看點

路由交換

<b>網絡層通路權限控制技術-acl詳解</b>

閱讀提示:技術從來都是一把雙刃劍,網絡應用與網際網路的普及在大幅提高企業的生産經營效率的同時,也帶來了諸如資料的安全性,員工利用網際網路做與工作不相幹事等負面影響。

技術從來都是一把雙刃劍,網絡應用與網際網路的普及在大幅提高企業的生産經營效率的同時,也帶來了諸如資料的安全性,員工利用網際網路做與工作不相幹事等負面影響。如何将一個網絡有效的管理起來,盡可能的降低網絡所帶來的負面影響就成了擺在網絡管理者面前的一個重要課題。

a公司的某位可憐的網管目前就面臨了一堆這樣的問題。a公司建設了一個企業網,并通過一台路由器接入到網際網路。在網絡核心使用一台基于ios的多層交換機,所有的二層交換機也為可管理的基于ios的交換機,在公司内部使用了vlan技術,按照功能的不同分為了6個vlan。分别是網絡裝置與網管(vlan1,10.1.1.0/24)、内部伺服器(vlan2)、internet連接配接(vlan3)、财務部(vlan4)、市場部(vlan5)、研發部門(vlan6),出口路由器上fa0/0接公司内部網,通過s0/0連接配接到internet。每個網段的三層裝置(也就是客戶機上的預設網關)位址都從高位向下配置設定,所有的其它節點位址均從低位向上配置設定。該網絡的拓樸如下圖所示:

自從網絡建成後麻煩就一直沒斷過,一會兒有人試圖登入網絡裝置要搗亂;一會兒上司又在抱怨說網際網路開通後,員工成天就知道泡網;一會兒财務的人又說研發部門的員工看了不該看的資料。這些抱怨都找這位可憐的網管,搞得他頭都大了。那有什麼辦法能夠解決這些問題呢?答案就是使用網絡層的通路限制控制技術――通路控制清單(下文簡稱acl)。

那麼,什麼是acl呢?acl是種什麼樣的技術,它能做什麼,又存在一些什麼樣的局限性呢?

<b>acl的基本原理、功能與局限性</b>

網絡中常說的acl是cisco ios所提供的一種通路控制技術,初期僅在路由器上支援,近些年來已經擴充到三層交換機,部分最新的二層交換機如2950之類也開始提供acl的支援。隻不過支援的特性不是那麼完善而已。在其它廠商的路由器或多層交換機上也提供類似的技術,不過名稱和配置方式都可能有細微的差别。本文所有的配置執行個體均基于cisco ios的acl進行編寫。

基本原理:acl使用包過濾技術,在路由器上讀取第三層及第四層標頭中的資訊如源位址、目的位址、源端口、目的端口等,根據預先定義好的規則對包進行過濾,進而達到通路控制的目的。

功能:網絡中的節點資源節點和使用者節點兩大類,其中資源節點提供服務或資料,使用者節點通路資源節點所提供的服務與資料。acl的主要功能就是一方面保護資源節點,阻止非法使用者對資源節點的通路,另一方面限制特定的使用者節點所能具備的通路權限。配置acl的基本原則:在實施acl的過程中,應當遵循如下兩個基本原則:

最小特權原則:隻給受控對象完成任務所必須的最小的權限

最靠近受控對象原則:所有的網絡層通路權限控制

局限性:由于acl是使用包過濾技術來實作的,過濾的依據又僅僅隻是第三層和第四層標頭中的部分資訊,這種技術具有一些固有的局限性,如無法識别到具體的人,無法識别到應用内部的權限級别等。是以,要達到end to end的權限控制目的,需要和系統級及應用級的 通路權限控制結合使用。

<b>acl基本配置</b>

acl配置技術詳解

“說那麼多廢話做什麼,趕快開始進行配置吧。”,a公司的網管說。呵呵,并不是我想說那麼多廢話,因為了解這些基礎的概念與簡單的原理對後續的配置和排錯都是相當有用的。說說看,你的第一個需求是什麼。

“做為一個網管,我不期望普通使用者能telnet到網絡裝置”――acl基礎

“補充一點,要求能夠從我現在的機器(研發vlan的10.1.6.66)上telnet到網絡裝置上去。”。hamm,是個不錯的主意,誰都不希望有人在自己的花園中撤野。讓我們分析一下,在a公司的網絡中,除出口路由器外,其它所有的網絡裝置段的是放在vlan1中,那個我隻需要在到vlan 1的路由器接口上配置隻允許源位址為10.1.6.66的包通過,其它的包通通過濾掉。這中隻管源ip位址的acl就叫做

<b>标準ip acl:</b>

我們在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減去子網路遮罩後的值,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,并且不會進行對齊操作。

int vlan1///ip access-group 1 out:這兩句将access-list 1應用到vlan1接口的out方向。其中1是acl号,和相應的acl進行關聯。out是對路由器該接口上哪個方向的包進行過濾,可以有in和out兩種選擇。

注意:這裡的in/out都是站在路由器或三層子產品(以後簡稱r)上看的,in表示從該接口進入r的包,out表示從該接口出去的包。

好了,這就是一個最基本的acl的配置方法。什麼,你說普通使用者還能telnet到rta?那你在int vlan3上現加一個ip access-group 1 out吧。hammmm,等等,你這樣加上去普通使用者就通路不了internet了。讓我們把剛才的acl去掉,重新寫一個。

回憶一下,我們的目的是除了10.1.6.66能夠進行telnet操作外,其它使用者都不允許進行telnet操作。剛才我們說過,标準的ip acl隻能控制源ip位址,不能控制到端口。要控制到第四層的端口,就需要使用到:

<b>擴充的ip acl的配置</b>

先看看配置執行個體吧。在swa上進行如下配置:

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

ip access-group 101 out

int vlan 3

你應該注意到到這裡的acl有一些變化了,現在對變化的部分做一些說明:

access-list 101:注意這裡的101,和剛才的标準acl中的1一樣,101是acl号,表示這是一個擴充的ip acl。擴充的ip acl号範圍是100-199,擴充的ip acl可以控制源ip、目的ip、源端口、目的端口等,能實作相當精細的控制,擴充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:比對條件。完整格式為:協定 源位址 源wildcards [關系] [源端口] 目的位址目的wildcards [關系] [目的端口]。其中協定可以是ip、tcp、udp、eigrp等,[]内為可選字段。僅在協定為tcp/udp等具備端口号的協定才有用。關系可以是eq(等于)、neq(不等于)、lt(大于)、range(範圍)等。端口一般為數字的1-65535,對于周知端口,如23(服務名為telnet)等可以用服務名代替。源端口和目的端口不定義時表示所有端口。

把這個acl應用上去後,使用者們開始打電話來罵娘了,因為他們都通路不了internet了,是哪裡出了問題了呢?

注意:所有的acl,預設情況下,從安全角度考慮,最後都會隐含一句deny any(标準acl)或deny ip any any(擴充ip acl)。是以在不了解業務會使用到哪些端口的情況下,最好在acl的最後加上一句permit ip any any,在這裡就是access-list 101 permit ip any any。

現在使用者倒是能夠通路internet了,但我們的可憐的網管卻發現普通使用者還是能夠telnet到他的swa上面,因為swa上面有很多個網絡接口,而且使用擴充的acl會消耗很多的資源。有什麼簡單的辦法能夠控制使用者對網絡裝置的telnet通路,而又不消耗太多的資源呢?這就需要使用到:

<b>對網絡裝置自身的通路如何進行控制的技術</b>

讓我們先把剛才配置的acl都取掉(具體配置略,不然後讀者會以為我在騙稿費了。),再在每台網絡裝置上均進行如下配置:

line vty 0 4(部分裝置是15)

access-class 1 in

基本通路控制清單:

router(config)#access-list  permit|deny 

router(config)#interface  ;default:deny any

router(config-if)#ip access-group  in|out ;default:out

例1:

router(config)#access-list 4 permit 10.8.1.1

router(config)#access-list 4 deny 10.8.1.0 0.0.0.255

router(config)#access-list 4 permit 10.8.0.0 0.0.255.255

router(config)#access-list 4 deny 10.0.0.0 0.255.255.255

router(config)#access-list 4 permit any

router(config)#int f0/0

router(config-if)#ip access-group 4 in

擴充通路控制清單:

access-list  permit|deny icmp  &lt;destinationip

wild&gt;[type]

access-list  permit|deny tcp  &lt;destinationip

wild&gt;[port]

例3:

router(config)#access-list 101 deny icmp any 10.64.0.2 0.0.0.0 echo

router(config)#access-list 101 permit ip any any

router(config)#int s0/0

router(config-if)#ip access-group 101 in

router(config)#access-list 102 deny tcp any 10.65.0.2 0.0.0.0 eq 80

router(config)#access-list 102 permit ip any any

router(config)#interface s0/1

router(config-if)#ip access-group 102 out

删除通路控制例表:

router(config)#no access-list 102

router(config-if)#no ip access-group 101 in

路由器的nat配置

router(config-if)#ip nat inside ;目前接口指定為内部接口

router(config-if)#ip nat outside ;目前接口指定為外部接口

router(config)#ip nat inside source static [p] &lt;私有ip&gt;&lt;公網ip&gt; [port]

router(config)#ip nat inside source static 10.65.1.2 60.1.1.1

router(config)#ip nat inside source static tcp 10.65.1.3 80 60.1.1.1 80

router(config)#ip nat pool p1 60.1.1.1 60.1.1.20 255.255.255.0

router(config)#ip nat inside source list 1 pool p1

router(config)#ip nat inside destination list 2 pool p2

router(config)#ip nat inside source list 2 interface s0/0 overload

router(config)#ip nat pool p2 10.65.1.2 10.65.1.4 255.255.255.0 type rotary

router#show ip nat translation

rotary 參數是輪流的意思,位址池中的ip輪流與nat配置設定的位址比對。

overload參數用于pat 将内部ip映射到一個公網ip不同的端口上。

外部網關協定配置:

routera(config)#router bgp 100

routera(config-router)#network 19.0.0.0

routera(config-router)#neighbor 8.1.1.2 remote-as 200

配置ppp驗證:

routera(config)#username  password

routera(config)#int s0

routera(config-if)#ppp authentication {chap|pap}

3.pix防火牆指令

pix525(config)#nameif ethernet0 outside security0 ;命名接口和級别

pix525(config)#interface ethernet0 auto ;設定接口方式

pix525(config)#interface ethernet1 100full ;設定接口方式

pix525(config)#interface ethernet1 100full shutdown

pix525(config)#ip address inside 192.168.0.1 255.255.255.0

pix525(config)#ip address outside 133.0.0.1 255.255.255.252

pix525(config)#global (if_name) natid ip-ip ;定義公網ip區間

pix525(config)#global (outside) 1 7.0.0.1-7.0.0.15 ;例句

pix525(config)#global (outside) 1 133.0.0.1 ;例句

pix525(config)#no global (outside) 1 133.0.0.1 ;去掉設定

pix525(config)#nat (if_name) nat_id local_ip [netmark]

pix525(config)#nat (inside) 1 0 0

内網所有主機(0代表0.0.0.0)可以通路global 1指定的外網。

pix525(config)#nat (inside) 1 172.16.5.0 255.255.0.0

内網172.16.5.0/16網段的主機可以通路global 1指定的外網。

pix525(config)#route if_name 0 0 gateway_ip [metric] ;指令格式

pix525(config)#route outside 0 0 133.0.0.1 1 ;例句

pix525(config)#route inside 10.1.0.0 255.255.0.0 10.8.0.1 1 ;例句

pix525(config)#static (inside, outside) 133.0.0.1 192.168.0.8

表示内部ip位址192.168.0.8,通路外部時被翻譯成133.0.0.1全局位址。

pix525(config)#static (dmz, outside) 133.0.0.1 172.16.0.8

中間區域ip位址172.16.0.8,通路外部時被翻譯成133.0.0.1全局位址。

繼續閱讀