吳體輝
(運城學院物理與電子工程系,山西運城044000)
隨著計算機網(wǎng)絡(luò)的迅猛發(fā)展,網(wǎng)絡(luò)安全問題日益凸顯。隨著攻擊水平與攻擊手段的不斷提高,防火墻單一的只能屏蔽外部攻擊不能有效阻止內(nèi)部入侵的防護方式已經(jīng)不能滿足網(wǎng)絡(luò)安全的需要。為了加強對內(nèi)部入侵的防護能力,我們引入了入侵檢測系統(tǒng)。入侵檢測系統(tǒng)的檢測方式是:首先從網(wǎng)絡(luò)中提取信息,然后將提取的信息與庫中的信息進行比較來判斷是否存在入侵的跡象。[1]入侵檢測系統(tǒng)能夠主動的、實時的、動態(tài)的阻止和攔截網(wǎng)絡(luò)中的內(nèi)、外攻擊行為,有效的彌補了靜態(tài)的防御工具防御能力不足的問題。入侵檢測系統(tǒng)的核心是規(guī)則庫,對于規(guī)則庫中不存在的入侵行為檢測能力較低。為了進一步提高入侵檢測系統(tǒng)的檢測能力,我們將神經(jīng)網(wǎng)絡(luò)引入入侵檢測系統(tǒng)。引入神經(jīng)網(wǎng)絡(luò)的入侵檢測系統(tǒng)能夠通過自學習檢測出新的攻擊方式,[2]檢測系統(tǒng)的漏報率會明顯降低。因此,將人工神經(jīng)網(wǎng)絡(luò)技術(shù)應用于入侵檢測系統(tǒng)已經(jīng)成為入侵檢測系統(tǒng)發(fā)展的方向。
本系統(tǒng)主要包含兩個部:一是,神經(jīng)網(wǎng)絡(luò)的訓練部分。采用BP算法對神經(jīng)網(wǎng)絡(luò)進行訓練,訓練數(shù)據(jù)用KDD CUP 1999數(shù)據(jù)集。二是,Snort檢測部分。通過預處理插件將神經(jīng)網(wǎng)絡(luò)模塊接入Snort系統(tǒng)用以實現(xiàn)對數(shù)據(jù)的異常檢測。異常檢測完成后,正常數(shù)據(jù)流再由Snort系統(tǒng)中的誤用檢測模塊再次進行檢測。檢測完畢后,通常報警輸出模塊對檢測到的異常進行報警。Snort檢測部分是實時的,神經(jīng)網(wǎng)絡(luò)的訓練部分是離線的。系統(tǒng)總體構(gòu)架,如圖1所示。
圖1 系統(tǒng)總體構(gòu)架Fig.1 Overall system architecture
數(shù)據(jù)包捕獲模塊是入侵檢測的基礎(chǔ),為整個入侵檢測系統(tǒng)提供數(shù)據(jù)來源,是Snort系統(tǒng)的重要組成部分。數(shù)據(jù)捕獲的效率、可靠性與準確性決定了入侵檢測系統(tǒng)的整體性能。[3]
Snort系統(tǒng)數(shù)據(jù)包捕獲是基于Libpcap開發(fā)的,Libpcap通過調(diào)用庫函數(shù)來捕獲數(shù)據(jù)包,它是一個跨平臺的報文捕獲程序。本文設(shè)計的Snort系統(tǒng)是在Windows系統(tǒng)下運行的,因此選擇WinPcap(Libpcap在Windows平臺下的版本)來捕獲數(shù)據(jù)包。Win-Pcap包含三個相對獨立的部分:網(wǎng)絡(luò)組包過濾器(NPF)、低級動態(tài)鏈接庫(Packet.dll)與高級動態(tài)鏈接庫Wpcap.dll。網(wǎng)絡(luò)組包過濾器(NPF)是一個虛擬設(shè)備驅(qū)動器,它從將從網(wǎng)卡驅(qū)動程序收集到的數(shù)據(jù)包轉(zhuǎn)發(fā)給過濾器進行過濾。低級動態(tài)鏈接庫(Packet.dll)是一個內(nèi)核級的包過濾動態(tài)鏈接庫,通過它可以直接訪問網(wǎng)絡(luò)組包過濾器(NPF)驅(qū)動程序的API來接收或發(fā)送數(shù)據(jù)包。高級動態(tài)鏈接庫Wpcap.dll是一個與系統(tǒng)無關(guān)的、高級的動態(tài)鏈接庫,用于為應用程序提供抽閑函數(shù)和監(jiān)聽接口。
Winpcap捕包與過濾的步驟設(shè)計,流程如圖2所示。
(1)打開網(wǎng)卡,并將其設(shè)為混雜模式讓網(wǎng)卡接收所有流過網(wǎng)卡的幀。
(2)Network Tap(回調(diào)函數(shù))在獲取監(jiān)聽命令后,從網(wǎng)絡(luò)設(shè)備驅(qū)動程序處收集數(shù)據(jù)包并將監(jiān)聽到的數(shù)據(jù)包送給過濾程序。
(3)在Packet filter監(jiān)聽到有數(shù)據(jù)包送達時,中間驅(qū)動程序調(diào)用分組驅(qū)動程序?qū)?shù)據(jù)傳遞給所有參與進程的分組過濾程序。
(4)再由Packet filter的過濾程序決定數(shù)據(jù)包的接收、丟棄與拷貝。
(5)分組過濾后,將未過濾掉的數(shù)據(jù)包送入核心緩沖區(qū)。在緩沖區(qū)滿了后,再將數(shù)據(jù)包拷貝到戶緩沖區(qū)。
(6)關(guān)閉網(wǎng)卡
圖2 Winpcap捕包與過濾流程Fig.2 Winpcap packet capture and filtering process
協(xié)議解析模塊是入侵檢測系統(tǒng)的基礎(chǔ),直接影響到入侵檢測系統(tǒng)的性能。該模塊通過對捕獲到的數(shù)據(jù)包進行協(xié)議分析來檢測每個數(shù)據(jù)包的類型與特征。
在Snort內(nèi)定義了一個核心數(shù)據(jù)結(jié)構(gòu)——Packet數(shù)據(jù)結(jié)構(gòu)。Packet結(jié)構(gòu)通過將不同的指針指向捕獲包的各個協(xié)議層來完成對協(xié)議的解析。Snort的協(xié)議解析過程類似于Windows中協(xié)議棧的處理過程,即從數(shù)據(jù)鏈路層到網(wǎng)絡(luò)層再到傳輸層逐層地進行解析。具體而言,當捕獲到數(shù)據(jù)包后,首先由解析函數(shù)ProcessPackte()函數(shù)根據(jù)數(shù)據(jù)幀的類型調(diào)用相應的鏈路層解析函數(shù)(DecodesilpPkt()),如由串行線上數(shù)據(jù)包解析函數(shù)(DecodesilpPkt())來對串行線上的數(shù)據(jù)包進行解析。在DecodesilpPkt()解析函數(shù)中,進一步調(diào)用IP協(xié)議解析函數(shù)(DecodeIP())對網(wǎng)絡(luò)層的IP協(xié)議進行解析,最后調(diào)用傳輸層TCP解析函數(shù)對TCP數(shù)據(jù)包進行解析,并將其解析結(jié)果存儲到相應的數(shù)據(jù)結(jié)構(gòu)中。協(xié)議解析流程如圖3所示。
圖3 協(xié)議解析流程Fig.3 Protocol Analysis Process
經(jīng)過協(xié)議分析后的數(shù)據(jù)包在進入檢測模塊之前,需被送入預處理模塊進行預處理。預處理模塊利用協(xié)議解析能將數(shù)據(jù)包分流到不同的規(guī)則庫中,使所需匹配的規(guī)則大大減少,從而進一步提高檢測的準確性與效率。具體處理過程如下:先調(diào)用輸出插件的初始化函數(shù)(InitOutputPlugins())對所有輸出插件進行注冊。接著調(diào)用預處理插件初始化函數(shù)(InitPreprocessors())與插件初始化函數(shù)(InitPlugins())對檢測引擎插件與預處理插件進行注冊與初始化。需初始化的插件與相對應的功能如表1所示。
表1 需初始化的插件與相對應的功能Table 1 Output plug-ins features
(1)神經(jīng)網(wǎng)絡(luò)參數(shù)
訓練數(shù)據(jù)采用KDD CUP 1999數(shù)據(jù)集,輸出層神經(jīng)元數(shù)與輸入層神經(jīng)元數(shù)分別定為4個與10個,隱含層神經(jīng)元由實驗確定。神經(jīng)網(wǎng)絡(luò)訓練后,將偏置與連接權(quán)值存儲到相應的文件中,由異常檢測模塊讀取并且對這些參數(shù)進行計算,最后根據(jù)輸出值與(0,1)的接近程度判斷是否存在異常。
(2)神經(jīng)網(wǎng)絡(luò)的插入
Snort系統(tǒng)內(nèi)含三種類型的插件:一是,以“spp_”開頭的預處理插件。該插件運行在誤用檢測之前。二是,以“sp_”開頭的處理插件。該插件運行在誤用檢測階段。三是,以“spo_”開頭的輸出插件。[4]該插件運行在誤用檢測階段與檢測后。本設(shè)計將神經(jīng)網(wǎng)絡(luò)的異常檢測模塊設(shè)計成預處理插件。在誤用檢測之前的預處理模塊完成對數(shù)據(jù)的異常檢測。
Snort是基于特征的入侵檢測系統(tǒng),以鏈表的形式將數(shù)據(jù)包與規(guī)則進行匹配來判斷數(shù)據(jù)是否存在異常,匹配工作由檢測引擎完成。檢測引擎將數(shù)據(jù)包與規(guī)則庫進行分析、比較、匹配,若數(shù)據(jù)包數(shù)據(jù)與規(guī)則庫中的規(guī)則匹配成功,則表明該數(shù)據(jù)存在異常,此時由報警輸出模塊按指定的輸出格式報警,同時丟棄掉該數(shù)據(jù)包。檢測引擎具有兩個功能:一是,規(guī)則的建立與翻譯。Snort系統(tǒng)啟動時,系統(tǒng)先由ParseRulesFile()函數(shù)讀取規(guī)則文件,并且建立一個由指向檢測插件的指針、規(guī)則樹節(jié)點與選擇樹節(jié)點組成。二是,基于規(guī)則的檢測引擎。當捕獲的數(shù)據(jù)包到達誤用檢測模塊時,Snort系統(tǒng)首先將檢測規(guī)則頭部與 Activation、Dynamic、Alert、Pass、log 這 5 中規(guī)則類型依次進行匹配。規(guī)則頭匹配完成后,再依次進行規(guī)則樹節(jié)點與選項樹節(jié)點的匹配,若匹配成功,則按指定輸出格式報警。匹配過程如圖4所示。
圖4 匹配過程Fig.4 matching?process
該模塊的功能由輸出插件來實現(xiàn),輸出插件負責顯示與記錄所需要的信息,并對檢測到的異常數(shù)據(jù)包進行報警。Snort系統(tǒng)中輸出插件與其他插件不同,進去它的入口不止一個,在不同的階段會有不同的部件使用輸出插件。Snort中輸出插件主要有:Alert_fast、Alert_unixsock、Alert- syslog、Alert_full、Log_tcpdump、數(shù)據(jù)庫輸出插件。[5]
表2 輸出插件功能介紹Table 2 Output plug-ins features
主機:CPU 為 Core(TM)2 T6600 2.20GHz,硬盤:500 G,內(nèi)存:4GB。
運行平臺:Windows XP Professional,l0兆自適應局域網(wǎng)。
測試數(shù)據(jù):訓練數(shù)據(jù)用KDD CUP 1999數(shù)據(jù)集。隨機選取正常樣本54669條。各種攻擊類型一次攻擊中選取攻擊數(shù)據(jù)8341條。檢測樣本分布如表3所示。
表3 樣本分布Table 3 Distribution of samples
參數(shù)設(shè)定:
(1)訓練速率設(shè)定為0.13
(2)允許誤差設(shè)定為0.002
(3)初始權(quán)值為一組非零隨機數(shù)
(4)初始閾值為一組非零隨機數(shù)
(5)輸入層神經(jīng)元個數(shù)為10
(6)輸出層神經(jīng)元個數(shù)為4
(7)隱含層神經(jīng)元個數(shù)由實驗獲得
表4 引入神經(jīng)網(wǎng)絡(luò)前后系統(tǒng)對各種攻擊的檢測率Table 4 Detection rate of system for various attack of before and after the introduction of neural network
實驗結(jié)果表明,在入侵檢測系統(tǒng)中引入神經(jīng)網(wǎng)絡(luò)作為異常檢測模塊后,系統(tǒng)的漏報率低,并且對各種攻擊的檢測能力較強。同時,隨著神經(jīng)網(wǎng)絡(luò)隱含神經(jīng)元的提高,系統(tǒng)的對各種攻擊的檢測能力明顯提高。
本文是在Snort系統(tǒng)的基礎(chǔ)上設(shè)計的一款應用于IPv6協(xié)議的入侵檢測系統(tǒng)。為了提高整個系統(tǒng)的檢測率,在Snort系統(tǒng)引入了神經(jīng)網(wǎng)絡(luò)模塊來對網(wǎng)絡(luò)中的數(shù)據(jù)進行異常檢測。異常檢測后,將正常數(shù)據(jù)送到誤用檢測模塊再次進行檢測,這樣在提高檢測率的同時降低了系統(tǒng)的漏報率,使整個系統(tǒng)的性能得到顯著提高。實驗結(jié)果表明,該系統(tǒng)對真實網(wǎng)絡(luò)環(huán)境具有較強的檢測監(jiān)控能力,能夠給用戶提供更強、更可靠的網(wǎng)絡(luò)安全防護。
[1]張勇,張德運.基于分布協(xié)作式代理的網(wǎng)絡(luò)入侵檢測技術(shù)的研究與實現(xiàn)[J].計算機學報,2001(7).
[2]楊瑞偉,閆懷志,李雨飛.從入侵檢測到入侵防護[J].計算機安全,2005(1).
[3]李鴻培,王新梅.基于神經(jīng)網(wǎng)絡(luò)的入侵檢測系統(tǒng)模型[J].西安電子科技大學學報,1999(5).
[4]戴英俠,連一峰,王航.系統(tǒng)安全與入侵檢測[M].北京:清華大學出版社,2002.
[5]張楠.新一代入侵檢測技術(shù)及應用——基于協(xié)議分析技術(shù)的入侵檢測系統(tǒng)模型研究[J].計算機安全,2004(12).