閆海濤,張之義,朱曉明,王 鵬
(中國電子科技集團公司 第54研究所,石家莊 050081)
隨著互聯網技術發展和信息化建設的推進,使得政府和企業等組織機構越來越多的業務在線上處理,同時現有攻擊方式發展的更加多樣和隱蔽,來自內部和外部的網絡安全事件頻發,當前這些組織機構面臨的安全風險變高。因此,需要更加高效的網絡入侵檢測技術[1]。對機構內部的用戶和實體的行為檢測,通過相應算法利用現有行為數據構建基線,能夠高效的識別正常和入侵行為[2]。
網絡入侵檢測系統(NIDS,network intrusion detection system)根據所用的方法,可以分為基于誤用的檢測和基于異常的檢測兩類[3]。基于誤用的檢測是對攻擊行為構建基線,符合該基線的行為都看作入侵行為,這類方法的誤報率較低,但漏報率較高。基于異常的檢測對正常行為構建基線,不符合基線的行為都看作入侵行為,這類方法能夠識別未知的攻擊模式,也是本文采用的方法。
相較于傳統的防火墻系統,網絡入侵檢測系統對當前收集到的行為數據提取特征并與構建的正常行為基線進行比較,能夠實時發現環境中的安全風險。最初的研究者基于統計學習方法,捕獲并分析網絡流量活動的統計特征進行入侵檢測[4],但是誤報率較高,而且經常需要專家經驗輔助判斷。
近年來,研究者通過引入機器學習,深度學習等技術進行入侵檢測并取得了顯著的提升效果[5-7],包括樸素貝葉斯算法(NB,naive bayes)[8],K近鄰算法(KNN,k-nearest neighbor)[9],支持向量積算法(SVM,support vector machine)[10]和邏輯回歸算法(LR,logistic regression)[11]等。然而在使用這些算法時,需要對數據的缺失值進行處理,在處理大規模數據時效率不高,仍然存在誤報率較高和檢測效率較低的問題。
集成學習(EL,ensemble learning)是近年來機器學習研究中的熱門領域。極限梯度提升(XGBoost,extreme gradient boosting)是一種基于梯度提升決策樹(GBDT,gradient boosting decision tree)改進的集成學習算法[12]。將XGBoost應用在網絡入侵檢測系統中得到了更高精度的檢測效果[13]。文獻[14]中,研究者將XGBoost算法應用到網絡入侵檢測,分析和評估了XGBoost模型相對于其他分類模型的優勢。結果表明XGBoost相較于樸素貝葉斯,SVM和隨機森林具有更好的準確率。
對于機器學習來說,模型的參數會在很大程度上影響其性能表現,一般采用窮舉法來找到使模型表現最好的參數,但這種方法效率較低。研究者受到群居動物通過合作來完成復雜的任務的行為啟發提出了一系列群體智能優化算法來求解優化問題,在分類任務上取得了較好的效果[15]。文獻[16]中提出基于粒子群算法(PSO,particle swarm optimization)對SVM進行參數優化,應用到進行入侵檢測任務中,提高了模型訓練效率并實現了較低的誤報率。文獻[17]采用遺傳算法(GA,genetic algorithm)對SVM的懲罰因子、核函數進行優化,明顯縮短了檢測時間,并在檢測準確率上有所提升。文獻[18]用遞歸消除算法去除冗余特征后,利用遺傳算法來優化輕量級梯度提升機(LightGBM,light gradient boosting machine)的關鍵參數。文獻[19]針對軸承故障診斷問題,結合鯨魚優化算法(WOA,whale optimization algorithm)提出了一種基于深度學習特征提取和WOA-SVM狀態識別相結合的故障診斷模型。對比了PSO-SVM和GA-SVM模型,結果表明WOA-SVM具有較高的收斂精度和速度。文獻[20]提出了一種將WOA算法與相關向量機(RVM,relevance vector machine)相結合的模型。將WOA-RVM模型應用于天然氣負荷的短期預測,該模型在預測精確度高于其他模型。
WOA算法作為一種結構簡潔易于實現且適應性較強的算法,能有效避免陷入局部最優解的情況[21]。有研究者將WOA算法應用到入侵檢測領域[22]。文獻[23]提出使用WOA算法來優化RVM來進行入侵檢測。在兩個常用的入侵檢測數據集NSL-KDD和CICIDS2017進行測試驗證,結果表明WOA算法相較于其他優化算法如粒子群算法,遺傳算法和灰狼優化算法(GWO,grey wolf optimizer)有更好的效果。文獻[24]組合WOA算法和遺傳算子作為SVM的參數優化方法,提出了WOA-SVM模型來檢測無線Mesh網絡中的入侵行為,同遺傳算法進行對比,實驗表明該模型有效降低了計算復雜度和檢測時間,并且在檢測效率上有較好的提升。
研究者提出了很多結合智能群體優化算法和機器學習算法的入侵檢測方法,仍有一定缺陷。這些研究大都對模型進行整體評估,僅評估了算法在數據集上的整體表現,如準確率,精確率,F-Score等,卻未對數據集中的每種攻擊類型的分類效果進行評估分析。
本文結合智能群體優化算法和機器學習算法提出了WOA-XGBoost模型。模型利用WOA良好的搜索能力對XGBoost模型中的參數進行適應性的優化。有效的提高了其在入侵檢測中的性能,包括對不同類別攻擊的識別能力。其次,在評估WOA-XGBoost模型的性能時,使用NSL-KDD數據集[25],不僅評估了模型總體性能,還評估了模型對各個攻擊類別的識別能力,并與XGBoost算法和其他集成學習算法包括隨機森林(RF,random forest)、Adaboost和LightGBM進行了性能對比。實驗結果表明混合模型對大部分攻擊類別具有較好的效果。
XGBoost算法基于集成學習中的Boosting算法,Boosting算法通過累加多個弱分類器來組合成一個強分類器。一般采用決策樹作為基學習器。XGBoost是在GBDT算法的基礎上進行了改進,在優化目標函數時使用二階泰勒展開式作為模型損失殘差,提高了模型精度。并引入正則化項,更好地防止過擬合。使用前向分步加法訓練來優化目標函數,這意味著后一步的優化過程依賴于前一步的結果。第t次迭代要訓練的樹模型為ft(xi),則本輪迭代預測結果為:

