》
翻譯自思科官方出的CCIE RS認證指南《CCIE Routing and Switching Exam Certification Guide 4th Edition
經典的思科IOS防火牆
在一些情況下,訪問列表過濾足於控制和保護一個路由器接口。但是隨着***者變得越來越老練,思科也發展出更好的工具來處理這些威脅。頗爲艱難的是,常常需要實現安全性時對網絡用戶相對透明,而又能防禦***。思科的IOS防火牆是這些工具中的一種。
要檢測的協議
要檢測的接口
要檢測的每個接口的流量方向
基於CBAC的TCP vs UDP
TCP有明確的連接,所以CBAC(和其它有狀態檢測和過濾方法)能夠很容易地處理。但是,CBAC不是工作在簡單的協議和端口號,而是在更深的層次。比如CBAC能夠通過檢測和識別特定的FTP控制信道命令,決定在什麼時候開放或關閉防火牆的臨時開放條目。
思科IOS防火牆協議支持
思科IOS防火牆注意事項
雖然CBAC有強大的動態檢測和過濾功能,但是它有一些缺陷。你應該知道CBAC的一些侷限性和注意事項:
■ 接口上如果配置了訪問列表,那麼將先檢查訪問列表再檢查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.在相同接口下調用訪問列表,但是是調用在相反的方向。(inbound或outbound)
例18-15顯示一個路由器其中一個接口連接內網,一個連接外網。CBAC將在外網接口上調用。這個路由器被本置爲使用CLASS_FW檢測所有的ICMP、TCP、UDP流量,TCP和會話將在30秒後超時。但是ICMP會話將只在10秒後超時。訪問列表IOS_FW允許路由協議流量,但拒絕所有將會被CBAC檢測的流量。檢測規則調用在出接口,outbound方向。訪問列表調用在相同接口,inbound方向。所有TCP、UDP和ICMP通過串口流向外網的一臺主機的流量將被track。回包將根據訪問列表IOS_FW裏一個動態條目被允許通過。但是,訪問列表IOS_FW將拒絕任何外部主機向內網主機發起的連接。
例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)改變了這一情況。(ZFW在12.4(6)或之後的IOS版本可用。)基於區域的防火牆的概念和硬件防火牆類似。路由器接口將被劃入安全區域。流量在同一區域內自由通行,但在不同區域間默認是被阻止的。已劃入安全區域的接口和沒有劃入安全區域接口間的流量也是被阻斷的。你必須顯式地調用一個策略去允許區域間的流量。區域策略利用基於策略的語言(Class-Base Policy Language,CPL)配置,類似於MQC。如果需要的話,Class map允許你配置高顆粒度的策略。基於區域的防火牆引入了一個新的class和policy 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 server的HTTP流量。
■ 允許其它所有HTTP流量,但限速爲1Mbps。
■ 阻止ICMP
■ 對所有流量,TCP和UDP的超時時間必須小於300秒。
對於從WAN區域到LAN區域的流量,只有來自公司管理網絡的SSH允許通過。
所以,你必須配置兩個區域:LAN和WAN。路由器爲自己自動創建一個區域,叫做self zone.默認情況下,允許所有始發或到達這個區域的流量,但可以手動修改。在這個例裏,防火牆策略將被應用在從LAN區到WAN區的流量,以及從WAN區到LAN區的流量。所以你需要兩個zone pair:LAN-to-WAN和WAN-to-LAN。配置zone需要使用全局命令zone security name ,配置zone paire需要使用全局命令zone-pair security name source source-zone-name destination desination-zone-name。例18-16顯示兩個步驟::配置zone和zone pair。
例18-16 配置ZFW zone和zone 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去識別流量。需要4個class map:三個用來指定定製策略的流量類型,另一個用來指定所有來自LAN的流量。路由器自動創建一個默認的class,但所有在這個class下的流量都被drop。例18-17顯示訪問列表LAN_Subnet允許所有來自LAN子的流量,訪問列表Web_Servers允許去往corp intranet servers的流量。注意class map Corp_Servers使用match-all關鍵字同時匹配訪問列表Web_Server和HTTP協議,所以訪問列表和協議類型必須同時匹配。例如,class map Other_HTTP同時匹配HTTP協議和訪問列表LAN_Subnet,以達到只允許從本地來的HTTP流量。class map ICMP只匹配ICMP協議,因爲所有流量將被丟棄,沒有必要讓路由器檢測原地址。路由器將使用NBAR去匹配HTTP和ICMP流量。
圖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 map。ZFW的policy map能夠在每一個class map下執行以下動作:
Drop——丟棄數據包
Inspect——使用CBAC引擎
Pass——通過數據包
Police——監管流量
Service-policy——使用包深層檢測引擎
Urlfilter——使用URL過濾引擎
回想一下,對於普通的網絡流量,TCP和UDP計時器需要減少到300秒,這可以通過一個parameter map實現。Parameter map對policy map下指定的class修改流量檢測行爲。在例18-18裏,parameter map Timeouts 將TCP和UDP的idle時間設置爲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 map和policy 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
到目前爲止,你已經看到一些創建並調用對從本地LAN到WAN相當複雜的防火牆策略。在這個時候,只有回包能夠到達LAN。需要創建其它class map 和service policy將需要來允許從WAN發向LAN的SSH會話。然後policy map將被調用在 zone pair Extenrnal。在例子並沒有寫出來,你最好自己做一下練習,以確保理解ZFW背後的概念。