吳體輝
(運城學院物理與電子工程系,山西運城044000)
隨著計算機網絡的迅猛發展,網絡安全問題日益凸顯。隨著攻擊水平與攻擊手段的不斷提高,防火墻單一的只能屏蔽外部攻擊不能有效阻止內部入侵的防護方式已經不能滿足網絡安全的需要。為了加強對內部入侵的防護能力,我們引入了入侵檢測系統。入侵檢測系統的檢測方式是:首先從網絡中提取信息,然后將提取的信息與庫中的信息進行比較來判斷是否存在入侵的跡象。[1]入侵檢測系統能夠主動的、實時的、動態的阻止和攔截網絡中的內、外攻擊行為,有效的彌補了靜態的防御工具防御能力不足的問題。入侵檢測系統的核心是規則庫,對于規則庫中不存在的入侵行為檢測能力較低。為了進一步提高入侵檢測系統的檢測能力,我們將神經網絡引入入侵檢測系統。引入神經網絡的入侵檢測系統能夠通過自學習檢測出新的攻擊方式,[2]檢測系統的漏報率會明顯降低。因此,將人工神經網絡技術應用于入侵檢測系統已經成為入侵檢測系統發展的方向。
本系統主要包含兩個部:一是,神經網絡的訓練部分。采用BP算法對神經網絡進行訓練,訓練數據用KDD CUP 1999數據集。二是,Snort檢測部分。通過預處理插件將神經網絡模塊接入Snort系統用以實現對數據的異常檢測。異常檢測完成后,正常數據流再由Snort系統中的誤用檢測模塊再次進行檢測。檢測完畢后,通常報警輸出模塊對檢測到的異常進行報警。Snort檢測部分是實時的,神經網絡的訓練部分是離線的。系統總體構架,如圖1所示。

圖1 系統總體構架Fig.1 Overall system architecture
數據包捕獲模塊是入侵檢測的基礎,為整個入侵檢測系統提供數據來源,是Snort系統的重要組成部分。數據捕獲的效率、可靠性與準確性決定了入侵檢測系統的整體性能。[3]
Snort系統數據包捕獲是基于Libpcap開發的,Libpcap通過調用庫函數來捕獲數據包,它是一個跨平臺的報文捕獲程序。本文設計的Snort系統是在Windows系統下運行的,因此選擇WinPcap(Libpcap在Windows平臺下的版本)來捕獲數據包。Win-Pcap包含三個相對獨立的部分:網絡組包過濾器(NPF)、低級動態鏈接庫(Packet.dll)與高級動態鏈接庫Wpcap.dll。網絡組包過濾器(NPF)是一個虛擬設備驅動器,它從將從網卡驅動程序收集到的數據包轉發給過濾器進行過濾。低級動態鏈接庫(Packet.dll)是一個內核級的包過濾動態鏈接庫,通過它可以直接訪問網絡組包過濾器(NPF)驅動程序的API來接收或發送數據包。高級動態鏈接庫Wpcap.dll是一個與系統無關的、高級的動態鏈接庫,用于為應用程序提供抽閑函數和監聽接口。
Winpcap捕包與過濾的步驟設計,流程如圖2所示。
(1)打開網卡,并將其設為混雜模式讓網卡接收所有流過網卡的幀。
(2)Network Tap(回調函數)在獲取監聽命令后,從網絡設備驅動程序處收集數據包并將監聽到的數據包送給過濾程序。
(3)在Packet filter監聽到有數據包送達時,中間驅動程序調用分組驅動程序將數據傳遞給所有參與進程的分組過濾程序。
(4)再由Packet filter的過濾程序決定數據包的接收、丟棄與拷貝。
(5)分組過濾后,將未過濾掉的數據包送入核心緩沖區。在緩沖區滿了后,再將數據包拷貝到戶緩沖區。
(6)關閉網卡

圖2 Winpcap捕包與過濾流程Fig.2 Winpcap packet capture and filtering process
協議解析模塊是入侵檢測系統的基礎,直接影響到入侵檢測系統的性能。該模塊通過對捕獲到的數據包進行協議分析來檢測每個數據包的類型與特征。
在Snort內定義了一個核心數據結構——Packet數據結構。Packet結構通過將不同的指針指向捕獲包的各個協議層來完成對協議的解析。Snort的協議解析過程類似于Windows中協議棧的處理過程,即從數據鏈路層到網絡層再到傳輸層逐層地進行解析。具體而言,當捕獲到數據包后,首先由解析函數ProcessPackte()函數根據數據幀的類型調用相應的鏈路層解析函數(DecodesilpPkt()),如由串行線上數據包解析函數(DecodesilpPkt())來對串行線上的數據包進行解析。在DecodesilpPkt()解析函數中,進一步調用IP協議解析函數(DecodeIP())對網絡層的IP協議進行解析,最后調用傳輸層TCP解析函數對TCP數據包進行解析,并將其解析結果存儲到相應的數據結構中。協議解析流程如圖3所示。

