智能主動防御系統(08-100)
2.1.3 智能防火墻的實現
本文引用地址:http://www.j9360.com/article/91772.htm智能防火墻的實現可以分為用戶態程序和NDIS中間層驅動程序兩部分,如圖3所示。
圖3 智能防火墻的實現
1. 用戶態程序的實現
用戶態程序使用了WinPcap開發庫和多線程技術。利用WinPcap可以實現捕獲原始數據包(包括在共享網絡上各主機發送/接收的以及相互之間交換的數據包)以及在網絡上發送原始的數據包;
本程序的監聽線程中使用了WinPcap的數據包捕獲功能,對到達主機每個網絡接口的數據包進行分析。本程序的掃描線程則使用了WinPcap的發送原始數據包的功能,進行局域網存活主機的掃描。
整個實現用戶態程序包括以下三部分的功能:
1) 與攻擊者進行交互, 提取未知入侵特征碼
2) 將配置信息傳遞給NDIS中間層驅動
3) 將NDIS中間層驅動反饋信息提示給用戶
智能防火墻為了實現主機網絡的全面保護,對每個網絡接口都啟動了單獨的保護線程,因此對于裝有多網卡的計算機,智能防火墻對每個接口都起到了保護作用。
2. 維護存活主機列表
程序內部維護一張存活主機列表,并且定時對其進行更新(10s)。由于列表中元素增刪操作比較頻繁,因此存活主機列表采用便于增刪操作的“單鏈表”描述。
更新存活主機列表由掃描和監聽兩個線程配合進行:
1) 掃描線程:程序利用WinPcap逐一向網內所有主機發出ARP請求數據包。
2) 監聽線程: 程序利用WinPcap對到達本機的ARP應答數據包進行分析,并對存活主機列表進行更新。
3. 解決智能防火墻的相互干擾
當局域網內運行有兩個或兩個以上的智能防火墻實例時,其中一個實例在更新存活主機列表時會向每臺主機發出ARP請求,其中也包括向不存活主機發出的請求。如果不做任何處理,其它的智能防火墻就會認為這是攻擊,就會向其進行虛假應答,從而導致該智能防火墻不能得到正確的存活主機列表。如果互相干擾那么智能防火墻就不能正常工作了。
為了解決這個問題,我們在智能防火墻發出的ARP請求數據包的附加數據區設置了標志。智能防火墻就能明確是敵是友了。
4. 發現未知入侵
當程序的監聽線程檢測到有ARP請求時,檢查存活主機列表,如果發現是對未存活主機的ARP請求,則偽裝成目的主機給出虛假應答。
當智能防火墻給攻擊者發出虛假的ARP應答時,攻擊主機發送給不存活主機的數據都會發送給本機(智能防火墻)。智能防火墻的監聽線程會對接收到的數據包進行分析并根據事先設置好的應答規則對其進行應答,并對攻擊主機發送的數據包進行特征提取,存入特征數據庫。
5. 特征提取采用的方法
入侵數據包的特征提取是智能防火墻用戶態程序的核心工作,特征提取的好壞直接影響著整個防火墻系統的性能。智能防火墻采取的特征提取方法是:去掉數據包傳輸層以下的協議頭數據,對剩余部分數據(應用層協議頭和應用層數據體)進行“摘要算法(MD5)”計算,計算的結果就是我們所要提取的入侵特征。這種特征提取方法具有結果唯一性和低存貯空間的特點。為在底層驅動中進行數據包特征的比對提供了便利。
評論