思科IOS防火牆

翻譯自思科官方出的CCIE RS認證指南《CCIE Routing and Switching Exam Certification Guide 4th Edition

 

經典的思科IOS防火牆
    在一些情況下,訪問列表過濾足於控制和保護一個路由器接口。但是隨着***者變得越來越老練,思科也發展出更好的工具來處理這些威脅。頗爲艱難的是,常常需要實現安全性時對網絡用戶相對透明,而又能防禦***。思科的IOS防火牆是這些工具中的一種。
 
    經典的IOS防火牆依靠基於上下文的訪問列表(Context-Base Access Control,CBAC.CBAC是思科IOS內置的一個防火牆特性功能。它通過人工定義的動態檢測流量的一兩個或更多的步驟,實現流量穿越路由器時的訪問列表過濾。它的實現是基於實際的協議命令。比如FTP get 命令,而不是簡單的四層端口號。CBAC根據流量的起源決定哪些流量應該允許通過訪火牆。 當發現一個來自可信任網絡的特定協議發起一個會話,CBAC會在防火牆上創建臨時開放條目去允許相應的從非信任網絡返回可信任網絡的流量。(譯者注:類似於自反ACL),而默認情況下其它的過濾方式是阻斷的。CBAC只允許需要的流量,而不是開放防火牆去允許特定協議的所有流量。
 
    CBAC工作在TCPUDP流量的層面上,支持像FTP這種需要多個併發連會話或連接的協議。典型的應用是通過配置CBAC使其檢測從外部來的這些協議的流量,來保護內部網絡免受外部威脅。要使用CBAC,你需要配置以下內容:
要檢測的協議
要檢測的接口
要檢測的每個接口的流量方向
 
基於CBACTCP vs UDP
    TCP有明確的連接,所以CBAC(和其它有狀態檢測和過濾方法)能夠很容易地處理。但是,CBAC不是工作在簡單的協議和端口號,而是在更深的層次。比如CBAC能夠通過檢測和識別特定的FTP控制信道命令,決定在什麼時候開放或關閉防火牆的臨時開放條目。
 
    TCP不同的是,UDP流量是無連接的,所以比較難處理。CBAC管理UDP流量是基於一些因素決定的,比如UDP報文的原、目的地址和端口是否和最近來的流量一致,還有它們的相對時間間隔。你可以配置一個全局空閒超時時間決定多長間隔之內可以認爲是同一個流。你也可以配置其它超時時間,包括TCPUDP流量的特定協議超時時間。
思科IOS防火牆協議支持
    當使用CBAC的時候,IOS防火牆能夠檢測很長的協議列表,並且隨着時間繼續增加。CBAC通夠檢測的常用協議有:
        任何普通的TCP會話,無論是哪種應用層協議
        所有UDP會話
        FTP
        SMTP
        TFTP
        H.323(網絡會議,電視會議等)
        Java
        CU-SeeMe
        UNIX R命令(rlogin,rexec,rsh等)
        Real Audio
        Sun RPC
        SQL*Net
        StreamWorks
        VDOLive
 
思科IOS防火牆注意事項
    雖然CBAC有強大的動態檢測和過濾功能,但是它有一些缺陷。你應該知道CBAC的一些侷限性和注意事項:
 
       ■  接口上如果配置了訪問列表,那麼將先檢查訪問列表再檢查CBAC。如果一個訪問列表在接口上阻斷了一個特定類型的流量,那麼流量將在CBAC檢測前就被拒絕掉。
 
        CBAC不能夠防止來自內部網絡的***。而實際上大部分***是來自內部的。
 
        CBAC只根據你定義的協議檢測,而不影響訪問列表等其它過濾方式。
 
        如果需要檢測非TCPUDP流量,你必須配置一個命名檢測規則。
 
        CBAC並不檢測源自路由器或發往路由器的流量,只檢測穿過防火牆路由器的流量。
 
        CBAC在處理加密流量時有缺陷。
 
思科IOS防火牆配置步驟
    雖然配置CBAC並不難,但需要很多步驟,具體如下:
1.選擇一個接口(“inside”或“outside”)
2.配置一個拒絕所有需要檢測的流量的訪問列表。
3.使用ip inspect命令配置全局超時時間和閾值。
4.使用ip inspect name protocol定義一個檢測規則和可選的針對特定規則的超時時間值。比如:ip inspect name WOLF ftp timeout 3600
5.在接口上調用檢測規則。比如在接口配置模式下:ip inspect WOLF in
6.在相同接口下調用訪問列表,但是是調用在相反的方向。(inboundoutbound
18-15顯示一個路由器其中一個接口連接內網,一個連接外網。CBAC將在外網接口上調用。這個路由器被本置爲使用CLASS_FW檢測所有的ICMPTCPUDP流量,TCP和會話將在30秒後超時。但是ICMP會話將只在10秒後超時。訪問列表IOS_FW允許路由協議流量,但拒絕所有將會被CBAC檢測的流量。檢測規則調用在出接口,outbound方向。訪問列表調用在相同接口,inbound方向。所有TCPUDPICMP通過串口流向外網的一臺主機的流量將被track。回包將根據訪問列表IOS_FW裏一個動態條目被允許通過。但是,訪問列表IOS_FW將拒絕任何外部主機向內網主機發起的連接。
 
    可以通過命令show ip inspect session查出IOS防火牆的運行情況。可以看到例子中有一個telnet的會話已建立。
18-15 利用CBAC配置經典IOS防火牆
ip inspect name CLASSIC_FW icmp timeout 10
ip inspect name CLASSIC_FW tcp timeout 30
ip inspect name CLASSIC_FW udp timeout 30
!
ip access-list extended IOS_FW
permit eigrp any any
deny tcp any any
deny udp any any
deny icmp any any
!
interface Serial0/0
ip address 192.168.1.3 255.255.255.0
ip access-group IOS_FW in
ip inspect CLASSIC_FW out
!
R2#show ip inspect sessions
Established Sessions
Session 47699CFC ( 10.1.1.2:11003)=>(172.16.1.10:23) tcp SIS_OPEN
 
    CBAC是一個強大的IOS防火牆特性集選項,在參加CCIE  RS認證考試前,你必須理解其功能。
 
 
思科IOS 基於區域的防火牆(Zone-Based Firewall
    從例18-15中你會發現,就算配置一個簡單的經典的IOS防火牆也是非常複雜的。另外,經典的IOS檢測策略需要在所有接口上調用,你不能對不同用戶組應用不同的策略。
 
    基於區域的防火牆(ZFW)改變了這一情況。(ZFW12.46)或之後的IOS版本可用。)基於區域的防火牆的概念和硬件防火牆類似。路由器接口將被劃入安全區域。流量在同一區域內自由通行,但在不同區域間默認是被阻止的。已劃入安全區域的接口和沒有劃入安全區域接口間的流量也是被阻斷的。你必須顯式地調用一個策略去允許區域間的流量。區域策略利用基於策略的語言(Class-Base Policy Language,CPL)配置,類似於MQC。如果需要的話,Class map允許你配置高顆粒度的策略。基於區域的防火牆引入了一個新的classpolicy map類型——inspect類型。
 
ZFW 允許檢測和控制許多協議,包括:
 
HTTP and HTTPS
SMTP, Extended SMTP (ESMTP), POP3, and IMAP
P2P應用(能夠利用啓發式跟蹤跳動端口)
IM應用 (AOL, Yahoo!, MSM)
Remote Procedure Calls (RPC)
 
以下是配置ZFW的步驟:
1.決定所需要的區域,並在路由器上創建。
2.決定流量在不同區域量如何流動,並在路由器上創建zone-pair(區域對)
3.創建class map去識別區需要防火牆檢測的區域間的流量
4.創建policy map並關聯class map來管理流量。
5.在正確的zone-pair上調用policy map.
6.將接口劃入區域。一個接口只能劃入一個安全區域。
 
    爲了幫助你理解這些步驟,看看圖18-11的網絡。路由器Branch 1 有兩個接口:一個串行WAN接口,一個以太網接口。這是一個簡單的例子,但在IOS防火牆可用的情況下很常在小型的分支辦公室裏使用。LAN口被劃入一個LAN區域,WAN接口被劃入WAN區域。
 
18-11思科IOS基於區域的防火牆
在這個例子裏,網絡管理員決定對LAN區域到WAN區域的流量使用以下策略:
        只有允許來自LAN子網的流量
        允許訪問Corp intranet serverHTTP流量。
        允許其它所有HTTP流量,但限速爲1Mbps
        阻止ICMP
        對所有流量,TCPUDP的超時時間必須小於300秒。
 
對於從WAN區域到LAN區域的流量,只有來自公司管理網絡的SSH允許通過。
 
    所以,你必須配置兩個區域:LANWAN。路由器爲自己自動創建一個區域,叫做self zone.默認情況下,允許所有始發或到達這個區域的流量,但可以手動修改。在這個例裏,防火牆策略將被應用在從LAN區到WAN區的流量,以及從WAN區到LAN區的流量。所以你需要兩個zone pairLAN-to-WANWAN-to-LAN。配置zone需要使用全局命令zone security name ,配置zone paire需要使用全局命令zone-pair security name source source-zone-name destination desination-zone-name。例18-16顯示兩個步驟::配置zonezone pair
18-16 配置ZFW zonezone pair
Branch1(config)# zone security LAN
Branch1(config-sec-zone)# description LAN zone
!
Branch1(config)# zone security WAN
Branch1(config-sec-zone)# description WAN zone
!
Branch1(config)# zone-pair security Internal source LAN destination WAN
Branch1(config)# zone-pair security External source WAN destination LAN
 
 
    下一步是創建class map去識別流量。需要4class map:三個用來指定定製策略的流量類型,另一個用來指定所有來自LAN的流量。路由器自動創建一個默認的class,但所有在這個class下的流量都被drop。例18-17顯示訪問列表LAN_Subnet允許所有來自LAN子的流量,訪問列表Web_Servers允許去往corp intranet servers的流量。注意class map Corp_Servers使用match-all關鍵字同時匹配訪問列表Web_ServerHTTP協議,所以訪問列表和協議類型必須同時匹配。例如,class map Other_HTTP同時匹配HTTP協議和訪問列表LAN_Subnet,以達到只允許從本地來的HTTP流量。class map ICMP只匹配ICMP協議,因爲所有流量將被丟棄,沒有必要讓路由器檢測原地址。路由器將使用NBAR去匹配HTTPICMP流量。
 
18-17 配置ZFW class map
Branch1(config)# ip access-list extended LAN-Subnet
Branch1(config-ext-nacl)# permit ip 10.1.1.0 0.0.0.255 any
!
Branch1(config-ext-nacl)# ip access-list extended Web_Servers
Branch1(config-ext-nacl)# permit tcp 10.1.1.0 0.0.0.255 host 10.150.2.1
Branch1(config-ext-nacl)# permit tcp 10.1.1.0 0.0.0.255 host 10.150.2.2
!
Branch1(config-ext-nacl)# class-map type inspect match-all Corp_Servers
Branch1(config-cmap)# match access-group name Web_Servers
Branch1(config-cmap)# match protocol http
!
Branch1(config-cmap)# class-map type inspect Other_HTTP
Branch1(config-cmap)# match protocol http
Branch1(config-cmap)# match access-group name LAN_Subnet
!
Branch1(config-cmap)# class-map type inspect ICMP
Branch1(config-cmap)# match protocol icmp
!
Branch1(config-cmap)# class-map type inspect Other_Traffic
Branch1(config-cmap)# match access-group name LAN_Subnet
 
在第4步,將之前創建的class map關聯到policy mapZFWpolicy map能夠在每一個class map下執行以下動作:
Drop——丟棄數據包
Inspect——使用CBAC引擎
Pass——通過數據包
Police——監管流量
Service-policy——使用包深層檢測引擎
Urlfilter——使用URL過濾引擎
    回想一下,對於普通的網絡流量,TCPUDP計時器需要減少到300秒,這可以通過一個parameter map實現。Parameter mappolicy map下指定的class修改流量檢測行爲。在例18-18裏,parameter map TimeoutsTCPUDPidle時間設置爲300秒。Parameter map也可以用來設置警告和審計跟蹤,並且控制其它會話參數,比如半連接(half-open)的會話數。Policy map LAN2WAN關聯所有目前已創建的class map,並且對class Other_Traffice應用parameter map,同時限制了Other_HTTP流量到1Mbps,突發速率爲8Kbps。注意policy map的配置也使用type inspect這關鍵字。
 
18-18 配置ZFW parameter mappolicy map
Branch1(config)# parameter-map type inspect Timeouts
Branch1(config-profile)# tcp idle-time 300
Branch1(config-profile)# udp idle-time 300
!
Branch1(config-profile)# policy-map type inspect LAN2WAN
Branch1(config-pmap)# class type inspect Corp_Servers
Branch1(config-pmap-c)# inspect
!
Branch1(config-pmap-c)# class type inspect Other_HTTP
Branch1(config-pmap-c)# inspect
Branch1(config-pmap-c)# police rate 1000000 burst 8000
!
Branch1(config-pmap-c)# class type inspect ICMP
Branch1(config-pmap-c)# drop
!
Branch1(config-pmap-c)# class type inspect Other_Traffic
Branch1(config-pmap-c)# inspect Timeouts
class Other_Traffic 下沒有指定要檢測的協議,那麼所有協議將被檢測。
 
    在第5步中,將創建policy map,並調用在zone pair下,這類似於在MQC中將一個service policy調用在接口下。命令是在zone pair配置模工下使用service-policy type inspect policy-map-name
 
    最後一步,第6步,通過在接口模式下使用命令zone-member security zone-name將路由器接口劃入正確的zone。回到圖18-11看一下,接口F0/0連接LAN,接口S0/0/0連接WAN。例18-19顯示瞭如何將service policy調用在zone pair下,另外,有兩個接口劃入了zone
 
18-19 調用ZFW service policy和劃入zone
Branch1(config)# zone-pair security Internal source LAN destination WAN
Branch1(config-sec-zone-pair)# service-policy type inspect LAN2WAN
Branch1(config-sec-zone-pair)# exit
!
Branch1(config)# interface fa 0/0
Branch1(config-if)# zone-member security LAN
!
Branch1(config-if)# interface s0/0/0
Branch1(config-if)# zone-member security WAN
!
!Verify the configuration
Branch1# show zone-pair security
Zone-pair name Internal
Source-Zone LAN Destination-Zone WAN
service-policy LAN2WAN
Zone-pair name External
Source-Zone WAN Destination-Zone LAN
service-policy not configured
 
    到目前爲止,你已經看到一些創建並調用對從本地LANWAN相當複雜的防火牆策略。在這個時候,只有回包能夠到達LAN。需要創建其它class mapservice policy將需要來允許從WAN發向LANSSH會話。然後policy map將被調用在 zone pair Extenrnal。在例子並沒有寫出來,你最好自己做一下練習,以確保理解ZFW背後的概念。
 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章