天天看點

HCIE-Security Day5:安全政策(二)

HCIE-Security Day5:安全政策(二)
HCIE-Security Day5:安全政策(二)
HCIE-Security Day5:安全政策(二)

用到ASPF技術最多的是多通道協定、NAT SERVER、P2P協定、迅雷、QQ等

aspf的優點

1、性能依然可以保持

2、安全政策隻需要放行協商通道,第二通道由ASPF生成的server map臨時放行,後續産生詳細的會話表後,将server map表删除。

3、安全性更高。

多通道協定

通信過程中,使用多個端口的協定。會由用戶端和伺服器之間的控制通道動态協商出資料通道,即通信雙方的端口号是不固定的。而在配置aspf功能後,裝置檢測到控制通道的協商,根據關鍵封包載荷中的位址資訊動态建立server-map表項,用于資料通道發起連接配接時進行查找。這個server-map表項包含了多通道協定封包中協商的資料通道的資訊。

比較知名的多通道協定有FTP,FTP有兩個通道,占用兩個端口,一個21号端口和一個随機端口,分别是控制通道和資料通道,控制通道負責FTP相關指令的傳遞,資料通道負責資料的上載下載下傳。

典型的多通道協定FTP

FTP的工作模式

控制通道總是由client發起。具體的工作方式是:

server有兩個程序 一個主程序 負責接收新的請求 若幹從程序 負責處理單個請求 

主程序的工作步驟

監聽21号端口 等待client發來的連接配接請求

啟動從屬程序 處理client發來的連接配接請求 

client向server的21号端口發起連接配接請求時 還會攜帶一個随機端口 作為建立資料傳送的端口 

server使用20号端口與client的提供端口建立資料傳送連接配接

ftp有兩種工作模式:主動模式和被動模式,不管哪種模式,控制連接配接總是由client主動發起的。而主動模式下,由server主動發起資料連接配接,被動模式下,由client主動發起資料連接配接。

1、主動模式

資料通道由server發起,認為工作在主動模式。

主動模式 (2步):server主動連接配接client 

1、client使用随機端口N 向server的21号端口建立控制連接配接 發送port指令 通告自己的資料傳送端口M

2、server通過自己的20号端口主動向client的M端口建立資料連接配接 

2、被動模式

資料通道由client發起,認為工作在被動模式。

被動模式(3步):client主動連接配接server

1、client使用随機端口N 向server的21号端口建立控制連接配接 (組成TCP會話)發送pasv指令 

2、server随機打開一個高端端口P作為自己的資料傳送端口 發送pasv指令 通告client自己的資料傳送端口是P 

3、client使用随機端口N+1連接配接P端口 建立資料連接配接

因為ASPF的存在,在主動模式下,盡管隻是做了控制通道的從trust到untrust的ftp的放行,卻依然可以從untrust的server主動建立資料通道,産生了會話表項,且該表項依賴的安全政策是控制通道的。

是以我們可以再次了解ASPF,ASPF實作了對多通道協定的應用層資訊的解析,比如ftp協定在協商時的某些資料。預測第二個通道建立時的特征,形成server map表項(伺服器映射表)。

aspf的開啟

firewall detect ftp//預設開啟
undo firewall detect ftp      

aspf關閉後,控制通道的會話依然可以建立,但是資料通道無法建立了。

server-map表項

server-map是一種映射關系,當資料連接配接比對了動态server-map表項時,不需要再查找包過濾政策,保證了某些特殊應用的正常轉發。另一種情況,當資料連接配接比對server-map表,會對封包中ip和端口進行轉換。

server map是一種臨時的會話表項,它不夠精細(沒有預測源端口),但是能夠有效支援多通道協定的工作。

檢視server-map表項

display firewall      
HCIE-Security Day5:安全政策(二)
HCIE-Security Day5:安全政策(二)

aspf和server-map并不完全對等,通過aspf可以生成server-map表項,通過其他的方式也可以生成server-map表項。可以了解為aspf對多通道協定的支援就是生成server-map表項。

server-map的産生

配置aspf後,轉發多通道協定資料時動态生成

配置aspf後,轉發stun協定資料時動态生成

配置nat-server後,靜态生成

配置nat no-pat後,轉發nat協定資料時動态生成

端口識别

防火牆具有端口識别功能,端口識别對多通道協定的支援

需求&場景

為什麼會開發這個功能?

有一些多通道協定可以自定義端口,比如ftp就可以修改預設的21端口或者20端口。為了安防需要,需要關閉知名端口,那麼對于一些協定,就需要修改預設端口号。

預設情況下,防火牆是通過封包攜帶的端口号來判斷資料是什麼協定或者應用産生的。那麼如果不進行額外配置,就會導緻防火牆無法識别流量,進而無法對流量進行控制。這時候,我們就需要配置端口識别或者叫做端口映射。

端口識别是把非标準協定端口映射成可以識别的應用協定端口。

