張 玲,張建偉,桑永宣,王 博,侯澤翔
(鄭州輕工業(yè)大學(xué) 軟件學(xué)院,鄭州 450002)
入侵檢測系統(tǒng)[1]被證明是一種有效的網(wǎng)絡(luò)安全防御方式。研究人員將深度學(xué)習(xí)、支持向量機[2-3]、模糊集[4]、隱馬爾可夫[5]、隨機森林[6-8]、離群點算法[9]、人工免疫原理[10-12]等人工智能技術(shù)引入入侵檢測進行研究,取得了較大的進展[13-15]。
文獻[3]提出了一種多層次的混合入侵檢測模型,該模型利用支持向量機和極限學(xué)習(xí)機來提高檢測已知和未知攻擊的效率,采用K-means算法來構(gòu)建高質(zhì)量的訓(xùn)練數(shù)據(jù)集,提高了分類器的性能。文獻[4]提出了一種采用修正密度峰值聚類算法和深度信念網(wǎng)絡(luò)的入侵檢測系統(tǒng)(MDPCA-DBN),該系統(tǒng)采用改進的密度峰值模糊聚類算法減少訓(xùn)練集的大小,利用深度信念子網(wǎng)絡(luò)對數(shù)據(jù)進行分類,解決樣本的不平衡問題。文獻[5]設(shè)計并實現(xiàn)了基于網(wǎng)絡(luò)的反對抗隱馬爾可夫模型(AA-HMM),定義了一個模式熵的概念,使用動態(tài)窗口和閾值技術(shù)提高系統(tǒng)的自適應(yīng)、抗競爭和在線學(xué)習(xí)能力。
文獻[6]受bagging算法和隨機分割選擇算法的啟發(fā)提出隨機森林(Random Forest,RF)分類算法。文獻[7]設(shè)計并實現(xiàn)了基于條件式自編碼、生成式對抗網(wǎng)絡(luò)和隨機森林的入侵檢測系統(tǒng)(AE-CGAN-RF),該系統(tǒng)采用自編碼技術(shù)對高維特征數(shù)據(jù)進行降維,利用生成式對抗網(wǎng)絡(luò)進行數(shù)據(jù)采樣,運用隨機森林的方法進行分類,解決了在大型網(wǎng)絡(luò)環(huán)境中出現(xiàn)的高維特征和數(shù)據(jù)不平衡問題。文獻[8]利用不同決策樹之間的相似度,約簡決策樹中的冗余值,用分類性能指標值作為隨機森林的權(quán)重值,提高網(wǎng)絡(luò)流量分類的可擴展性和檢測率。文獻[9]提出了一種混合多層次入侵檢測模型,利用離群點檢測算法對冗余數(shù)據(jù)進行約簡刪除,根據(jù)攻擊行為網(wǎng)絡(luò)流量的相似性,構(gòu)建多層次隨機森林模型檢測網(wǎng)絡(luò)異常行為,提高網(wǎng)絡(luò)攻擊的檢測性能。文獻[10]提出一種動態(tài)克隆選擇算法。人工免疫系統(tǒng)通過一個類似于生物免疫系統(tǒng)的功能構(gòu)建了動態(tài)、自適應(yīng)的信息防御系統(tǒng)。為了抵抗外部無用和有害信息的入侵,并確保有效性和接收到無害信息,文獻[11]提出一種改進的克隆選擇算法,選擇較好的個體并進行克隆,提高入侵檢測的準確率,降低誤報率。
支持向量機、模糊集、離群點、隨機森林檢測算法需要對大量的樣本進行學(xué)習(xí),獲得有效的決策規(guī)則,并且系統(tǒng)自適應(yīng)能力較弱,因此針對小樣本數(shù)據(jù)進行學(xué)習(xí)的效果較差,導(dǎo)致入侵行為的誤檢和漏檢。人工免疫原理在自適應(yīng)能力方面優(yōu)于其他算法,但是存在過早收斂的現(xiàn)象。
本文提出一種基于隨機森林和人工免疫的入侵檢測算法(RFAIID),并構(gòu)建抗體森林模型。針對樣本集中的小樣本,采用克隆選擇算法獲得優(yōu)良的大樣本抗體集提高入侵檢測的自適應(yīng)性,運用隨機森林算法提高入侵檢測率,降低誤報率。在KDD99數(shù)據(jù)集上對RFAIID算法的參數(shù)進行設(shè)置,并在小樣本集上驗證算法的自適應(yīng)性和檢測性能。
RFAIID算法主要包括4個階段:
1)對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進行預(yù)處理,將兩種數(shù)據(jù)集處理成統(tǒng)一格式的抗體集和抗原集。
2)數(shù)據(jù)選擇階段,對不同類型的抗體總數(shù)分別進行統(tǒng)計,對樣本數(shù)量較少的抗體集采用人工免疫算法提高抗體質(zhì)量和數(shù)量。
3)對新的抗體集采用多代理隨機森林分類器。
4)對抗原進行檢測得到檢測結(jié)果,并將新的抗體加入抗體集。
RFAIID算法的功能結(jié)構(gòu)如圖1所示。
圖1 RFAIID算法功能結(jié)構(gòu)Fig.1 RFAIID algorithm function structure
抗體的數(shù)量和質(zhì)量決定抗原的檢測性能指標的好壞。隨機森林算法對于決策樹數(shù)量較少時,分類能力較弱,只有當決策樹數(shù)量較大時,才能夠得到有效的分類結(jié)果。因此,針對小樣本的數(shù)據(jù)集采用基于人工免疫的抗體優(yōu)化算法能獲得更優(yōu)的抗體集。RFAIID算法的實現(xiàn)步驟如算法1所示。
算法1RFAIID算法
輸入數(shù)據(jù)集、參數(shù)KNormal、KDos、KProbe、KU2R、KR2L、激活閾值γ
輸出網(wǎng)絡(luò)異常行為檢測結(jié)果
1.用式(1)將數(shù)據(jù)集進行歸一化處理;
2.歸一化后的數(shù)據(jù)集劃分成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集;
3.用抗原定義對測試數(shù)據(jù)集進行預(yù)處理,用抗體定義對訓(xùn)練數(shù)據(jù)集進行預(yù)處理;
4.將抗體分成不同的種類;
5.判斷抗體的數(shù)量,抗體優(yōu)化得到新的抗體集;
6.將新的抗體集訓(xùn)練成隨機抗體森林;
7.利用隨機抗體森林對抗原進行檢測,得到檢測結(jié)果;
8.將獲得的新的抗體用于更新隨機抗體森林。
RFAIID算法的第一個步驟是對數(shù)據(jù)集進行預(yù)處理,訓(xùn)練數(shù)據(jù)集歸一化處理成抗體集,待檢測數(shù)據(jù)處理成抗原。
設(shè)x為日志的屬性值,x∈[m1,m2],對RFAIID算法中的抗原和抗體的處理方法采用式(1)歸一化處理[12]。
(1)
其中,m和n分別取該數(shù)據(jù)域內(nèi)的最小值和最大值。
根據(jù)抗原、抗體的定義對數(shù)據(jù)集進行預(yù)處理:
定義1a∈A,A?D,D={0,1}l,(l∈N,l>0),A為待檢測日志抗原集,D是由0和1代碼組成的長度為l的二進制字符串,抗原a為待檢測日志屬性的二進制字符串[12]。
定義2抗體b∈B,B{
抗體的數(shù)量和質(zhì)量決定抗原的檢測性能指標的好壞。隨機森林算法對于決策樹數(shù)量較少時,分類能力較弱,只有當決策樹數(shù)量較大時能夠得到有效的分類結(jié)果。因此,針對小樣本的數(shù)據(jù)集采用基于人工免疫的抗體優(yōu)化算法獲得更優(yōu)的抗體集?;谌斯っ庖叩目贵w優(yōu)化算法的實現(xiàn)步驟如算法2所示。
算法2基于人工免疫的抗體優(yōu)化算法
輸入訓(xùn)練抗體、參數(shù)KNormal、KDos、KProbe、KU2R、KR2L
輸出新的抗體集
1.BNormal=BProbe=BDos=BU2R=…=BR2L=?;/*存儲不同抗體的抗體集*/
for each b in抗體集
將網(wǎng)絡(luò)日志轉(zhuǎn)換為抗體;
判斷b.s的值,根據(jù)b.s的值分別將抗體加入不同的類型的抗體集,并進行計數(shù);
end for
/*if (b.s==0000) then BNormal.add(b)數(shù)據(jù)取0時,表示該抗體的類別是Normal
else if(b.s==0001) then BProbe.add(b)數(shù)據(jù)類型值取1時,表示該抗體的類別是Probe
else if(b.s==0010) then BDos.add(b)數(shù)據(jù)取2時,表示該抗體的類別是DoS,等*/
2.for each 抗體集
if (計數(shù)值 抗體生成算法; end for 本文用三元組Ω=(A,B,Θ)表示免疫進化操作,A={S,N}表示抗原集合,S為自體集合,N為非自體集合,S∩N=φ,B=BI∪BT∪BM為抗體集,Θ表示抗體交叉、變異。在抗體的生命周期內(nèi),抗體不斷變化。RFAIID中采集到的日志信息是動態(tài)變化的,A隨著動態(tài)變化。新抗體生成演化過程如圖2所示。 圖2 抗體演化示意圖Fig.2 Schematic diagram of antibody evolution a與b之間的親和度計算采用歐拉(Euclidean)形態(tài)空間的歐拉距離計算方法[12]。 抗體優(yōu)化算法如算法3所示。 算法3抗體優(yōu)化算法 輸入選擇抗體,參數(shù)T1、T2、γ 輸出新的抗體 1.選擇適應(yīng)度高的記憶抗體進行高斯變異; 2.將變異后的抗體注入BI; 3.隨機生成未成熟抗體,注入BI; 4.未成熟抗體在生存時間T1內(nèi),如果大于T1,則刪除該未成熟抗體,否則計算抗體與抗原適應(yīng)度; 5.抗體匹配到任何一個抗原,則刪除抗體,否則注入BT; 6.成熟抗體T2內(nèi),判斷是否大于激活閾值,大于則刪除成熟抗體,小于則激活; 7.將激活的成熟抗體注入BM,轉(zhuǎn)步驟1。 RF是包含多個相同分布的決策樹集合,每個決策樹依賴于一個獨立的隨機向量[16]。RF的基本思想如下:在包含N個訓(xùn)練樣本的數(shù)據(jù)集X中,通過有放回地隨機的方式獲取k個樣本(0 為彌補因抗體樣本數(shù)量的不足導(dǎo)致的較高的檢測錯誤率,并獲得優(yōu)良的抗體提高檢出率,降低誤檢率,本文借鑒隨機森林和人工免疫理論對抗體決策樹設(shè)計了隨機抗體森林檢測策略。隨機抗體森林檢測策略模型如圖3所示。 圖3 隨機抗體森林檢測模型Fig.3 Random antibody forest detection model 提高抗體森林分類模型的外推預(yù)測能力對入侵檢測至關(guān)重要,因此需要生成不同的抗體集來增加抗體森林分類模型之間的差異,通過k輪的訓(xùn)練,得到一個抗體決策樹集合{h1(b),h2(b),…,hk(b)},再經(jīng)過少數(shù)服從多數(shù)的投票法,得到最終的抗體森林: (2) 其中,H(b)是抗體森林分類模型,hi(b)是單個決策抗體樹的分類結(jié)果,Y表示抗體檢測抗原的輸出目標變量,I(·)是抗體森林代表的示性函數(shù),運用抗體決策樹對抗原進行檢測,檢測結(jié)果為ai.lable,例如檢測結(jié)果為Probe,用式(3)計算I(·): (3) 隨機抗體森林檢測算法如算法4所示。 算法4隨機抗體森林檢測算法 輸入抗體集 輸出抗原的檢測結(jié)果 1.對于每種類型的抗體集生成不剪枝的抗體決策樹集合,用式(2)生成抗體森林H(b); 2.用抗體森林H(b)對抗原進行檢測; 3.如果檢測結(jié)果為正常,轉(zhuǎn)步驟1; 4.如果檢測結(jié)果為一種類型的攻擊行為,將抗原轉(zhuǎn)化為抗體,將抗體加入抗體集,轉(zhuǎn)步驟1。 采用美國林肯實驗室提供的KDD數(shù)據(jù)集[19]進行實驗仿真,研究RFAIID算法的性能。實驗中采取數(shù)據(jù)集中的kddcup.data_10_percent作為數(shù)據(jù)源。數(shù)據(jù)集中包含Normal、Dos、Probe、U2R和R2L 5種樣本。 實驗仿真中抽取50 000條數(shù)據(jù),根據(jù)文獻[12]將訓(xùn)練數(shù)據(jù)集轉(zhuǎn)化成抗體,測試數(shù)據(jù)集預(yù)處理成抗原,抗原的長度為92,檢測器(記憶抗體)的長度取值95、耐受期未成熟抗體的生命周期取值40、成熟抗體的生命周期取值50、激活閾值γ=5[20]。非記憶抗體的數(shù)量設(shè)置為100,抗體與抗原的匹配半徑在2.2節(jié)給出。 RFAIID算法用C編碼,所有的實驗在Linux平臺下運行(Intel Pentium Dual CPU E2180,16 GB RAM)。 IDS的檢測結(jié)果包括TP、TN、FP和FN4種[12]。TN和TP對應(yīng)IDS的正確預(yù)測的總數(shù),即樣本被正確分類為正常行為的數(shù)量或攻擊的數(shù)量;FP和FN則對應(yīng)IDS的錯誤分類的總數(shù),FP指正常樣本被誤分類為攻擊行為的數(shù)量,FN指攻擊樣本被錯誤識別為正常的總數(shù)。 RFAIID算法的性能評估指標主要包括以下5種: 1)抗體檢測率DR是指抗原集中攻擊行為被正確分類的比例,用式(4)計算抗體檢測率。 (4) 2)抗體誤報率FAR是指抗原集中所有被誤識別為攻擊的正??乖瓊€數(shù)與測試集中正??乖倲?shù)的比值,用式(5)計算抗體誤報率。 (5) 3)抗體精確率Pre是指抗原集中所有被IDS識別為攻擊抗原中真正為攻擊抗原的比值,用式(6)計算抗體精確率。 (6) 4)抗體分類準確率Acc是指抗原集中被正確分類的抗原個數(shù)與抗原集樣本總數(shù)的比值,是一個反映IDS對正??乖凸艨乖瓍^(qū)分能力大小的總體評價指標,用式(7)計算抗體準確率。 (7) 5)F1-score是綜合評價IDS對抗原檢測率和精確率的一個指標,用式(8)計算抗體F1-score指標。 (8) 為了確定算法3中抗體和抗原的匹配半徑的值,對訓(xùn)練數(shù)據(jù)集中所有異??贵w標記為異常,生成抗體森林,對測試集進行異常檢測,分別設(shè)置匹配半徑值為30~50的21個整數(shù)值,取10%的數(shù)據(jù)進行交叉實驗,運行10次,取平均值。檢測結(jié)果如圖4所示。 圖4 不同半徑下的檢測結(jié)果Fig.4 Detection results under different radius 圖4給出了在不同的匹配半徑下抗原的檢測率和誤報率。由檢測結(jié)果得出隨著檢測半徑的增大,檢測率增大,誤報率降低。當檢測半徑長度為41時,檢測率為94.8%,誤報率為6.2%。當檢測半徑大于41時,檢測率和誤報率趨于穩(wěn)定。在后面的實驗中,取檢測半徑值為41。 樣本集中不同類型的樣本數(shù)量差別較大,當樣本數(shù)量較少時,在分類效果上處于劣勢。針對不同的訓(xùn)練樣本集,數(shù)據(jù)集抽樣原則如下: 1)DoS攻擊:Dos攻擊的訓(xùn)練集包含391 458條樣本,屬于大樣本數(shù)據(jù)集。實驗中取10組訓(xùn)練樣本集,每組隨機取訓(xùn)練數(shù)據(jù)集中2%、5%、10%、15%、20%、21%、22%、23%、24%和25%的樣本集進行訓(xùn)練得到抗體森林,采用測試集進行檢測,每組數(shù)據(jù)運行10次取平均值。 2)Normal:KDD99數(shù)據(jù)集中包含97 278條正常樣本,雖然屬于大樣本數(shù)據(jù)集,為了計算KDos值,將Normal樣本轉(zhuǎn)化成正??贵w,進行克隆選擇得到新抗體集、新抗體集和Dos攻擊數(shù)值相同的數(shù)據(jù)集。在計算Probe和R2L攻擊的檢出率時,取相同的樣本集。 3)Probe:Probe攻擊訓(xùn)練樣本數(shù)為4 107條,為小樣本集。前3組分別取樣本集中的樣本,啟動克隆選擇算法獲得后7組抗體集。每組數(shù)據(jù)運行10次得到抗體森林,并對測試集進行檢測。 4)R2L:R2L攻擊訓(xùn)練樣本數(shù)為1 126條,屬于小樣本集。前2組分別取樣本集中的樣本,啟動克隆選擇算法獲得后8組抗體集。每組數(shù)據(jù)運行10次得到抗體森林,并對測試集進行檢測。 5)U2R:U2R攻擊訓(xùn)練樣本數(shù)為52條,屬于極小樣本集。第1組取全部樣本,啟動克隆選擇算法獲得后9組抗體集。每組數(shù)據(jù)運行10次得到抗體森林,并對測試集進行檢測。不同樣本集的抽樣數(shù)量如表1所示,實驗仿真結(jié)果如圖5所示。 表1 實驗樣本數(shù)Table 1 Nunber of experimental samples 圖5 不同攻擊識別結(jié)果Fig.5 Recognition results of different attacks 從圖5檢測結(jié)果可以得出,隨著抗體樣本數(shù)量的增加,抗原檢測率隨之增加,當樣本集增大到一定數(shù)量時,檢測率趨于穩(wěn)定,檢測率穩(wěn)定的拐點設(shè)置為樣本數(shù)值K。 1)隨著DoS攻擊抗體樣本數(shù)量的增加,檢測率隨之增加。當抗體樣本數(shù)量為40 000條時,DR值趨于穩(wěn)定,KDos值為40 000,對應(yīng)的正常樣本數(shù)為40 000條。 2)隨著抗體Probe攻擊樣本數(shù)量的增加,檢測率隨之增加。當抗原Probe攻擊樣本數(shù)量為8 000條時,DR值趨于穩(wěn)定。因此,取KProbe值為8 000,對應(yīng)的正常樣本數(shù)為88 000條 。 3)隨著R2L攻擊抗體樣本數(shù)量的增加,檢測率隨之增加。當抗原R2L攻擊樣本數(shù)量為3 500條時,DR值趨于穩(wěn)定。因此,取KR2L值為3 500,對應(yīng)的正常樣本數(shù)為88 000條。 4)從識別結(jié)果可以得出,隨著抗原U2R攻擊樣本數(shù)量的增加,檢測率隨之增加。當抗原U2R攻擊樣本數(shù)量為200條時,DR值趨于穩(wěn)定。因此,取KR2L值為200,對應(yīng)的正常樣本數(shù)為60 000條。 綜合以上4種情況,隨著樣本集數(shù)量的增多,檢測率隨之增加,證明本文提出的RFAIID算法具有可擴展性,通過實驗得到KNormal=88 000,KDoS=40 000,KProbe=8 000,KR2L=200。 為了更好地驗證本文提出的算法,在KDD99數(shù)據(jù)集上運行RFAIID算法,算法的參數(shù)詳見2.1節(jié)~2.3節(jié)。將RFAIID與概述部分的算法進行對比,將所有攻擊行為作為異常樣本進行檢測。由于異常樣本屬于大樣本數(shù)據(jù)集,因此參照Dos攻擊,每組隨機取訓(xùn)練數(shù)據(jù)集中10%、15%、20%、21%、22%、23%、24%和25%的樣本集進行訓(xùn)練得到抗體森林,采用測試集進行檢測,每組數(shù)據(jù)運行10次得到平均值。不同算法異常檢測性能對比結(jié)果如表2所示,N/A表示結(jié)果不明確。 表2 不同算法異常檢測性能比較Table 2 Comparison of abnormal detection performances of different algorithms 從表2結(jié)果可以看出,本文提出的RFAIID算法檢測率比文獻[3]低0.010 7,準確率高0.007 2,誤報率低0.007 1,性能相近;比文獻[11]提出的改進克隆選擇算法的性能差;檢測性能比其他算法要高。 為測試RFAIID算法的分類性能,尤其是對小樣本數(shù)據(jù)集的檢測,將RFAIID算法和表2中算法進行比較,不同攻擊類型下的算法檢測率比較如表3所示。 表3 不同算法分類性能比較Table 3 Comparison of classification performance of different algorithms 從表3可以看出,本文提出的RFAIID算法對小樣本數(shù)據(jù)Probe、U2R和R2L攻擊的檢測性能優(yōu)于其他算法。因此,得出RFAIID算法對各種攻擊的檢測率都較高,可提高算法的自適應(yīng)能力,對小樣本的檢測性能較高。 在網(wǎng)絡(luò)異常檢測中,訓(xùn)練集樣本的數(shù)量和質(zhì)量決定了檢測的性能。目前較多入侵檢測系統(tǒng)的自適應(yīng)能力較差,小樣本數(shù)據(jù)檢測率較低。針對該問題,本文提出一種基于隨機森林和人工免疫的入侵檢測算法(RFAIID),并構(gòu)建了抗體森林的模型。通過人工免疫算法提高系統(tǒng)的自適應(yīng)能力,針對小樣本數(shù)據(jù)提取較優(yōu)良的抗體,提高檢測性能,并結(jié)合人工免疫算法給出抗體森林檢測的分類方法。實驗結(jié)果表明,該算法具有較好的自適應(yīng)能力,且檢測率較高。由于算法中的冗余屬性影響檢測速度,因此下一步將對冗余屬性進行降維。1.3 新抗體生成方法
1.4 隨機抗體森林檢測策略
2 仿真結(jié)果與分析
2.1 測試數(shù)據(jù)和性能指標
2.2 匹配半徑
2.3 參數(shù)K的設(shè)置
2.4 RFAIID算法的分類性能和其他算法的比較
3 結(jié)束語