摘 要:本文針對(duì)傳統(tǒng)BP算法容易陷入局部極小,收斂速度慢的缺陷,和Snort系統(tǒng)依賴規(guī)則匹配,無法檢測(cè)未知攻擊的問題,提出了一種基于蟻群算法改進(jìn)BP算法的入侵檢測(cè)算法,并應(yīng)用在Snort系統(tǒng)中,闡述了該模型的設(shè)計(jì)思想,將異常檢測(cè)和誤用檢測(cè)有機(jī)結(jié)合,提高了入侵檢測(cè)系統(tǒng)的效率。
關(guān)鍵詞:BP算法;蟻群算法;入侵檢測(cè)
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-7712 (2013) 18-0000-01
一、引言
Internet的發(fā)展給用戶生活、工作帶來了極大方便的同時(shí),其安全問題也變得日益突出,隨著新的攻擊技術(shù)不斷出現(xiàn),反攻擊已成為網(wǎng)絡(luò)安全研究關(guān)注的焦點(diǎn)。
IDS通常采用兩種基本的分析方法來分析事件,即誤用檢測(cè)和異常檢測(cè)。兩種分析方法各有優(yōu)缺點(diǎn),最有效的IDS應(yīng)該是主體技術(shù)使用誤用檢測(cè),并輔助采用異常檢測(cè)。
誤用檢測(cè)技術(shù)根據(jù)特征庫中存儲(chǔ)的已知的誤用或攻擊行為的特征描述,將采集到的信息與之匹配,判斷是否存在入侵行為。這種方法的檢測(cè)準(zhǔn)確度較高,并且可以知道入侵類別,方便管理員采取相應(yīng)措施。但無法檢測(cè)新的入侵攻擊行為。
異常檢測(cè)通過對(duì)正常行為建模,如果發(fā)現(xiàn)系統(tǒng)當(dāng)前活動(dòng)偏離了正常的模型狀態(tài),則懷疑存在入侵。該方法可以很好地發(fā)現(xiàn)未知的攻擊行為和變種攻擊。但是,由于用戶行為往往是經(jīng)常變化的,檢測(cè)系統(tǒng)要快速地自適應(yīng)這種改變又有很大困難,所以有一定的誤報(bào)率。
基于BP神經(jīng)網(wǎng)絡(luò)的IDS使用一種基本的反向傳播算法,使用梯度最速下降搜索技術(shù), 按代數(shù)函數(shù)最小的準(zhǔn)則遞歸求解網(wǎng)絡(luò)的權(quán)值和各節(jié)點(diǎn)的閾值[1]。但其收斂速度慢,存在局部最優(yōu)問題。Snort是基于特征/規(guī)則匹配的IDS,因?yàn)榧夹g(shù)簡單、容易實(shí)現(xiàn)、檢測(cè)速度快而受到歡迎。其缺點(diǎn)是,如果攻擊模式很常見,就會(huì)產(chǎn)生較高的誤報(bào)率。針對(duì)以上問題,本文提出一種基于蟻群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)算法,并應(yīng)用在Snort系統(tǒng)中,以充分發(fā)揮誤用檢測(cè)與異常檢測(cè)兩大技術(shù)優(yōu)勢(shì)。
二、改進(jìn)的BP算法介紹
針對(duì)傳統(tǒng)BP算法的缺點(diǎn),本文運(yùn)用一種進(jìn)化算法一蟻群算法。蟻群算法的靈感來源于螞蟻在尋找食物過程中發(fā)現(xiàn)路徑的行為,研究表明該算法具有較強(qiáng)的魯棒性、并行性、全局尋優(yōu)、易于算法融合等特點(diǎn),能夠在較短的時(shí)間內(nèi)發(fā)現(xiàn)問題的近似最優(yōu)解[2]。利用蟻群算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的權(quán)值。本文主要將蟻群算法中的蟻群系統(tǒng)與自適應(yīng)學(xué)習(xí)、動(dòng)量項(xiàng)的BP改進(jìn)算法三者結(jié)合進(jìn)行改進(jìn),在一定程度上克服了BP算法存在的上述問題。
(一)蟻群算法優(yōu)化BP算法基本思想
用蟻群算法之前,開始先將神經(jīng)網(wǎng)絡(luò)各個(gè)權(quán)值均勻分割成同樣大小若干等份,其權(quán)值的取值范圍為(0,1)。
螞蟻穿過每個(gè)權(quán)值變量,并在該權(quán)值變量定義域范圍內(nèi)只選擇一個(gè)值,完成所有權(quán)值變量的選擇后構(gòu)成神經(jīng)網(wǎng)絡(luò)的一組權(quán)值,再輸入訓(xùn)練樣本,計(jì)算得到網(wǎng)絡(luò)誤差,最后依據(jù)誤差修正信息素值。
具體步驟如下:(1)初始化。將權(quán)值Wi區(qū)間分割為SPN等份,然后對(duì)每個(gè)權(quán)值變量建立對(duì)應(yīng)的信息素表,根據(jù)自適應(yīng)學(xué)習(xí)率和加動(dòng)量項(xiàng)的BP改進(jìn)算法和蟻群所需參數(shù)分別對(duì)每個(gè)參數(shù)進(jìn)行初始化;(2)釋放k只螞蟻,螞蟻完全運(yùn)用隨機(jī)比例規(guī)則進(jìn)行概率選擇路徑,在蟻群系統(tǒng)中采用偽隨機(jī)比例規(guī)則,螞蟻記錄下所經(jīng)過點(diǎn)的標(biāo)號(hào)(記錄下第i個(gè)權(quán)值變量所選第m個(gè)值)。當(dāng)螞蟻對(duì)各個(gè)權(quán)值變量的選擇值后,螞蟻即完成一次循環(huán),所記錄的值構(gòu)成神經(jīng)網(wǎng)絡(luò)的一組權(quán)值,輸入訓(xùn)練樣本,得到相應(yīng)的誤差。如果完成一次循環(huán),轉(zhuǎn)向下一步(3),否則返回步驟(2);(3)信息素更新。對(duì)所有螞蟻進(jìn)行信息素更新,即蟻群系統(tǒng)的全局更新策略進(jìn)行信息素更新。(4)重復(fù)執(zhí)行步驟(2)、(3),直到滿足最大進(jìn)化代數(shù),當(dāng)滿足最大進(jìn)化代數(shù)時(shí),則進(jìn)行步驟(5);(5)采用自適應(yīng)學(xué)習(xí)率和加動(dòng)量項(xiàng)BP改進(jìn)算法進(jìn)一步訓(xùn)練;(6)采用測(cè)試樣本進(jìn)行測(cè)試。
(二)加動(dòng)量項(xiàng)和自適應(yīng)學(xué)習(xí)率BP改進(jìn)算法
在標(biāo)準(zhǔn)BP算法中,雖然具有非線性能力、泛化能力和較強(qiáng)的容錯(cuò)能力,但也有諸多問題。首先t時(shí)刻的權(quán)值調(diào)節(jié)只單單考慮t時(shí)刻的梯度變化,并沒有考慮在此之前的梯度變化方向,容易導(dǎo)致訓(xùn)練過程發(fā)生震蕩,收斂速度過慢,容易陷入局部極小的問題[3]。為此,本文提出了動(dòng)量項(xiàng)改進(jìn)方法。改進(jìn)主要有兩點(diǎn):(1)增加動(dòng)量項(xiàng):該方法為權(quán)值調(diào)整量在當(dāng)前變化量基礎(chǔ)上加上一個(gè)正比于前一個(gè)權(quán)值調(diào)整量的動(dòng)向量,用動(dòng)向量反映以前積累的調(diào)整經(jīng)驗(yàn),這樣可以減小震蕩趨勢(shì),提高訓(xùn)練速度。(2)自適應(yīng)調(diào)節(jié)學(xué)習(xí)率:在實(shí)際建模中,一般很難確定一個(gè)最佳的學(xué)習(xí)率。在平坦區(qū)域,希望增大學(xué)習(xí)率,以使訓(xùn)練更快逃離該區(qū)域;在某些陡峭的區(qū)域,希望減小學(xué)習(xí)率,避免震蕩。一個(gè)常用的方法是設(shè)置一個(gè)合適的初始學(xué)習(xí)率。通過將兩種改進(jìn)方法結(jié)合起來,以加快網(wǎng)絡(luò)的收斂。
三、系統(tǒng)工作原理
在Snort系統(tǒng)中,數(shù)據(jù)包經(jīng)過包捕獲/解碼引擎后,被送入各種功能不同的預(yù)處理器中,在檢測(cè)引擎處理之前進(jìn)行檢查和操作,每個(gè)預(yù)處理器檢測(cè)數(shù)據(jù)包是否應(yīng)該注意、告警后者修改數(shù)據(jù)。根據(jù)Snort的這以擴(kuò)展功能,將基于神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)作為Snort系統(tǒng)的預(yù)處理器部分,使神經(jīng)網(wǎng)絡(luò)的檢測(cè)功能與Snort規(guī)則匹配檢測(cè)相互補(bǔ)充,彌補(bǔ)各自不足,以實(shí)現(xiàn)一個(gè)性能比較全面的入侵檢測(cè)模型。與其他預(yù)處理器相同,神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊工作在數(shù)據(jù)包解碼之后、規(guī)則匹配之前。從結(jié)構(gòu)上來看神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊是Snort系統(tǒng)的一個(gè)子集。神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊發(fā)現(xiàn)異常數(shù)據(jù)包進(jìn)行告警,并將異常信息與Snort系統(tǒng)檢測(cè)結(jié)果進(jìn)行對(duì)比,如果兩者都判定該數(shù)據(jù)包為攻擊行為,則將該事件寫入日志并對(duì)用戶報(bào)警;當(dāng)神經(jīng)網(wǎng)絡(luò)模塊判定行為為異常,Snort系統(tǒng)模塊判定為正常的數(shù)據(jù)時(shí),則將數(shù)據(jù)提交給管理人員來判斷,如果是正常數(shù)據(jù),則記錄到樣本庫中,作為神經(jīng)網(wǎng)絡(luò)的新的訓(xùn)練樣本,避免重復(fù)誤判。如果是異常數(shù)據(jù)則報(bào)警,同時(shí)將該數(shù)據(jù)包也作為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本同時(shí)從中提取Snort規(guī)則記錄到Snort規(guī)則庫中,以提高系統(tǒng)對(duì)新的攻擊或已知攻擊變種的識(shí)別能力。
參考文獻(xiàn):
[1]徐仙偉,葉小嶺.遺傳算法優(yōu)化BP網(wǎng)絡(luò)初始權(quán)重用于入侵檢測(cè)[J].計(jì)算機(jī)應(yīng)用研究,2005.
[2]段海濱.蟻群算法原理及其應(yīng)用[M].北京:科學(xué)出版社,2005.
[3]孫娓娓.BP神經(jīng)網(wǎng)絡(luò)的算法改進(jìn)及應(yīng)用研究[D].重慶:重慶大學(xué)2009,4.