胡曉紅 繆祥華,b 袁梅宇,b
(昆明理工大學a.信息工程與自動化學院;b.云南省計算機技術應用重點實驗室)
如今, 互聯(lián)網(wǎng)安全越來越被人們所重視,在眾多現(xiàn)有的威脅中, 分布式拒絕服務攻擊(Distributed Denial-of-Service,DDoS)是一種操作起來相對簡單但傷害性非常大的攻擊內(nèi)部網(wǎng)和Internet資源的技術[1~3]。 DDoS攻擊通過入侵分布在不同位置的主機,在這些主機上安裝控制程序使其被操控成為傀儡機來發(fā)起大規(guī)模的攻擊。 當攻擊者想要發(fā)起攻擊時,成為傀儡機的主機便會按照攻擊者的指令向被攻擊者發(fā)起大量攻擊,使得被攻擊者不能響應正常服務,而且該攻擊行為通常會長時間占用網(wǎng)絡帶寬和系統(tǒng)資源,讓正常訪問的用戶不能及時使用相應資源。
目前提出的針對DDoS攻擊檢測的方法很多,支持向量機(SVM)[4,5]、決策樹(Decision Tree)等機器學習方法都被用來檢測DDoS 攻擊。Sharafaldin I等提出基于信息增益來尋找最佳屬性[6],然后利用決策樹來對DDoS攻擊進行劃分的方法,該方法先計算數(shù)據(jù)特征的信息增益,而后根據(jù)計算出的每個特征信息增益的大小選出最佳屬性(不止一個),最后根據(jù)信息增益遞歸分割數(shù)據(jù)集生成決策樹,但是只尋找最佳屬性往往會使得一些數(shù)量較少的攻擊類型被忽略或者誤判。奚玉龍利用粒子群優(yōu)化算法優(yōu)化卷積神經(jīng)網(wǎng)絡的卷積核以提高模型的訓練效率和全局尋優(yōu)能力[7],對網(wǎng)絡數(shù)據(jù)特征首先用卷積神經(jīng)網(wǎng)絡的權值共享和最大池化自動挖掘,然后用卷積核進行優(yōu)化,但是優(yōu)化時間過長,而對于DDoS攻擊來說,能夠更為快速地識別出DDoS攻擊是十分重要的。湯輝等利用重定向判定機制對訪問了分布式蜜罐系統(tǒng)的攻擊行為進行分析[8],如果判定是正常行為就交由正常服務器來響應,如果判定是攻擊行為則由蜜罐系統(tǒng)進行處理,這樣確保了系統(tǒng)的可靠性和實用性,但是經(jīng)過蜜罐系統(tǒng)后,并不是所有數(shù)據(jù)都是攻擊數(shù)據(jù),且判別的準確率和時間需要提高。
針對以上問題,筆者提出了基于主成分分析(Principal Component Analysis,PCA) 和隨機森林(Random Forest,RF)的DDoS攻擊檢測模型。 對于入侵數(shù)據(jù)首先用PCA進行降維處理, 因為入侵數(shù)據(jù)通常有非常多的特征,有些特征對于判定其是否為入侵數(shù)據(jù)并沒有起到很大作用, 而PCA可以保留數(shù)據(jù)的主要特征分量。 降維處理過的數(shù)據(jù)隨后放入隨機森林模型,通過對參數(shù)的調(diào)整,可以快速判別出該數(shù)據(jù)流是否為入侵數(shù)據(jù), 與決策樹、SVM及KNN等機器學習算法相比, 準確率和檢測速度都得到了非常大的提升。
筆者采用基于主成分分析和隨機森林(PCARF)算法對DDoS攻擊進行檢測,提出了基于主成分分析和隨機森林的DDoS攻擊檢測模型(PCARF DDoS攻擊檢測模型)。 考慮到DDoS攻擊中數(shù)據(jù)量大和數(shù)據(jù)特征多的問題, 首先采用PCA對數(shù)據(jù)進行降維處理。 PCA是一種針對高維數(shù)據(jù)的技術, 對于處理特征維數(shù)多的數(shù)據(jù)具有很好的效果。 面對數(shù)據(jù)量大、特征種類繁多的數(shù)據(jù),不管是機器學習算法還是神經(jīng)網(wǎng)絡模型處理起這類數(shù)據(jù)往往都會出現(xiàn)耗時長且準確率不高的問題。 因此,對數(shù)據(jù)首先進行降維處理可以縮短算法的處理時間,并且通過降維還可以使得數(shù)據(jù)變得更加直觀和易于理解。 降維操作完成后,將處理過的數(shù)據(jù)放入隨機森林模型訓練分類。 隨機森林通過Bagging方式來產(chǎn)生多組不同的決策樹[9],然后將多個決策樹合并在一起組成“森林”[10]。 當需要對一個樣本進行預測時,森林中的所有樹開始參與投票,由于樹與樹之間相互獨立,每一棵決策樹都是經(jīng)過隨機且互不影響的訓練樣本得到的,因此每棵樹的分類策略都不一樣, 投票結束后,綜合整個森林的決策得到最終的預測期望值,產(chǎn)生最優(yōu)結果。
筆者提出的PCA-RF DDoS攻擊檢測模型結構框圖如圖1所示, 該模型主要由3個模塊組成:數(shù)據(jù)預處理模塊、PCA-RF算法訓練模塊和分類測試模塊。
圖1 PCA-RF DDoS攻擊檢測模型結構框圖
對于很多噪聲過大的數(shù)據(jù)來說,PCA可以去除噪聲,讓數(shù)據(jù)變得“干凈”。 更加具體地說,PCA可以將大量原始的數(shù)據(jù)特征融合成少量的特征空間,融合成的新的數(shù)據(jù)特征可以代表原始數(shù)據(jù)集中幾乎所有數(shù)據(jù)的特征。 將多個數(shù)據(jù)流量特征融合到少數(shù)幾個主要特征中,從而可以降低數(shù)據(jù)分析的復雜性。 PCA將m維的數(shù)據(jù)集X融合成n維的數(shù)據(jù)集Y(m>n),處理后的數(shù)據(jù)集Y不僅損失的信息很少,而且數(shù)據(jù)的冗余度也降低了,數(shù)據(jù)得以綜合利用。
首先,提取樣本特征生成特征矩陣X1,然后用如下公式計算出X1第j列的樣本標準差σj:
x′i1、y′i2、z′i3和w′i4表示每一維度特征減去該列的樣本標準差后得到新的特征矩陣X2中的每一個相應元素(此處以4個特征為例)。
得到新的特征矩陣后,在此基礎上計算協(xié)方差矩陣X3:
計算矩陣X3的特征值λ和對應的特征向量ξ,并將特征值從大到小排序:
其中E為單位矩陣。
選擇前k個特征值λ, 計算出其特征向量ξ組成特征矩陣X4,矩陣X4即降維處理完成的特征矩陣。
隨機森林是集成了決策樹特點的機器學習算法,它不僅繼承了決策樹在分類問題上的優(yōu)點和容錯率高的特點,還解決了決策樹泛化能力差的缺點。
筆者提出的算法結合了PCA可以降低數(shù)據(jù)分析復雜性和隨機森林分類快的優(yōu)點,具體算法如下:
輸入:數(shù)據(jù)集D,類別集合L,L={0,1} /*D為已經(jīng)經(jīng)過數(shù)據(jù)預處理的數(shù)據(jù)集*/
輸出:最終分類結果T,T={Attack,BENIGN}
①對數(shù)據(jù)集D生成特征矩陣X; /*X矩陣為有m維特征的矩陣*/
②For each xi∈X
③提取樣本特征xi,生成特征矩陣X1;
④End For
⑤根據(jù)式(1)得到新的特征矩陣X2;
⑥根據(jù)式(2)得到協(xié)方差矩陣X3;
⑦For each xi∈X3
⑧根據(jù)式(3)計算出特征值λi;
⑨End For
⑩根據(jù)λi計算出特征向量, 選取k個特征向量組成特征矩陣X4; /*以此便得出了k維特征矩陣*/
實驗硬件為華為MateBook13, 操作系統(tǒng)為Windows 10,開發(fā)環(huán)境為jupyter notebook。 采用的數(shù)據(jù)集為CIC-DDoS2019[4]數(shù)據(jù)集,它一共包含了87個特征,有數(shù)十萬條數(shù)據(jù),該數(shù)據(jù)集能夠最大限度地模擬真實數(shù)據(jù)流特征,彌補了以前數(shù)據(jù)集的缺點和局限性。
數(shù)據(jù)預處理操作過程如下:
a. 對數(shù)據(jù)進行數(shù)值化操作,數(shù)據(jù)集中包含了87個特征,其中float類型的特征有24個,int類型的特征有57個,object類型的特征有6個, 因此將6個object類型特征轉(zhuǎn)換為float類型,便于后續(xù)操作;
b. 對于冗余和無意義的特征進行刪除;
c. 對于部分行或者列中有缺省的數(shù)據(jù)進行填充, 填充方法是計算其上下條數(shù)據(jù)的平均值,然后將其作為缺省值填進去;
d. 利用Python中的LabelEncoder方法將標簽中的“Attract”和“BENIGN”轉(zhuǎn)換為“0”和“1”,便于分類;
數(shù)據(jù)預處理完成后,筆者用train_test_split方法將數(shù)據(jù)集分為訓練集和測試集。
筆者將從準確率 (accuracy)、 精確率(precious)、召回率(recall)、F1-score和訓練時間5個方面對模型的DDoS攻擊檢測進行性能評價。而前幾類評價都依賴于混淆矩陣的計算,見表1。
表1 混淆矩陣
其中,TP表示數(shù)據(jù)類別為正常數(shù)據(jù)并且模型識別也為正常數(shù)據(jù);FN表示數(shù)據(jù)類別為正常數(shù)據(jù)但是模型識別為攻擊數(shù)據(jù);FP表示數(shù)據(jù)類別為攻擊數(shù)據(jù)但是模型識別為正常數(shù)據(jù);TN表示數(shù)據(jù)類別為攻擊數(shù)據(jù)并且模型識別也為攻擊數(shù)據(jù)。
準確率acc是模型正確判斷出該數(shù)據(jù)為攻擊還是正常數(shù)量占所有預測數(shù)據(jù)總量的比例,計算方法為:
精確率pre是模型正確判斷出該數(shù)據(jù)為攻擊數(shù)據(jù)并且該數(shù)據(jù)也確實為攻擊數(shù)據(jù)的比例,計算方法為:
召回率recall的意思是模型正確判斷出攻擊數(shù)據(jù)占所有攻擊數(shù)據(jù)的比例,計算方法為:
F1-score(F1-score)用來衡量二分類問題中模型的綜合精準度,取值范圍為0~1,1代表模型分類結果最好,0代表模型的分類結果最差,計算方法為:
將PCA-RF算法與傳統(tǒng)機器學習中的SVM、KNN、Na l¨ve Bayes、Logistic Regression 和Decision Tree進行對比, 在準確率、 精確率、 召回率、F1-score和訓練時間5個方面進行實驗,結果見表2。
表2 6種算法性能比較
實驗結果表明,筆者提出的PCA-RF算法在準確率、精確率、召回率、F1-score和訓練時間5個方面均優(yōu)于其他算法,分別達到了99.92%、99.22%、99.92%、99.92%、7.311 1 s。 證實了隨機森林在檢測DDoS攻擊中有著比SVM、KNN等傳統(tǒng)學習算法更加優(yōu)秀的表現(xiàn)[11]。
針對DDoS攻擊檢測問題中的準確率低、檢測時間長的問題, 提出了基于PCA和隨機森林的DDoS攻擊檢測模型。 首先使用PCA對數(shù)據(jù)集進行特征降維,保留數(shù)據(jù)的主要特征分量,降維處理過的數(shù)據(jù)放入隨機森林模型,可以快速得到分類結果。 實驗結果表明,該算法在準確率、精確率、召回率、F1-score和訓練時間5個方面均優(yōu)于SVM、KNN、Na ve Bayes、Logistic Regression、Decision Tree這5種算法。