由于XGBoost是一個累加多個基學習器的模型,在模型的第t輪迭代中,目標函數可以表示如下:
(2)
式中,l表示第t輪迭代中損失函數,c為一個常數項,樹的復雜度Ω將全部t顆樹的復雜度進行求和作為目標函數的正則化項,正則化項的引入用于防止模型過擬合,Ω計算公式如下:
(3)

計算公式(1)的二階泰勒展開式,得到如下結果:
obj(t)=
Ω(ft)+c
(4)
其中:g為損失函數的一階導,h為二階導,計算公式如下:
(5)
(6)
只要求出每輪g和h的值,然后優化目標函數,從而得到每輪迭代的決策樹ft(x),最后累加所有的決策樹,得到一個整體模型。
定義實例集:
Ij={i|q(xi)=j}
(7)
Gj=∑i∈Ijgi
(8)
Hj=∑i∈Ijhi
(9)
Ij表示將屬于第j個葉子結點的所有樣本xi劃入到一個葉子結點的樣本集合中,Gj表示葉子結點j所包含樣本的一階偏導數累加之和,是一個常量,Hj表示葉子結點j所包含樣本的二階偏導數累加之和,也是一個常量。

(10)
(11)
其中:wj表示節點的權重,obj表示損失函數的得分,分數越小,所得樹的分類結果越好。
在建立第t顆樹時,關鍵在于找到葉子結點的最優切割點,對目標函數obj,分裂后的收益Gain取得最大值時即為最優分割。分裂收益Gain的計算公式如下:
(12)
括號內前兩項分別為左右子樹的得分,第三項為不進行分割時的得分。
鯨魚優化算法由Mirjalili等人提出[21],他們受鯨魚捕食獵物的啟發,在觀察鯨魚群體搜尋、包圍、抓捕和攻擊獵物等過程后,提出了尋找獵物,包圍獵物,螺旋泡網捕食的數學模型。每個鯨魚的位置代表了一個可行解。最優解為獵物位置或者最接近獵物的位置。算法用搜索代理表示鯨魚,在每次迭代中,搜索代理隨機選擇其他搜索代理的位置或當前最優搜索代理的位置作為目標來更新它們的位置。WOA算法的優化過程如下:
首先,隨機初始化搜索代理位置Xi(i=1,2,…,n),其中,n為待優化參數的個數,計算每個搜索代理的Fitness。每一輪迭代中,按如下公式更新搜索代理位置:
X(t+1)=
(13)
其中:t是當前迭代次數,算法依概率p選擇圓形圍捕運動或螺旋運動接近獵物,參數b用于控制螺旋形狀,l為[-1,1]的隨機數。式中,D用于衡量當前搜索代理與目標搜索代理的距離,目標搜索代理為最優搜索代理或隨機選擇的搜索代理,D′表示當前搜索代理與最優搜索代理的距離,計算公式如下:
(14)
D′=|X*(t)-X(t)|
(15)
式中,X*(t)表示目前為止最優的搜索代理位置向量,Xrand(t)表示某個隨機搜索代理位置向量,X(t)表示當前搜索代理的位置向量,A和C為系數:
A=2α·γ1-α
(16)
C=2·γ2
(17)
(18)
γ1,γ2為[0,1]之間的隨機向量,收斂因子α在迭代的過程中線性的從2降到0,max_t表示最大迭代次數,α從2降到0的過程,控制了搜索代理從搜尋到捕獵的轉換過程,與之對應的,當|A|≥1時,對應搜尋和包圍獵物的過程,選擇隨機搜索代理更新當前代理位置。當|A|<1時,對應圍捕過程,選擇最優搜索代理更新當前代理位置。最后,WOA算法滿足終止準則而終止。
作為KDD-CUP99的優化版本,NSL-KDD數據集克服了數據集的固有問題。通過去除冗余和重復記錄,降低了數據集中不平衡數據的影響。重新調整訓練集和測試集中樣本到合適的數量。數據集包括正常行為和四種攻擊:Probe、拒絕服務攻擊(DoS,denial of service)、本地未授權訪問(U2R,unauthorized access to local super user)和遠程未授權訪問(R2L,unauthorized access from remote to local machine)。在每個攻擊類別下包括多種攻擊行為,如Probe類包含Nmap掃描、MScan掃描等。DoS類包含Neptune攻擊,Teardrop攻擊等。U2R類下包含緩沖區溢出攻擊、Perl腳本攻擊等。R2L類包括FTP密碼猜解等。訓練和測試數據中類別的分布分別如圖1所示。

