閆海濤,張之義,朱曉明,王 鵬
(中國電子科技集團公司 第54研究所,石家莊 050081)
隨著互聯(lián)網(wǎng)技術(shù)發(fā)展和信息化建設(shè)的推進,使得政府和企業(yè)等組織機構(gòu)越來越多的業(yè)務(wù)在線上處理,同時現(xiàn)有攻擊方式發(fā)展的更加多樣和隱蔽,來自內(nèi)部和外部的網(wǎng)絡(luò)安全事件頻發(fā),當(dāng)前這些組織機構(gòu)面臨的安全風(fēng)險變高。因此,需要更加高效的網(wǎng)絡(luò)入侵檢測技術(shù)[1]。對機構(gòu)內(nèi)部的用戶和實體的行為檢測,通過相應(yīng)算法利用現(xiàn)有行為數(shù)據(jù)構(gòu)建基線,能夠高效的識別正常和入侵行為[2]。
網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS,network intrusion detection system)根據(jù)所用的方法,可以分為基于誤用的檢測和基于異常的檢測兩類[3]。基于誤用的檢測是對攻擊行為構(gòu)建基線,符合該基線的行為都看作入侵行為,這類方法的誤報率較低,但漏報率較高?;诋惓5臋z測對正常行為構(gòu)建基線,不符合基線的行為都看作入侵行為,這類方法能夠識別未知的攻擊模式,也是本文采用的方法。
相較于傳統(tǒng)的防火墻系統(tǒng),網(wǎng)絡(luò)入侵檢測系統(tǒng)對當(dāng)前收集到的行為數(shù)據(jù)提取特征并與構(gòu)建的正常行為基線進行比較,能夠?qū)崟r發(fā)現(xiàn)環(huán)境中的安全風(fēng)險。最初的研究者基于統(tǒng)計學(xué)習(xí)方法,捕獲并分析網(wǎng)絡(luò)流量活動的統(tǒng)計特征進行入侵檢測[4],但是誤報率較高,而且經(jīng)常需要專家經(jīng)驗輔助判斷。
近年來,研究者通過引入機器學(xué)習(xí),深度學(xué)習(xí)等技術(shù)進行入侵檢測并取得了顯著的提升效果[5-7],包括樸素貝葉斯算法(NB,naive bayes)[8],K近鄰算法(KNN,k-nearest neighbor)[9],支持向量積算法(SVM,support vector machine)[10]和邏輯回歸算法(LR,logistic regression)[11]等。然而在使用這些算法時,需要對數(shù)據(jù)的缺失值進行處理,在處理大規(guī)模數(shù)據(jù)時效率不高,仍然存在誤報率較高和檢測效率較低的問題。
集成學(xué)習(xí)(EL,ensemble learning)是近年來機器學(xué)習(xí)研究中的熱門領(lǐng)域。極限梯度提升(XGBoost,extreme gradient boosting)是一種基于梯度提升決策樹(GBDT,gradient boosting decision tree)改進的集成學(xué)習(xí)算法[12]。將XGBoost應(yīng)用在網(wǎng)絡(luò)入侵檢測系統(tǒng)中得到了更高精度的檢測效果[13]。文獻[14]中,研究者將XGBoost算法應(yīng)用到網(wǎng)絡(luò)入侵檢測,分析和評估了XGBoost模型相對于其他分類模型的優(yōu)勢。結(jié)果表明XGBoost相較于樸素貝葉斯,SVM和隨機森林具有更好的準(zhǔn)確率。
對于機器學(xué)習(xí)來說,模型的參數(shù)會在很大程度上影響其性能表現(xiàn),一般采用窮舉法來找到使模型表現(xiàn)最好的參數(shù),但這種方法效率較低。研究者受到群居動物通過合作來完成復(fù)雜的任務(wù)的行為啟發(fā)提出了一系列群體智能優(yōu)化算法來求解優(yōu)化問題,在分類任務(wù)上取得了較好的效果[15]。文獻[16]中提出基于粒子群算法(PSO,particle swarm optimization)對SVM進行參數(shù)優(yōu)化,應(yīng)用到進行入侵檢測任務(wù)中,提高了模型訓(xùn)練效率并實現(xiàn)了較低的誤報率。文獻[17]采用遺傳算法(GA,genetic algorithm)對SVM的懲罰因子、核函數(shù)進行優(yōu)化,明顯縮短了檢測時間,并在檢測準(zhǔn)確率上有所提升。文獻[18]用遞歸消除算法去除冗余特征后,利用遺傳算法來優(yōu)化輕量級梯度提升機(LightGBM,light gradient boosting machine)的關(guān)鍵參數(shù)。文獻[19]針對軸承故障診斷問題,結(jié)合鯨魚優(yōu)化算法(WOA,whale optimization algorithm)提出了一種基于深度學(xué)習(xí)特征提取和WOA-SVM狀態(tài)識別相結(jié)合的故障診斷模型。對比了PSO-SVM和GA-SVM模型,結(jié)果表明WOA-SVM具有較高的收斂精度和速度。文獻[20]提出了一種將WOA算法與相關(guān)向量機(RVM,relevance vector machine)相結(jié)合的模型。將WOA-RVM模型應(yīng)用于天然氣負(fù)荷的短期預(yù)測,該模型在預(yù)測精確度高于其他模型。
WOA算法作為一種結(jié)構(gòu)簡潔易于實現(xiàn)且適應(yīng)性較強的算法,能有效避免陷入局部最優(yōu)解的情況[21]。有研究者將WOA算法應(yīng)用到入侵檢測領(lǐng)域[22]。文獻[23]提出使用WOA算法來優(yōu)化RVM來進行入侵檢測。在兩個常用的入侵檢測數(shù)據(jù)集NSL-KDD和CICIDS2017進行測試驗證,結(jié)果表明WOA算法相較于其他優(yōu)化算法如粒子群算法,遺傳算法和灰狼優(yōu)化算法(GWO,grey wolf optimizer)有更好的效果。文獻[24]組合WOA算法和遺傳算子作為SVM的參數(shù)優(yōu)化方法,提出了WOA-SVM模型來檢測無線Mesh網(wǎng)絡(luò)中的入侵行為,同遺傳算法進行對比,實驗表明該模型有效降低了計算復(fù)雜度和檢測時間,并且在檢測效率上有較好的提升。
研究者提出了很多結(jié)合智能群體優(yōu)化算法和機器學(xué)習(xí)算法的入侵檢測方法,仍有一定缺陷。這些研究大都對模型進行整體評估,僅評估了算法在數(shù)據(jù)集上的整體表現(xiàn),如準(zhǔn)確率,精確率,F(xiàn)-Score等,卻未對數(shù)據(jù)集中的每種攻擊類型的分類效果進行評估分析。
本文結(jié)合智能群體優(yōu)化算法和機器學(xué)習(xí)算法提出了WOA-XGBoost模型。模型利用WOA良好的搜索能力對XGBoost模型中的參數(shù)進行適應(yīng)性的優(yōu)化。有效的提高了其在入侵檢測中的性能,包括對不同類別攻擊的識別能力。其次,在評估WOA-XGBoost模型的性能時,使用NSL-KDD數(shù)據(jù)集[25],不僅評估了模型總體性能,還評估了模型對各個攻擊類別的識別能力,并與XGBoost算法和其他集成學(xué)習(xí)算法包括隨機森林(RF,random forest)、Adaboost和LightGBM進行了性能對比。實驗結(jié)果表明混合模型對大部分攻擊類別具有較好的效果。
XGBoost算法基于集成學(xué)習(xí)中的Boosting算法,Boosting算法通過累加多個弱分類器來組合成一個強分類器。一般采用決策樹作為基學(xué)習(xí)器。XGBoost是在GBDT算法的基礎(chǔ)上進行了改進,在優(yōu)化目標(biāo)函數(shù)時使用二階泰勒展開式作為模型損失殘差,提高了模型精度。并引入正則化項,更好地防止過擬合。使用前向分步加法訓(xùn)練來優(yōu)化目標(biāo)函數(shù),這意味著后一步的優(yōu)化過程依賴于前一步的結(jié)果。第t次迭代要訓(xùn)練的樹模型為ft(xi),則本輪迭代預(yù)測結(jié)果為:
由于XGBoost是一個累加多個基學(xué)習(xí)器的模型,在模型的第t輪迭代中,目標(biāo)函數(shù)可以表示如下:
(2)
式中,l表示第t輪迭代中損失函數(shù),c為一個常數(shù)項,樹的復(fù)雜度Ω將全部t顆樹的復(fù)雜度進行求和作為目標(biāo)函數(shù)的正則化項,正則化項的引入用于防止模型過擬合,Ω計算公式如下:
(3)
計算公式(1)的二階泰勒展開式,得到如下結(jié)果:
obj(t)=
Ω(ft)+c
(4)
其中:g為損失函數(shù)的一階導(dǎo),h為二階導(dǎo),計算公式如下:
(5)
(6)
只要求出每輪g和h的值,然后優(yōu)化目標(biāo)函數(shù),從而得到每輪迭代的決策樹ft(x),最后累加所有的決策樹,得到一個整體模型。
定義實例集:
Ij={i|q(xi)=j}
(7)
Gj=∑i∈Ijgi
(8)
Hj=∑i∈Ijhi
(9)
Ij表示將屬于第j個葉子結(jié)點的所有樣本xi劃入到一個葉子結(jié)點的樣本集合中,Gj表示葉子結(jié)點j所包含樣本的一階偏導(dǎo)數(shù)累加之和,是一個常量,Hj表示葉子結(jié)點j所包含樣本的二階偏導(dǎo)數(shù)累加之和,也是一個常量。
(10)
(11)
其中:wj表示節(jié)點的權(quán)重,obj表示損失函數(shù)的得分,分?jǐn)?shù)越小,所得樹的分類結(jié)果越好。
在建立第t顆樹時,關(guān)鍵在于找到葉子結(jié)點的最優(yōu)切割點,對目標(biāo)函數(shù)obj,分裂后的收益Gain取得最大值時即為最優(yōu)分割。分裂收益Gain的計算公式如下:
(12)
括號內(nèi)前兩項分別為左右子樹的得分,第三項為不進行分割時的得分。
鯨魚優(yōu)化算法由Mirjalili等人提出[21],他們受鯨魚捕食獵物的啟發(fā),在觀察鯨魚群體搜尋、包圍、抓捕和攻擊獵物等過程后,提出了尋找獵物,包圍獵物,螺旋泡網(wǎng)捕食的數(shù)學(xué)模型。每個鯨魚的位置代表了一個可行解。最優(yōu)解為獵物位置或者最接近獵物的位置。算法用搜索代理表示鯨魚,在每次迭代中,搜索代理隨機選擇其他搜索代理的位置或當(dāng)前最優(yōu)搜索代理的位置作為目標(biāo)來更新它們的位置。WOA算法的優(yōu)化過程如下:
首先,隨機初始化搜索代理位置Xi(i=1,2,…,n),其中,n為待優(yōu)化參數(shù)的個數(shù),計算每個搜索代理的Fitness。每一輪迭代中,按如下公式更新搜索代理位置:
X(t+1)=
(13)
其中:t是當(dāng)前迭代次數(shù),算法依概率p選擇圓形圍捕運動或螺旋運動接近獵物,參數(shù)b用于控制螺旋形狀,l為[-1,1]的隨機數(shù)。式中,D用于衡量當(dāng)前搜索代理與目標(biāo)搜索代理的距離,目標(biāo)搜索代理為最優(yōu)搜索代理或隨機選擇的搜索代理,D′表示當(dāng)前搜索代理與最優(yōu)搜索代理的距離,計算公式如下:
(14)
D′=|X*(t)-X(t)|
(15)
式中,X*(t)表示目前為止最優(yōu)的搜索代理位置向量,Xrand(t)表示某個隨機搜索代理位置向量,X(t)表示當(dāng)前搜索代理的位置向量,A和C為系數(shù):
A=2α·γ1-α
(16)
C=2·γ2
(17)
(18)
γ1,γ2為[0,1]之間的隨機向量,收斂因子α在迭代的過程中線性的從2降到0,max_t表示最大迭代次數(shù),α從2降到0的過程,控制了搜索代理從搜尋到捕獵的轉(zhuǎn)換過程,與之對應(yīng)的,當(dāng)|A|≥1時,對應(yīng)搜尋和包圍獵物的過程,選擇隨機搜索代理更新當(dāng)前代理位置。當(dāng)|A|<1時,對應(yīng)圍捕過程,選擇最優(yōu)搜索代理更新當(dāng)前代理位置。最后,WOA算法滿足終止準(zhǔn)則而終止。
作為KDD-CUP99的優(yōu)化版本,NSL-KDD數(shù)據(jù)集克服了數(shù)據(jù)集的固有問題。通過去除冗余和重復(fù)記錄,降低了數(shù)據(jù)集中不平衡數(shù)據(jù)的影響。重新調(diào)整訓(xùn)練集和測試集中樣本到合適的數(shù)量。數(shù)據(jù)集包括正常行為和四種攻擊:Probe、拒絕服務(wù)攻擊(DoS,denial of service)、本地未授權(quán)訪問(U2R,unauthorized access to local super user)和遠程未授權(quán)訪問(R2L,unauthorized access from remote to local machine)。在每個攻擊類別下包括多種攻擊行為,如Probe類包含Nmap掃描、MScan掃描等。DoS類包含Neptune攻擊,Teardrop攻擊等。U2R類下包含緩沖區(qū)溢出攻擊、Perl腳本攻擊等。R2L類包括FTP密碼猜解等。訓(xùn)練和測試數(shù)據(jù)中類別的分布分別如圖1所示。
圖1 數(shù)據(jù)樣本分布統(tǒng)計圖
數(shù)據(jù)集中包括了網(wǎng)絡(luò)連接的基本屬性特征和內(nèi)容特征、基于時間和基于主機的網(wǎng)絡(luò)流量統(tǒng)計特征。在數(shù)據(jù)集的41個特征中,有9個離散特征和32個連續(xù)特征。因為不同的特征可能有不同的測量方法,由于量綱的不同,數(shù)值型數(shù)據(jù)的數(shù)值偏差較大會影響梯度下降算法求最優(yōu)解的速度,需要進行數(shù)據(jù)標(biāo)準(zhǔn)化處理。
原始特征集合中第j個特征類型集合Xj中第i個元素的特征值xij其中1
(19)
式中,AVG(Xj)為第j個特征的均值,STAD(Xj)表示該特征的平均絕對值誤差。
(20)
入侵行為的檢測可以看作分類任務(wù),將行為分為正常行為和入侵行為兩類,對應(yīng)分類任務(wù)中的正類和負(fù)類。本文除了使用分類任務(wù)常用的評價指標(biāo)包括精確率(P,presession),召回率(R,recall),F(xiàn)-Score對模型進行評估,還使用了查準(zhǔn)率-查全率(P-R,presession-recall)曲線和受試者工作特征曲線(ROC,receiver operating characteristic curve)進行評估。ROC曲線一般只能對模型的整體性能進行評估[26],P-R曲線相較于ROC曲線能夠反應(yīng)出模型在數(shù)據(jù)集中各個類別上的性能表現(xiàn)[27]。
受試者工作特征曲線通過設(shè)定范圍從0到1的一系列閾值,得出的模型的一系列假陽率和真陽率數(shù)值對,作圖得到ROC曲線,曲線越靠近左上角,ROC曲線下的面積(AUC,area under curve)也就越大,模型的整體表現(xiàn)也就越好。
P-R曲線通過設(shè)定范圍從0到1的一系列閾值下,得到的精確率和召回率數(shù)值對的連線。相較于ROC曲線,P-R曲線能夠反映出樣本分布對模型的影響。平均精確度(AP,average precision)即為P-R曲線下的面積。某一類的AP值越大,表明模型在該類上的分類性能越好。使用平均精度均值(mAP,mean average precision)曲線和宏平均曲線描述模型在所有類別上的綜合識別性能。
XGBoost模型包含通用參數(shù)和模型參數(shù),通用參數(shù)包括booster、silent、nthread,這些不需要參數(shù)優(yōu)化。模型參數(shù)作為本文優(yōu)化的目標(biāo),對模型的性能有重要影響。實驗中,使用鯨魚優(yōu)化算法對模型性能影響最關(guān)鍵的6個參數(shù)進行搜索優(yōu)化,包括學(xué)習(xí)率eta,最大樹深度max_depth、最小葉權(quán)重min_child_weight,剪枝參數(shù)gamma、樣本隨機采樣參數(shù)subsample和樣本列采樣參數(shù)colsample_bytree。關(guān)于XGBoost這6個待優(yōu)化模型參數(shù)的取值范圍和參數(shù)的作用介紹見表1所示。
表1 XGBoost參數(shù)介紹
WOA-XGBoost模型的訓(xùn)練和參數(shù)的優(yōu)化過程如圖2所示。
圖2 模型訓(xùn)練流程
首先,根據(jù)待優(yōu)化參數(shù)個數(shù)確定搜索代理的維度,每個維度的分量對應(yīng)不同的XGBoost參數(shù),因此,這里每個搜索代理是一個6維向量。各維度參數(shù)的取值范圍限定了WOA的搜索空間。第i個搜索代理在t輪迭代的位置向量可以表示為:
(21)
然后將位置向量賦給模型的相應(yīng)參數(shù),并將訓(xùn)練集上的表現(xiàn)作為初始Fitness值。第i個搜索代理在t輪迭代中,根據(jù)當(dāng)前的系數(shù)A,C,p和公式(13),更新位置,并計算當(dāng)前的Fitness值為:
Fi(t)=(Xi(t)→XGBoost|trainset)[metric=PR-curve]
(22)
每輪迭代后確定當(dāng)前最優(yōu)搜索代理:
Xbest(t)=max(Fi(t),Xbest(t-1))
(23)
算法不斷迭代直到滿足終止條件,輸出當(dāng)前最優(yōu)搜索代理的位置向量,即為XGBoost模型具有最好分類能力的參數(shù)。
鯨魚優(yōu)化算法本身的參數(shù)主要包括a,b。關(guān)于實驗中主要參數(shù)的初始設(shè)置和介紹如表2所示。
表3給出了經(jīng)過鯨魚優(yōu)化算法搜索得到的XGBoost模型的最優(yōu)參數(shù)。這組參數(shù)將用于后面的實驗環(huán)節(jié)。
表2 鯨魚優(yōu)化算法參數(shù)
表3 XGBoost最優(yōu)參數(shù)
實驗所用的配置介紹如下:CPU為Inter Xeon E5-2666v3@2.5GHz,內(nèi)存64GB,操作系統(tǒng)為Centos7 64位,使用Python3.7和Matlab2016進行編碼實現(xiàn)。利用1.5節(jié)中所得XGBoost模型的最優(yōu)參數(shù)進行實驗評估。將WOA-XGBoost算法在NSL-KDD測試集進行驗證,在各類樣本上的性能指標(biāo)如表4。
表4 模型評估結(jié)果
從這些指標(biāo)中可以看到模型在DoS類的檢測的準(zhǔn)確率最高,說明模型能準(zhǔn)確區(qū)分DoS類和非DoS類。U2L類的檢測精確度最高,說明被模型識別為U2L的樣本都來自U2L類。Normal類上的召回率最高,意味著大部分正常行為都被正確識別,但U2R召回率最低,即大量U2R類的樣本被識別為其他類,這與數(shù)據(jù)集中該類樣本數(shù)量較少有關(guān)。F-Score可以很好地平衡精確度和召回率,能夠評估模型的綜合表現(xiàn),可以看出模型在Normal,Probe和DoS上的分類性能較好,而在后兩個樣本數(shù)量較少的類上表現(xiàn)不佳。
根據(jù)模型在每個類別中的P-R曲線,計算得出每個類的AP指標(biāo)。如表5所示。
表5 每個類別的AP指標(biāo)
從表5中,可以看出,Normal、Probe和DoS上的AP值高于其他兩個類。主要原因是NSL-KDD訓(xùn)練集中Normal、Probe和DoS樣本占總數(shù)據(jù)的99%以上,而U2R和R2L占不到1%。導(dǎo)致模型能夠?qū)颖緮?shù)量較多的類別學(xué)習(xí)更多細(xì)節(jié)特征,卻無法學(xué)習(xí)U2R和R2L的一些潛在的特征,因不能很好地對U2R和R2L分類。此外可以發(fā)現(xiàn)AP值與F-Score呈正相關(guān)。類的F-Score越大,意味著模型對它的分類性能越好。
WOA-XGBoost和XGBoost在測試集上對各類行為檢測結(jié)果的AP指標(biāo)對比如圖3所示。
圖3 模型在各類上的AP指標(biāo)
從圖中可以看出,兩個模型對Normal、Probe和DoS都有很好的識別效果,但在R2L和U2L上都表現(xiàn)較差。WOA-XGBoost模型相較于XGBoost在每個類中的AP值都更高,這說明通過WOA算法有效提高了模型性能。
為了對比兩個模型在所有行為類別上的綜合性能,統(tǒng)計了模型的宏平均曲線和mAP曲線如圖4~5所示。
圖4 宏平均曲線
圖4和圖5中,WOA-XGBoost始終在XGBoost的左上方或右上方,WOA-XGBoost模型的宏平均曲線和mAP曲線下面積均大于XGBoost,其中宏平均曲線下的面積比XGBoost大約3%,而mAP曲線的面積則比XGBoost大約4%,說明WOA-XGBoost在整體上優(yōu)于XGBoost模型。
可以發(fā)現(xiàn),WOA算法可以有效地優(yōu)化XGBoost模型的參數(shù),在提高模型訓(xùn)練效率的同時,學(xué)習(xí)更優(yōu)的參數(shù),提高模型的分類性能。在網(wǎng)絡(luò)入侵檢測任務(wù)中,對參數(shù)的進一步優(yōu)化可以較好的提高系統(tǒng)檢測能力,能夠更準(zhǔn)確的識別攻擊類型以及更好的檢測未知攻擊。
為了驗證模型的性能,本節(jié)對比其他機器學(xué)習(xí)算法包括隨機森林,LightGBM和Adaboost算法,同樣使用上述評價指標(biāo)。選擇NSL-KDD數(shù)據(jù)集,使用由P-R曲線計算的AP指標(biāo)對每個類別的評估。結(jié)果如圖6所示。
從圖6中可以發(fā)現(xiàn),在Normal、DoS和Probe類上,WOA-XGBoost、LightGBM和隨機森林之間的性能差距不大。WOA-XGBoost在Normal和Probe類上的AP值最高,其次是LightGBM和隨機森林。在DoS類上LightGBM和隨機森林取得最高的AP值,比WOA-XGBoost高1%。在R2L和U2R類上,WOA-XGBoost比其他模型具有明顯優(yōu)勢。在R2L類上,WOA-XGBoost的AP值比Adaboost高17%。在U2R上,WOA-XGBoost表現(xiàn)最好,其次是LightGBM,WOA-XGBoost的AP值比LightGBM高9%。綜合來看所有模型在具有大量訓(xùn)練樣本的Normal、Probe和DoS類都具有較好的識別效果,由于R2L和U2L類在訓(xùn)練集中的樣本較少,導(dǎo)致所有模型在這兩類上的識別效果都比較差。
對比四個模型在所有行為類別上的綜合性能,統(tǒng)計了模型的宏平均曲線和mAP曲線如圖7和圖8所示。
圖8 mAP曲線
在圖7和圖8中,WOA-XGBoost的宏平均和mAP曲線在其他模型的左上方或右上方。隨后分別是LightGBM、Random Forest和Adaboost??梢钥闯觯?jīng)過參數(shù)優(yōu)化后的WOA-XGBoost模型綜合表現(xiàn)較好。意味著WOA-XGBoost模型相比其他模型來說,對各類入侵行為的檢測精確度高,誤報率更低,識別未知攻擊的能力較好。WOA算法提高了模型的整體性能。
XGBoost算法可以很好地完成對攻擊行為的多分類任務(wù)。WOA算法能夠簡潔高效的完成機器學(xué)習(xí)算法中的參數(shù)優(yōu)化問題。因此本文提出使用WOA來優(yōu)化XGBoost中的參數(shù)。實驗結(jié)果表明模型相較于其他算法LightGBM、隨機森林和Adaboost,有較快的學(xué)習(xí)速度和較好的分類精度,模型的綜合表現(xiàn)較好。
但研究仍存在可進一步改進的地方。XGBoost算法在選擇最優(yōu)分割點時遍歷所有數(shù)據(jù),進行基于逐層生長的策略,會產(chǎn)生很多分裂增益較低的葉子,增加了計算開銷。對于WOA算法,算法中的自適應(yīng)位置選擇策略使WOA能夠避免陷入局部最優(yōu)。然而于隨機機制的存在使算法存在收斂速度慢、收斂精度低等缺點,這些都是需要進一步改善的地方。