圖3 協議解析流程Fig.3 Protocol Analysis Process
經過協議分析后的數據包在進入檢測模塊之前,需被送入預處理模塊進行預處理。預處理模塊利用協議解析能將數據包分流到不同的規則庫中,使所需匹配的規則大大減少,從而進一步提高檢測的準確性與效率。具體處理過程如下:先調用輸出插件的初始化函數(InitOutputPlugins())對所有輸出插件進行注冊。接著調用預處理插件初始化函數(InitPreprocessors())與插件初始化函數(InitPlugins())對檢測引擎插件與預處理插件進行注冊與初始化。需初始化的插件與相對應的功能如表1所示。

表1 需初始化的插件與相對應的功能Table 1 Output plug-ins features
(1)神經網絡參數
訓練數據采用KDD CUP 1999數據集,輸出層神經元數與輸入層神經元數分別定為4個與10個,隱含層神經元由實驗確定。神經網絡訓練后,將偏置與連接權值存儲到相應的文件中,由異常檢測模塊讀取并且對這些參數進行計算,最后根據輸出值與(0,1)的接近程度判斷是否存在異常。
(2)神經網絡的插入
Snort系統內含三種類型的插件:一是,以“spp_”開頭的預處理插件。該插件運行在誤用檢測之前。二是,以“sp_”開頭的處理插件。該插件運行在誤用檢測階段。三是,以“spo_”開頭的輸出插件。[4]該插件運行在誤用檢測階段與檢測后。本設計將神經網絡的異常檢測模塊設計成預處理插件。在誤用檢測之前的預處理模塊完成對數據的異常檢測。
Snort是基于特征的入侵檢測系統,以鏈表的形式將數據包與規則進行匹配來判斷數據是否存在異常,匹配工作由檢測引擎完成。檢測引擎將數據包與規則庫進行分析、比較、匹配,若數據包數據與規則庫中的規則匹配成功,則表明該數據存在異常,此時由報警輸出模塊按指定的輸出格式報警,同時丟棄掉該數據包。檢測引擎具有兩個功能:一是,規則的建立與翻譯。Snort系統啟動時,系統先由ParseRulesFile()函數讀取規則文件,并且建立一個由指向檢測插件的指針、規則樹節點與選擇樹節點組成。二是,基于規則的檢測引擎。當捕獲的數據包到達誤用檢測模塊時,Snort系統首先將檢測規則頭部與 Activation、Dynamic、Alert、Pass、log 這 5 中規則類型依次進行匹配。規則頭匹配完成后,再依次進行規則樹節點與選項樹節點的匹配,若匹配成功,則按指定輸出格式報警。匹配過程如圖4所示。

圖4 匹配過程Fig.4 matching?process
該模塊的功能由輸出插件來實現,輸出插件負責顯示與記錄所需要的信息,并對檢測到的異常數據包進行報警。Snort系統中輸出插件與其他插件不同,進去它的入口不止一個,在不同的階段會有不同的部件使用輸出插件。Snort中輸出插件主要有:Alert_fast、Alert_unixsock、Alert- syslog、Alert_full、Log_tcpdump、數據庫輸出插件。[5]

表2 輸出插件功能介紹Table 2 Output plug-ins features
主機:CPU 為 Core(TM)2 T6600 2.20GHz,硬盤:500 G,內存:4GB。
運行平臺:Windows XP Professional,l0兆自適應局域網。
測試數據:訓練數據用KDD CUP 1999數據集。隨機選取正常樣本54669條。各種攻擊類型一次攻擊中選取攻擊數據8341條。檢測樣本分布如表3所示。

表3 樣本分布Table 3 Distribution of samples
參數設定:
(1)訓練速率設定為0.13
(2)允許誤差設定為0.002
(3)初始權值為一組非零隨機數
(4)初始閾值為一組非零隨機數
(5)輸入層神經元個數為10
(6)輸出層神經元個數為4
(7)隱含層神經元個數由實驗獲得

表4 引入神經網絡前后系統對各種攻擊的檢測率Table 4 Detection rate of system for various attack of before and after the introduction of neural network
實驗結果表明,在入侵檢測系統中引入神經網絡作為異常檢測模塊后,系統的漏報率低,并且對各種攻擊的檢測能力較強。同時,隨著神經網絡隱含神經元的提高,系統的對各種攻擊的檢測能力明顯提高。
本文是在Snort系統的基礎上設計的一款應用于IPv6協議的入侵檢測系統。為了提高整個系統的檢測率,在Snort系統引入了神經網絡模塊來對網絡中的數據進行異常檢測。異常檢測后,將正常數據送到誤用檢測模塊再次進行檢測,這樣在提高檢測率的同時降低了系統的漏報率,使整個系統的性能得到顯著提高。實驗結果表明,該系統對真實網絡環境具有較強的檢測監控能力,能夠給用戶提供更強、更可靠的網絡安全防護。
[1]張勇,張德運.基于分布協作式代理的網絡入侵檢測技術的研究與實現[J].計算機學報,2001(7).
[2]楊瑞偉,閆懷志,李雨飛.從入侵檢測到入侵防護[J].計算機安全,2005(1).
[3]李鴻培,王新梅.基于神經網絡的入侵檢測系統模型[J].西安電子科技大學學報,1999(5).
[4]戴英俠,連一峰,王航.系統安全與入侵檢測[M].北京:清華大學出版社,2002.
[5]張楠.新一代入侵檢測技術及應用——基于協議分析技術的入侵檢測系統模型研究[J].計算機安全,2004(12).