圖1 數據樣本分布統計圖
數據集中包括了網絡連接的基本屬性特征和內容特征、基于時間和基于主機的網絡流量統計特征。在數據集的41個特征中,有9個離散特征和32個連續特征。因為不同的特征可能有不同的測量方法,由于量綱的不同,數值型數據的數值偏差較大會影響梯度下降算法求最優解的速度,需要進行數據標準化處理。
原始特征集合中第j個特征類型集合Xj中第i個元素的特征值xij其中1
(19)
式中,AVG(Xj)為第j個特征的均值,STAD(Xj)表示該特征的平均絕對值誤差。

(20)
入侵行為的檢測可以看作分類任務,將行為分為正常行為和入侵行為兩類,對應分類任務中的正類和負類。本文除了使用分類任務常用的評價指標包括精確率(P,presession),召回率(R,recall),F-Score對模型進行評估,還使用了查準率-查全率(P-R,presession-recall)曲線和受試者工作特征曲線(ROC,receiver operating characteristic curve)進行評估。ROC曲線一般只能對模型的整體性能進行評估[26],P-R曲線相較于ROC曲線能夠反應出模型在數據集中各個類別上的性能表現[27]。
受試者工作特征曲線通過設定范圍從0到1的一系列閾值,得出的模型的一系列假陽率和真陽率數值對,作圖得到ROC曲線,曲線越靠近左上角,ROC曲線下的面積(AUC,area under curve)也就越大,模型的整體表現也就越好。
P-R曲線通過設定范圍從0到1的一系列閾值下,得到的精確率和召回率數值對的連線。相較于ROC曲線,P-R曲線能夠反映出樣本分布對模型的影響。平均精確度(AP,average precision)即為P-R曲線下的面積。某一類的AP值越大,表明模型在該類上的分類性能越好。使用平均精度均值(mAP,mean average precision)曲線和宏平均曲線描述模型在所有類別上的綜合識別性能。
XGBoost模型包含通用參數和模型參數,通用參數包括booster、silent、nthread,這些不需要參數優化。模型參數作為本文優化的目標,對模型的性能有重要影響。實驗中,使用鯨魚優化算法對模型性能影響最關鍵的6個參數進行搜索優化,包括學習率eta,最大樹深度max_depth、最小葉權重min_child_weight,剪枝參數gamma、樣本隨機采樣參數subsample和樣本列采樣參數colsample_bytree。關于XGBoost這6個待優化模型參數的取值范圍和參數的作用介紹見表1所示。

