【摘要】本文介紹了狀態(tài)檢測技術的發(fā)展和優(yōu)勢。通過分析狀態(tài)檢測防火墻對TCP數(shù)據(jù)包的處理流程,以及對狀態(tài)表和狀態(tài)遷移圖的分析,說明了狀態(tài)檢測的工作原理。在此基礎之上提出了一種對狀態(tài)檢測技術的測試方法,并且基于winpcap底層數(shù)據(jù)包截獲系統(tǒng),利用穿越測試法,最終實現(xiàn)對防火墻狀態(tài)檢測技術的測試。
【關鍵詞】防火墻 狀態(tài)檢測 測試 winpcap
近十幾年來,以Internet為主要標志的網(wǎng)絡技術飛速發(fā)展,給人類帶了巨大的便利。然而在人們享受網(wǎng)絡自由傳播信息的同時,網(wǎng)絡上的安全問題也日益突出。為了應對網(wǎng)絡安全問題,防火墻技術應運而生。最早出現(xiàn)的包過濾防火墻傳輸性能高,但安全性較差。隨后出現(xiàn)了應用代理防火墻,其安全性好,可伸縮性差。為了克服前兩種防火墻技術的不足,一種新的防火墻技術出現(xiàn)了——狀態(tài)檢測。
一、狀態(tài)檢測防火墻的工作原理
(一)狀態(tài)檢測的流程
當一個初始化TCP連接的SYN包到達狀態(tài)檢測防火墻時,防火墻首先將該包與規(guī)則庫匹配,規(guī)則庫的默認策略是丟棄,如果匹配完所有規(guī)則項之后,數(shù)據(jù)包仍然沒有被接受,那么拒絕此次連接。如果與其中某條規(guī)則項匹配成功,那么說明該次連接被允許,同時將本次會話記錄到狀態(tài)檢測表當中,并且設置一個合適的時間溢出值,超過這個值時,狀態(tài)項將被刪除。當不帶SYN標志的數(shù)據(jù)包到達狀態(tài)檢測防火墻時,只需要和狀態(tài)表的內(nèi)容進行匹配。如果匹配成功說明該數(shù)據(jù)包是屬于某條連接的,將直接轉(zhuǎn)發(fā)該數(shù)據(jù)包,不再與規(guī)則庫進行匹配。因為大部分數(shù)據(jù)包不是和規(guī)則庫進行匹配,而是和狀態(tài)表匹配,只有SYN數(shù)據(jù)包到來時才和規(guī)則庫進行匹配,狀態(tài)表里記錄的連接數(shù)通常比規(guī)則庫里的規(guī)則項少一個數(shù)量級,所以防火墻的工作性能會明顯提高。
(二)狀態(tài)表的設計
與傳統(tǒng)的靜態(tài)包過濾防火墻最大的不同是,狀態(tài)檢測防火墻增加了一個狀態(tài)連接表[3],記錄著能唯一標識每一條連接和涉及安全策略的相關狀態(tài)信息。狀態(tài)表中的每一個狀態(tài)項由九元組(sa,da,sp,dp,protocol_type,state,sequence_number,timeout,N)組成。依次代表源地址、目的地址、協(xié)議類型、該次連接的狀態(tài)、TCP連接中的數(shù)據(jù)包序列號(UDP或其它協(xié)議設為空)、該連接保持的時間(稱為超時值)、通過的與該狀態(tài)項匹配的數(shù)據(jù)包數(shù)目。State的值將在下一小節(jié)詳細介紹。Timeout的值減少到0時,該條狀態(tài)項將被刪除,它的初始值與State值和N值相關,其目的是為了抵御SYN Flood攻擊。
(三)TCP狀態(tài)遷移描述
RFC文檔中定義的TCP協(xié)議是面向連接的,一共涉及11個連接狀態(tài)的轉(zhuǎn)換,分別是LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK、TIME_WAIT、CLOSED。然而對于狀態(tài)檢測防火墻來說,狀態(tài)檢測表里State所記錄的狀態(tài)與TCP協(xié)議模型的狀態(tài)不完全一致[4]。有一部分防火墻記錄的比較詳細,因而能對經(jīng)過防火墻的TCP連接進行更精細準確的狀態(tài)識別,以保證更高的安全性;而有一部分防火墻所記錄的TCP狀態(tài)就相對簡單,只有幾個狀態(tài)的遷移。
二、狀態(tài)檢測的測試方法
(一)測試原理分析
目前,絕大多數(shù)狀態(tài)檢測防火墻的內(nèi)部技術細節(jié)仍屬于商業(yè)機密,因而在這里我們采用黑盒測試的方法,通過對比輸入和輸出的差異,測試出防火墻能否對TCP連接做出準確的狀態(tài)檢測。
當含有狀態(tài)的TCP數(shù)據(jù)包經(jīng)過狀態(tài)檢測防火墻時,防火墻按照TCP狀態(tài)遷移圖進行狀態(tài)轉(zhuǎn)換,對狀態(tài)表中的State值進行修改。也就是說向防火墻發(fā)送一個符合規(guī)則的新連接SYN數(shù)據(jù)包時,防火墻對此連接的描述應為SYN_SEND,該狀態(tài)只能有兩種狀態(tài)遷移方向,一個是超時關閉連接,另一個是收到SYNACK數(shù)據(jù)包之后跳轉(zhuǎn)轉(zhuǎn)到SYN_RECEIVED狀態(tài),如有其他的跳轉(zhuǎn)即為錯誤跳轉(zhuǎn)。基于以上原理的分析,狀態(tài)檢測防火墻需要測試的方面分為三類:①是否按照狀態(tài)遷移圖進行轉(zhuǎn)換;②處于某種狀態(tài)時是否出現(xiàn)錯誤的狀態(tài)轉(zhuǎn)換;③在相應狀態(tài)時是否只具備該狀態(tài)的功能。
(二)測試流程設計
TCP連接的建立需要客戶端和服務器進行數(shù)據(jù)包的交互,本測試將模擬TCP三次握手建立連接和四次握手斷開連接的過程,同時按照上節(jié)中的三個方面,發(fā)送一些輔助的數(shù)據(jù)包,來測試防火墻的狀態(tài)遷移過程。
三、測試的應用
搭建好測試環(huán)境之后,將不同的防火墻產(chǎn)品放置在被測設備的位置上,運行程序進行測試。測得Red Hat Enterprise Linux 5.4的netfilter狀態(tài)遷移正常,華為的Secoway USG2200狀態(tài)遷移正常,深信服的M5100-S未具備狀態(tài)檢測功能。
參考文獻:
[1]Stateful Inspection Technology. Check Point Software Technologies(White Paper)[EB/OL].2010(2011-9)http://www.checkpoint.com/products/technologies/stateful_inspect.html.
[2]LI Xin, JI Zheng-zhou, HU Ming-zeng. Stateful Inspection Firewall Session Table Processing: proceedings of International Conference on Information Technology: Coding and Computing (ITCC 2005) [C], Las Vegas[s.n], 2005.
[3]NOURELDIEN N A, OSMAN I M. A Stateful Inspection Module Architecture: proceedings of TENCON 2000[C], Kuala Lumpur: IEEE, 2000, 259-265.
[4]陳勇勛.更安全的Linux網(wǎng)絡[M].北京:電子工業(yè)出版社,2009:156-170.
作者簡介:
1.楊玉坡(1984),男(漢),河北省專用通信局,河北保定,助理工程師,大專,主要研究通信終端與業(yè)務。
2.王碩(1986),男(漢),河北石家莊人,助理工程師,碩士,主要研究領域為網(wǎng)絡安全方向。