周 曦 (安徽行政學院計算機工程系,安徽合肥230031)
隨著Internet的迅速發展,網絡安全問題引起了人們的高度關注,防火墻技術成為目前應用最為廣泛的一種網絡安全技術。狀態檢測技術的核心是在防火墻的底層為通信建立連接狀態信息,通過識別通信的狀態,可以帶來更高的效率、更有力的訪問控制和更強的安全性。
當前,個人計算機大都使用Windows系列的操作系統,而W indow s下的個人防火墻多采用傳統的包過濾技術,在安全性和效率方面都存在著不足[1]。因此,基于狀態檢測技術的個人防火墻成為研究重點。
狀態檢測機制通過上層協議 (TCP、UDP)的動態連接,以有關聯的IP數據流的觀點來處理數據包:如果某IP包是屬于一個已經建立的連接,那么就直接 “越過”協議棧中的規則檢測,提交主機處理;如果該IP包不屬于一個已經建立的連接,那么轉入正常的規則檢測。
2 功能模塊

圖1 功能模塊
基于狀態檢測個人防火墻的各個功能模塊如圖1所示。
1)數據包截獲模塊 利用NDIS中間驅動程序,截獲所有進出主機的網絡數據包,并提取出有效數據,供狀態解析模塊分析,根據分析結果決定如何對數據包的進行處理。
2)數據包解析模塊 對進出的網絡數據包進行協議分析,根據不同協議的協議類型,分別調用不同協議解析子程序對數據包的相關參數 (如地址、端口等)進行解析,將符合條件數據包的參數傳送給狀態檢測模塊。
3)狀態檢測模塊 添加、刪除狀態記錄,記錄回話的狀態,狀態記錄時間溢出值T的更新,根據狀態參數判斷該數據包在狀態表中是否有相應的狀態記錄,SYN(DOS)攻擊檢測和防御。
4)控管規則處理模塊 包過濾行為都是以過濾規則為標準,根據用戶定義的控管規則 (存儲在控管規則文件中)與截獲的數據包信息匹配處理。
5)控制臺應用模塊 它是主機狀態檢測防火墻系統與用戶交互的界面。用戶可以通過控制臺來啟停防火墻,對防火墻的控管規則表進行諸如修改、增加、刪除等各項操作,查看分析日志記錄等等。
狀態檢測防火墻先通過數據包截獲模塊截獲進出主機的所有數據包,再利用數據包解析模塊對數據包進行協議分析,然后根據不同協議的類型,分別調用不同協議解析子程序對數據包的相關參數 (如地址、端口等)進行解析,最后將符合條件數據包的參數再傳送給狀態檢測模塊。
IP包的解析后提取出2種協議——TCP和UDP,由于這2種協議的服務和工作方式的不同,所以對不同協議的數據包需要采用不同策略方法來進行過濾處理。下面分別討論TCP協議和UDP協議。
1)TCP數據包狀態檢測 TCP包狀態檢測流程如圖2所示。

圖2 TCP包狀態檢測流程
2)UDP數據包狀態檢測 UDP是一個簡單的傳輸層協議,它與TCP協議屬于同一層協議。UDP包是無連接的,所以不能直接進行狀態檢測。可為 UDP包建立 “狀態信息”,將UDP包的源地址、目的地址、源端口、目的端口等信息取出,加上狀態記錄數 (N)、連接狀態位 (S)等信息,作為UDP的狀態信息。這樣使用人為建立的狀態信息產生的一條連接,稱為 “虛連接”。在設置連接時間t和包序號M等配合進行狀態檢測。

圖3 UDP包的狀態檢測
接收 UDP包后,先取出源地址、目的地址、源端口、目的端口等信息,查詢狀態表確定是否存在狀態信息,如存在,則放行;否則進行數據包解析,保存該包的源地址、目的地址、源端口、目的端口等狀態信息,即建立 “虛連接”。當UDP包返回時,查詢狀態表中狀態屬性信息,符合允許返回,否則丟棄。其流程圖如圖3所示。
國內在狀態檢測防火墻技術的研究與應用方面與國外先進水平相比具有較大的差距,而且大多數的研究都集中在開放源代碼的Linux操作系統平臺之上,由于Linux操作與系統的使用相對W indow s操作系統更為困難,基于該平臺的防火墻的使用與設置也更具有專業性,所以對一般用戶來說具有較大的難度[2]。因此開發基于W indow s操作系統的個人狀態檢測防火墻便具有更為現實的意義。
[1]李兵.計算機局域網的安全性研究 [J].計算機安全,2007,(11):53~58.
[2]汪貴生,夏陽.計算機安全漏洞分類研究 [J].計算機安全,2008,(11):68~72.