表1 XGBoost參數介紹
WOA-XGBoost模型的訓練和參數的優化過程如圖2所示。

圖2 模型訓練流程
首先,根據待優化參數個數確定搜索代理的維度,每個維度的分量對應不同的XGBoost參數,因此,這里每個搜索代理是一個6維向量。各維度參數的取值范圍限定了WOA的搜索空間。第i個搜索代理在t輪迭代的位置向量可以表示為:
(21)
然后將位置向量賦給模型的相應參數,并將訓練集上的表現作為初始Fitness值。第i個搜索代理在t輪迭代中,根據當前的系數A,C,p和公式(13),更新位置,并計算當前的Fitness值為:
Fi(t)=(Xi(t)→XGBoost|trainset)[metric=PR-curve]
(22)
每輪迭代后確定當前最優搜索代理:
Xbest(t)=max(Fi(t),Xbest(t-1))
(23)
算法不斷迭代直到滿足終止條件,輸出當前最優搜索代理的位置向量,即為XGBoost模型具有最好分類能力的參數。
鯨魚優化算法本身的參數主要包括a,b。關于實驗中主要參數的初始設置和介紹如表2所示。
表3給出了經過鯨魚優化算法搜索得到的XGBoost模型的最優參數。這組參數將用于后面的實驗環節。

表2 鯨魚優化算法參數

表3 XGBoost最優參數
實驗所用的配置介紹如下:CPU為Inter Xeon E5-2666v3@2.5GHz,內存64GB,操作系統為Centos7 64位,使用Python3.7和Matlab2016進行編碼實現。利用1.5節中所得XGBoost模型的最優參數進行實驗評估。將WOA-XGBoost算法在NSL-KDD測試集進行驗證,在各類樣本上的性能指標如表4。

表4 模型評估結果
從這些指標中可以看到模型在DoS類的檢測的準確率最高,說明模型能準確區分DoS類和非DoS類。U2L類的檢測精確度最高,說明被模型識別為U2L的樣本都來自U2L類。Normal類上的召回率最高,意味著大部分正常行為都被正確識別,但U2R召回率最低,即大量U2R類的樣本被識別為其他類,這與數據集中該類樣本數量較少有關。F-Score可以很好地平衡精確度和召回率,能夠評估模型的綜合表現,可以看出模型在Normal,Probe和DoS上的分類性能較好,而在后兩個樣本數量較少的類上表現不佳。
根據模型在每個類別中的P-R曲線,計算得出每個類的AP指標。如表5所示。

