徐海東
[摘要]入侵檢測技術在網絡安全防護中所起的作用是至關重要的。詳細研究基于winpcap庫的網絡入侵檢測系統模型的實現,分析主要功能的實現,涉及到數據包捕獲、協議解析以及檢測等,為網絡安全又提供一道屏障。
[關鍵詞]入侵檢測協議解析檢測分析日志報警
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0920016-01
一、引言
隨著計算機及網絡的飛速發展,網絡技術的應用也日益普及。由于入侵檢測技術在網絡安全防護中所起的作用至關重要,因此國內外各科研機構非常重視對IDS(Intrusion Detection System)技術的研究。
二、網絡入侵檢測系統模型的框架設計
本文基于網絡的入侵檢測系統模型是在WINDOWS環境下實現的,它基于標準Winpcap庫的應用,使用其來捕獲數據包并觸發檢測過程。數據收集模塊從網絡上獲得所有的網絡數據包,進行過濾等簡單的處理后交給報文解碼模塊,進行報頭值檢查。檢查過后的報文經過預處理之后,全部交給攻擊檢測模塊(包含模式匹配和協議分析)。其中部分報文將傳一份拷貝給掃描攻擊檢測模塊,掃描攻擊檢測模塊對網絡段中主機的連接報文進行分析并作統計記錄,當統計值超過閾值時就報警[1]。
在循環檢測過程中,系統模型通過Winpcap接口從網絡中抓取數據包,然后調用數據包解析函數根據數據包的類型和所處的網絡層次對數據包進行協議解析。解析后的結果存放在一個Packet結構中。根據特征數組,對Packet的有效載荷部分進行區間劃分,同時合棄長度小于特征串的區間。對于劃分好的區間,計算每個區間的哈希特征值,在哈希空間中按照存儲規則進行搜索,查看是否有匹配記錄。如果存在,則進一步進行精確匹配;否則,進行下一個區間的哈希值計算。對于精確匹配成功的數據包,進行相應的報警響應操作。
三、網絡入侵檢測系統模型主要功能的實現
(一)系統模型的數據包捕獲。本文入侵檢測原型系統使用的抓包庫是Winpcap,它是Windows平臺下應用最為廣泛的數據包截取庫,它所使用的主要函數說明如下:
Char * pcap_lookupdev ( char * errbuf )
此函數用于得到一個抓獲包的描述信息,以便分析網絡層中的數據包信息,將在其它函數中用作實參調用。主要參數含義如下:device即為上一函數返回的網絡接口設備指針;snaplen定義了捕獲的最大字節數;promisc定義了是否將網卡設為混雜模式,本系統中將其設為1,以便接收所有流經該網卡的數據包;to_ms確定讀取包的時間限制;errbuf返回的錯誤信息。
Int pcap_compile ( pcap_t *p, struct bfp_program *fp, char *str, int optimize, bpf_u_int32 netmask )
該函數用于解析過濾規則串,填寫bpf_program結構,str為字符串形式的過濾表達式,過濾規則表達式可以為空,表示抓取所有通過的數據包。在編譯了過濾器后必須調用pcap_loop函數設置內核過濾器才能使之生效。
(二)系統模型的協議解析。協議解析模塊的主要函數是DecodeData
Link,它從數據捕獲模塊獲得網絡上的數據流,首先判斷是否是數據鏈路層的類型,接著根據不同的鏈路層類型以及協議樹進行第二層的協議解碼,然后繼續根據協議樹進行第三層以及更高層的協議解碼,最后將解碼的結果填充到Packet數據結構中,該過程中使用到的數據結構如下描述:
Typedef struct_Packet
{
Struct pacp_pkthdr *pkth; //BPF形式的結構數據指針
EtherARP *ah; //ARP/RARP協議報頭
IPHdr *iph, *orig_iph; //IP協議報頭
TCPHdr *tcph, *orig_tcph; //TCP協議報頭
UDPHdr *udph, *orig_udph; //UDP協議報頭
ICMPHdr *icmph, *orig_icmph; //ICMP協議報頭
……
Options ip_options[40]; //用于IP協議選項解碼的結構數組
u_int32_t ip_option_count; //報文中包含IP選項的數目
Options tcp_options[40]; //用于TCP協議選項解碼的結構數組
u_int32_t tcp_option_count; //包含TCP選項的數目
……} Packet;
(三)系統模型的檢測分析。檢測分析模塊是檢測引擎的核心,本模塊所采用的檢測算法是協議分析與哈希算法相結合的方法。當數據包解碼之后.首先根據協議標準進行協議分析,將不同類別的報文分派給不同的協議分析模塊,如果檢測到異常,就進行日志報警。對于未檢測到協議使用異常的,以及那些沒有對應的協議分析模塊的報文分派給特征匹配模塊,利用哈希算法的快速查找性能進行多模式的匹配,從而達到快速檢測入侵的目的[2]。
哈希空間使用的數據結構用于在檢測進行之前將規則庫中的相關內容存入哈希空間,并在檢測過程中用于匹配報文的哈希值。它包含以下三個部分:一對表示哈希空間的數組S61和S62(為6字節特征字符串設置),每個數組大小為64K。為每種類型的攻擊各維護一個1*256的特征數組T,數組元素中的數據表示此類攻擊中是否存在該字符。每種攻擊的特征數組用于在檢測進行前將規則庫中此類攻擊所含有的字符信息保存,以便于數據包的區間劃分。使用區間劃分方法優化后的哈希檢測方法為每種類型的攻擊字符串各維護一個表示掃描區間的鏈表partition,數組數據域有兩個數據分別表示區間的起點和終點。partition的數據結構:
typedef struct_partition{
u_intl6_t head; //表示區間的頭位置
u_intl6_t tail; //表示區間的尾位置
struct_partition *next; //指向下一個該結構的指針
}partition; //表示所有需掃描的區間
四、小結
總之,在網絡安全問題日益突出的今天,由于傳統的基于防火墻、身份認證以及加密技術的網絡安全防御體系本身存在的缺陷和不足,使得入侵檢測技術成為當前網絡安全方面研究的熱點和重要方向。它改變了以往的被動防御的特點,能夠主動地實時跟蹤各種危害系統安全的入侵行為,并做出及時的響應,尤其是在抵御網絡內部人員的入侵攻擊時,更有獨到的特點,成為防火墻之后的又一道安全防線。
參考文獻:
[1]李健、李成忠,分布式網絡入侵檢測系統研究與實現[M].西南交通大學出版社,2003.5.
[2]張麗、康占成,計算機網絡入侵檢測實現療法的教學研究[J].中國計算機報.2005,6(5):35-38.