CBAC

一、Cisco IOS安全技術
Cisco IOS防火牆特性集作爲Cisco IOS軟件的一個選項,提供了一個先進的安
全解決方案,這種集成化路由器安全解決方案是Cisco Systems安全解決方案系
統中的一個部件。
Cisco IOS安全服務包括一系列特性,能使管理人員將一臺Cisco路由器配置成
爲一個防火牆,而Cisco IOS防火牆特性集則可以爲現有的Cisco IOS安全解決
方案增加更大的深度和靈活性。表1爲Cisco IOS防火牆特性集相關新特性的概
述。
 
二、基於上下文的訪問控制
CBAC提供四個方面的主要功能:
. 流量過濾:
擴展ACL只能過濾3層和4層的流量,RACL能夠過濾5層的流量,而CBAC
支持應用層的檢測,即查看某些數據包的內容,如FTP,他能夠分別查看
控制連接或者數據連接,由於控制和數據使用的端口是分開的,所以這點
對於CBAC來說是做不到的。CBAC甚至能夠檢測HTTP連接中使用的Java
程序,並過濾他們。
. 流量檢測:
CBAC不僅能像RACL那樣檢查返回到網絡的流量,同時還能夠防止TCP SYN
洪水***:CBAC能夠檢測客戶端到服務器連接的頻率,如果到達一個限
度,就會關閉這些連接。也可用來防止DoS分片***。
. ***檢測:
CBAC是一個基於狀態的防火牆機制,他也能夠檢測某些DoS***。提供


對於某些SMTP e-mail***的保護,限制某些SMTP命令發送到你內部網
絡的e-mail服務器。所有這些***都使CBAC產生日誌信息,並且會選擇
性的重置TCP連接或者丟棄這些欺騙數據包。
. 一般的告警和審計:
CBAC對於檢測到的問題或***能夠產生實時的告警,對於連接請求提供
詳細的審計信息。例如,記錄所有的網絡連接請求,包括源和目的的IP
地址,連接使用的端口,發送的數據大小,連接開始和結束的時間。

CBAC的原理:
CBAC會追蹤它監視的連接,創建包括每個連接信息的狀態表。這個表和PIX使
用的狀態表很相似。CBAC監視TCP,UDP,和ICMP的連接並記錄到狀態表,併爲
返回的流量創建動態ACL條目,這點和RACL很相似。但是CBAC能夠檢測應用層
的流量,這點是RACL不能實現的。CBAC使用狀態表和動態ACL條目來檢測和防
止某些DoS***,尤其是TCP洪水***。
CBAC的處理步驟:
 

1.用戶發起一個到外部的連接,如Telnet。如果配置了進站ACL,則在CBAC檢
測之前先處理進站ACL。接着根據CBAC的檢測規則,Cisco IOS來檢測或忽略這
些連接。如果沒有要檢測的連接,Cisco IOS允許數據包的通過,否則跳入步驟
2。
2.Cisco IOS比較當前連接和狀態表中的條目:如果條目不存在,則添加一條到
狀態表中,否則,Cisco IOS重置這個連接的空閒計時器(idle timer)

3.如果這是一個新條目,則Cisco IOS添加一個動態ACL條目到外部接口的進站
方向,允許返回到內部網絡的流量。這個動態ACL不會保存到NVRAM。
在Cisco IOS 12.3(4)T後,出現了一個新的特性叫做:Firewall ACL Bypass
(FAB),使用這個特性後,Cisco IOS不會爲允許返回的流量創建動態ACL條目,
而是直接查看狀態表看哪些流量允許返回內部網絡,這是通過快速交換進程,如
CEF來實現的,從而加快了處理返回的流量的速度。如果在狀態表中沒有發現符
合的條目,則繼續進行進站ACL的檢查過程。在12.3(4)T之後,FAB特性會
自動的啓用並且不能被關閉。
 注意:CBAC能夠配置要檢測哪個方向的流量,大多數情況下,你可以在邊界路