表5 每個類別的AP指標
從表5中,可以看出,Normal、Probe和DoS上的AP值高于其他兩個類。主要原因是NSL-KDD訓練集中Normal、Probe和DoS樣本占總數據的99%以上,而U2R和R2L占不到1%。導致模型能夠對樣本數量較多的類別學習更多細節特征,卻無法學習U2R和R2L的一些潛在的特征,因不能很好地對U2R和R2L分類。此外可以發現AP值與F-Score呈正相關。類的F-Score越大,意味著模型對它的分類性能越好。
WOA-XGBoost和XGBoost在測試集上對各類行為檢測結果的AP指標對比如圖3所示。

圖3 模型在各類上的AP指標
從圖中可以看出,兩個模型對Normal、Probe和DoS都有很好的識別效果,但在R2L和U2L上都表現較差。WOA-XGBoost模型相較于XGBoost在每個類中的AP值都更高,這說明通過WOA算法有效提高了模型性能。
為了對比兩個模型在所有行為類別上的綜合性能,統計了模型的宏平均曲線和mAP曲線如圖4~5所示。

圖4 宏平均曲線
圖4和圖5中,WOA-XGBoost始終在XGBoost的左上方或右上方,WOA-XGBoost模型的宏平均曲線和mAP曲線下面積均大于XGBoost,其中宏平均曲線下的面積比XGBoost大約3%,而mAP曲線的面積則比XGBoost大約4%,說明WOA-XGBoost在整體上優于XGBoost模型。
可以發現,WOA算法可以有效地優化XGBoost模型的參數,在提高模型訓練效率的同時,學習更優的參數,提高模型的分類性能。在網絡入侵檢測任務中,對參數的進一步優化可以較好的提高系統檢測能力,能夠更準確的識別攻擊類型以及更好的檢測未知攻擊。
為了驗證模型的性能,本節對比其他機器學習算法包括隨機森林,LightGBM和Adaboost算法,同樣使用上述評價指標。選擇NSL-KDD數據集,使用由P-R曲線計算的AP指標對每個類別的評估。結果如圖6所示。
從圖6中可以發現,在Normal、DoS和Probe類上,WOA-XGBoost、LightGBM和隨機森林之間的性能差距不大。WOA-XGBoost在Normal和Probe類上的AP值最高,其次是LightGBM和隨機森林。在DoS類上LightGBM和隨機森林取得最高的AP值,比WOA-XGBoost高1%。在R2L和U2R類上,WOA-XGBoost比其他模型具有明顯優勢。在R2L類上,WOA-XGBoost的AP值比Adaboost高17%。在U2R上,WOA-XGBoost表現最好,其次是LightGBM,WOA-XGBoost的AP值比LightGBM高9%。綜合來看所有模型在具有大量訓練樣本的Normal、Probe和DoS類都具有較好的識別效果,由于R2L和U2L類在訓練集中的樣本較少,導致所有模型在這兩類上的識別效果都比較差。
對比四個模型在所有行為類別上的綜合性能,統計了模型的宏平均曲線和mAP曲線如圖7和圖8所示。

圖8 mAP曲線
在圖7和圖8中,WOA-XGBoost的宏平均和mAP曲線在其他模型的左上方或右上方。隨后分別是LightGBM、Random Forest和Adaboost。可以看出,經過參數優化后的WOA-XGBoost模型綜合表現較好。意味著WOA-XGBoost模型相比其他模型來說,對各類入侵行為的檢測精確度高,誤報率更低,識別未知攻擊的能力較好。WOA算法提高了模型的整體性能。
XGBoost算法可以很好地完成對攻擊行為的多分類任務。WOA算法能夠簡潔高效的完成機器學習算法中的參數優化問題。因此本文提出使用WOA來優化XGBoost中的參數。實驗結果表明模型相較于其他算法LightGBM、隨機森林和Adaboost,有較快的學習速度和較好的分類精度,模型的綜合表現較好。
但研究仍存在可進一步改進的地方。XGBoost算法在選擇最優分割點時遍歷所有數據,進行基于逐層生長的策略,會產生很多分裂增益較低的葉子,增加了計算開銷。對于WOA算法,算法中的自適應位置選擇策略使WOA能夠避免陷入局部最優。然而于隨機機制的存在使算法存在收斂速度慢、收斂精度低等缺點,這些都是需要進一步改善的地方。