有時候我們會存在誤解,即防火牆不是通過ASPF直接解析應用層資料嗎?那麼通過對應用層資料的分析,就可以知道是什麼類型的流量了呀?但是這樣一來資料就進行應用層分析的工作量太大了,如果真的這麼做,防火牆的過濾效率會很差,實際上,在進行ASPF動作前,防火牆還會過一遍初篩,即對封包頭(srcip srcport dstip dstport protocol)進行初步分析,判斷好它是不是某種類型的流量,再去針對該種類型的流量進行相應的ASPF分析。(是以其實我們在配置ASPF的時候也是針對某一類協定配置的嘛)

配置方法

acl 2000rule permit source 20.0.0.1 0//ftp server的ip位址,這裡的0是0.0.0.0的縮寫,表示唯一的一台主機port-mapping FTP port 31 acl 2000      

這個配置我們可以了解為:如果有資料要去通路ftp server 的31号端口的時候,就把這個資料映射為ftp資料。并由防火牆針對該資料進行進一步的ASPF解析。

會對原始封包内容進行修改嗎?比如說将資料標頭的dst port 修改為20?

不會

單通道協定有必要做端口識别嗎?

沒有必要,因為我們在配置的時候就已經知道需要開放哪些端口了。隻需要我們自定義一個服務就好了。

ip service-set weboa type object service protocol tcp destination-port 8900//自定義在防火牆是建立了weboa的服務,比對的是目标端口8900
security-policy
rule name r1service weboa action permit      

分片緩存

用來緩存先于首片到達裝置的封包分片。

網絡裝置在傳輸封包時,如果裝置上配置的MTU小于封包長度,則會将封包分片後繼續發送,理想情況下,各分片封包将按照固定的先後順序在網絡中傳輸,在實際傳輸過程中,可能存在首片分片封包不是第一個到達防火牆的現象。此時,防火牆将丢棄該系列分片封包。為保證會話的正常進行,預設情況下,防火牆支援分片緩存功能。裝置會将非首片的分片封包緩存至分片散清單,等待首片到來建立會話後,将所有分片封包進行轉發。若在指定的時間内首片分片沒有到來,防火牆将丢棄分片緩存中的分片封包。

在vpn應用中(如IPSEC和GRE),由于需要裝置對分片封包進行重組後解密或者解封裝,裝置才能進行後續處理,是以必須将裝置配置成分片緩存狀态,完成原始封包的分片緩存狀态,才可以正常進行NAT。

分片封包直接轉發功能一般用在不進行nat轉換的情況下,開啟該功能後防火牆将收到的分片封包直接轉發出去,不建立會話表。

開啟分片緩存的問題

如果網絡中存在攻*擊者,會發送大量的亂序分片封包,防火牆由于沒有收全,就會進行緩存,如果量太大,就會堵塞防火牆的分片散清單,進而對正常的封包分片無法進行緩存,導緻分片丢棄,tcp重傳,網絡出現大量丢包和延遲。

有4種辦法解決這個問題。

配置分片緩存老化時間(之前版本的方法)

firewall session aging-time fragment interval (1-40000),預設5s      

如果封包分片緩存時間過長,直接老化丢棄。(我可以緩存,但是我不會長時間緩存)

配置分片緩存數量(目前版本的方法)

firewall fragment-cache-maximum //ipv4最大32個,ipv6 32-255個      

當一個封包的分片數量超過配置的最大分片緩存數目時,封包将被丢棄。

開啟/關閉分片封包直接轉發功能

firewall fragment-forward enable/disable      

開啟後,收到分片封包會直接轉發,如果收到的分片是首片封包的話,會走正常的會話流程,如果首先收到的分片封包是後續分片封包時,不會走會話流程,直接透傳。隻要是分片,我就放行(非常危險)。

開啟/關閉分片封包直接丢棄功能

firewall fragment-discard enable/disable      

隻要是分片,我就丢棄,不會緩存和轉發。

長連接配接

很多應用沒有對tcp進行保活機制,因為使用者特别多,如果有1000個client周期性發送包活封包,就會對server的性能産生影響。

另一方面,即使如果某個時間沒有資料需要發,不會釋放連接配接。

但是防火牆存在會話表的老化機制(10min),如果這段時間内沒有收到新的tcp封包來重新整理會話表時,就會将該會話表老化掉。

這時候,client和server認為會話仍然保持建立,但是防火牆認為會話已經釋放,是以再有client和server之間的資料的互動,第一不是首包,第二會話表中不存在表項,防火牆就會根據狀态檢測機制丢棄掉。導緻大量丢包。

為了解決這個問題,就需要使用防火牆的長連接配接功能,這個時間預設情況下是1周(7*24)。

防火牆僅支援對TCP協定封包配置域間長連接配接功能

配置方法

security-policyrule name r1long-link enablelong-link aging-time 168(0-24000)