由器上配置CBAC來允許返回到內部網絡的流量。然而,你也能夠配置CBAC來同
時檢測兩個方向的流量,來同時保護兩邊的網絡。
CBAC相比與RACL的改進
TCP:
像RACL一樣,CBAC會檢測TCP數據包包頭的控制位,如果看到FIN位,則Cisco
IOS會等待5秒鐘來關閉連接,並且刪除動態ACL條目(在FAB特性引入之前),
並從狀態表中刪除條目。如果一個TCP的會話空閒超過1個小時,則Cisco IOS
會移除這個條目。此外和RACL不同的是CBAC會要求TCP連接在看到第一個SYN
字段的30秒鐘之內(用戶配置)建立。如果在這個時間斷裏沒有建立,Cisco IOS
會從狀態表中出這個條目和ACL。
此外,CBAC還會檢查TCP連接的序列號來保證在一個範圍內。如果不在這個範
圍中,CBAC會丟且這些報文,並且假設發生了DoS欺騙***。
UDP:
和RACL一樣,CBAC會估計UDP連接的時間,假設30秒之內(用戶配置)沒有
UDP數據包,則說明連接已經結束了。因此Cisco IOS從狀態表中移除這個條目
(包括動態ACL條目)。此外,與RACL不同的是,CBAC會檢測DNS的查詢和響
應。如果內部設備產生了DNS查詢,遠端DNS服務器應該會在5秒鐘發送DNS
響應。如果在5秒鐘內沒有看到響應,這個DNS連接條目會被立刻移除來防止欺
騙***。同樣的,如果從DNS服務器看到DNS響應後,Cisco IOS也會立刻從狀
態表中移除相應,來防止DNS欺騙和DoS***。
另外的連接:
某些應用程序,如FTP,會開啓額外的連接來傳輸數據。這種情況RACL就不能
起作用了,而CBAC能夠監視這些應用的控制連接,並決定他們是否開啓了其他
的數據連接。當CBAC發現額外開啓的連接,他會自動將這些信息加入到狀態表
中(在啓用FAB之前,還會加入到動態ACL種)來允許這些連接通過路由器。

對於地址轉換的支持:
CBAC對於經過地址轉換的地址能夠在狀態表種進行正確的轉換,並正確的響應。
但是有兩個限制:
. 啓用CBAC的路由器必須同時扮演地址轉換的角色,這樣才能夠獲得包頭
的地址轉換的信息。
. 並不支持所有的應用程序;只支持某些類型的地址轉換,如NAT,而不是
PAT。

CBAC的配置:
步驟一:決定路由器上的哪個接口作爲內部接口,哪個接口作爲外部接口
內部接口(internal)是指連接發起的數據包進入CBAC路由器的接口,外部接
口(external)是流量出去後返回CBAC路由器的接口,如果要配置雙向CBAC,
推薦先配置單向CBAC,測試正常後再配置另外一邊。
注意:如果不配置內部端口,則除了外部端口外的所有端口都是內部端口
步驟二:創建普通的IP ACL列表過濾進入和離開內部網絡的流量,並保證那些
要監視的出站流量允許被通過
推薦在配置CBAC之前,先用ACL(應用到接口上)允許某些必要的流量進入或
離開內部網絡,這樣做簡化了以後的CBAC配置和相關拍錯
步驟三:(可選)改變全局的連接超時時間

Router(config)# ip inspect tcp synwait-time #_of_seconds 等待多長時
間來完成TCP連接(三次握手),默認是30秒
Router(config)# ip inspect tcp finwait-time #_of_seconds 等待多長時
間來完成TCP連接關閉,默認是5秒
Router(config)# ip inspect tcp idle-time #_of_seconds TCP連接的空
閒時間,默認是3600秒
Router(config)# ip inspect udp idle-time #_of_seconds UDP連接的空
閒時間,默認是30秒
Router(config)# ip inspect dns-timeout #_of_seconds 配置DNS查詢條
目在狀態表中存在的時間,默認是5秒,優先級高於UDP空閒時間
步驟四:(可選)配置應用程序端口映射(Port Application Mapping(PAM))
CBAC是哦那個PAM來決定要監視的應用連接類型,如果要監視的那些使用非標
準端口的應用程序,如HTTP使用8080端口,必須要手動配置。

PAM表中有三類條目:
. System-defined entries-默認的應用程序端口條目
. User-defined entries-用戶定義的應用程序端口條目
. Host-specific entries-User-defined entries的一種,如果一個應用
程序同時存在默認端口和用戶自定義的端口,則用戶自定義的條目稱爲
Host-specific entries

配置PAM條目:
Router(config)# ip port-map application_name port port_# [list
acl_#] ACL指定哪些設備使用非標準的端口,如果不加代表全部設備。
PAM配置舉例:使用PAM和ACL來決定CBAC檢測的範圍
 

Router(config)# ip port-map http port 8080 list 1
Router(config)# access-list 1 permit 192.1.1.2
Router(config)# ip port-map http port 8090 list 2
Router(config)# access-list 2 permit 192.1.1.3
檢測IP地址爲192.1.1.2,端口爲8080的HTTP連接
檢測IP地址爲192.1.1.3,端口爲8090的HTTP連接
注意:
PAM表在某些版本的Cisco IOS上必須保存配置,重啓後才生效
使用show ip port-map查看

步驟五:定義CBAC監視規則(最爲重要的一步)
定義哪些條目要加入到狀態表,哪些流量被允許返回。如果出站流量不符合監視
規則,路由器不會監視這些流量,只把他們當作普通流量處理。

Router(config)# ip inspect name inspection_name protocol [alert {on |
off}] [audit-trail {on | off}] [timeout seconds]
protocol:支持的協議cuseeme, fragment, ftp, h323, http, icmp, netshow,
rcmd (UNIX R commands), realaudio, rpc, rtsp, sip, skinny, smtp, sqlnet,
streamworks, tcp, tftp, udp, and vdolive
alert和audit-trail:詳細指定對於這條規則,告警和審計是否開啓,如果不
配置,則啓用默認告警審計規則
timeout:指定這條規則的超時,如果不指定,則使用默認超時時間
步驟六:在接口上激活監視規則。這樣路由器會使用CBAC來監視這些流量
Router(config)# interface type [slot_#] port_#
Router(config -if)# ip inspect inspection_name {in | out}
in:連接發起的數據包進入CBAC路由器的接口
out:流量出去後返回CBAC路由器的接口
步驟七:(可選,強烈推薦)發送流量經過CBAC路由器來測試你的配置
CBAC查看命令:
Router# show ip inspect [parameter]
Router# show ip inspect sessions 查看CBAC狀態表
告警和審計
告警
告警會顯示CBAC的一些消息,如:路由器資源不夠,DoS***和其他威脅。告
警默認情況會開啓,並自動顯示在console線程上。
全局關閉CBAC告警:
Router(config)# ip inspect alert-off
審計
審計會追蹤CBAC檢查的連接,獲取他們的統計信息。默認情況下審計是關閉的。
全局開啓CBAC審計,默認情況會顯示在console線程上:

Router(config)# ip inspect audit trail
 
 
CBAC 實驗

實驗拓撲
 
實驗要求
1. R1是內網,而R3是外網;
2. 全網運行ospf協議;
3. 內網可以ping通外網,但外網不能ping通內網;
4. 內網可以telnet到外網的3.3.3.3,但外網不能telnet到內網;
5. 對內網訪問外網進行審計和跟蹤。
6. 若要允許R1能夠traceroute R3,而R3 不能traceroute R1呢?

實驗步驟:
1. 配置ospf協議:

 R1: router ospf 1
 Router-id 1.1.1.1
 Network 192.168.12.0 0.0.0.255 area 0
 Network 1.1.1.1 0.0.0.0 area 0
R2,R3類似。
 

 
2. 配置CBAC:
Access-list 100 permit icmp any any (允許內部ping外部)
Access-list 100 permit ospf any any (允許OSPF協議)
Access-list 100 permit tcp any host 3.3.3.3 eq telnet(當telnet成功,
回來的流量杯CBAC檢測)
Access-list 110 permit icmp any any echo-reply(允許外部迴應內
部ping包)
Access-list 110 permit ospf any any
ip inspect name itb tcp audit-trail on(配置CBAC,打開跟蹤功能)
no ip inspect alert-off(默認就是開啓的,不需要這條命令)
Int s0/0
Ip access-group 100 in
Ip inspect itb in
Int s0/1
Ip access-group 110 in

3. 若允許traceroute,則配置爲:
Access-list 100 permit icmp any any (允許內部ping外部)
Access-list 100 permit ospf any any (允許OSPF協議)
Access-list 100 permit tcp any host 3.3.3.3 eq telnet(當telnet成功,
回來的流量杯CBAC檢測)
Access-list 100 permit ip any any (允許IP流量,同時允許了
 


traceroute)
Access-list 110 permit icmp any any echo-reply(允許外部迴應內
部ping包)
Access-list 110 permit ospf any any
Access-list 110 permit icmp any any time-exceeded
Access-list 110 permit icmp any any unreachable(允許迴應內部到
外部的traceroute包)
ip inspect name itb tcp audit-trail on(配置CBAC,打開跟蹤功能)
no ip inspect alert-off(默認就是開啓的,不需要這條命令)
Int s0/0
Ip access-group 100 in
Ip inspect itb in
Int s0/1
Ip access-group 110 in

4. 查看:
R1#TELNET 3.3.3.3
登錄成功後可以在R2#show ip inspect session
 Show ip inspect config
 Debug ip inspect events
R1#traceroute 3.3.3.3可以到達。
 

 
 

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