易 濤,孟凡欣
(中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
DoS 攻擊的基本原理是通過控制網(wǎng)絡(luò)上的大量設(shè)備,發(fā)送無意義的數(shù)據(jù)包耗盡網(wǎng)絡(luò)及主機(jī)的計(jì)算與服務(wù)資源。DoS 攻擊的平均峰值2019 年與2018年相比穩(wěn)中有升,說明DoS 攻擊的技術(shù)成熟度在不斷提升。同時(shí)超大規(guī)模DoS 攻擊事件數(shù)量快速增長(zhǎng),2019 年比2018 年增長(zhǎng)了200 余次。當(dāng)前DoS 攻擊的主要方法依然是SYN Flood、ACK Flood 和UDP Flood三類,而混合攻擊仍然為DoS攻擊的主流方式。2019 年,使用多種攻擊手法的混合DoS 攻擊事件占比達(dá)到12.5%。隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來越多的物聯(lián)網(wǎng)設(shè)備參與DoS 攻擊,網(wǎng)絡(luò)防護(hù)運(yùn)營(yíng)面臨新的挑戰(zhàn)[1]。
目前,通過檢測(cè)干擾系統(tǒng)服務(wù)的異常流量來為系統(tǒng)提供安全的DoS 攻擊常規(guī)檢測(cè)方法主要有以下幾種,一是基于網(wǎng)絡(luò)流量變化的檢測(cè)方法,通過與正常流量大小相比來進(jìn)行檢測(cè)判斷;二是基于地址變化的檢測(cè)方法,通過對(duì)源地址出現(xiàn)頻率和分布情況來進(jìn)行判斷;三是基于數(shù)據(jù)包頭信息的檢測(cè)方法,通過比對(duì)SYN 數(shù)據(jù)包數(shù)量和發(fā)出的SYN+ACK 數(shù)據(jù)包數(shù)量的差異來進(jìn)行檢測(cè)。無論基于何種方式,分類器設(shè)計(jì)的核心目的是能夠快速高效的對(duì)異常行為進(jìn)行識(shí)別。文獻(xiàn)[2]研究探討了多種監(jiān)督學(xué)習(xí)算法檢測(cè)DoS 攻擊的效果,實(shí)驗(yàn)結(jié)果表明樸素貝葉斯模型效果最好,但該模型并沒有對(duì)數(shù)據(jù)集進(jìn)行特征提取,過多的數(shù)據(jù)冗余與噪聲會(huì)極大的干擾模型的訓(xùn)練精度,拖慢預(yù)測(cè)模型的訓(xùn)練進(jìn)程,使模型在訓(xùn)練過程中消耗更多不必要的計(jì)算資源。文獻(xiàn)[3]是開發(fā)一個(gè)基于神經(jīng)網(wǎng)絡(luò)的DoS 流量檢測(cè)系統(tǒng)的模型及其分類,以提高對(duì)某類DoS 流量檢測(cè)的準(zhǔn)確性,但模型顯示UDP DoS 攻擊分類的準(zhǔn)確率較低,主要原因是UDP DoS 攻擊值與合法流量參數(shù)的對(duì)應(yīng)關(guān)系未能分清。文獻(xiàn)[4]采用支持向量機(jī)和隨機(jī)森林疊加的方式來提升網(wǎng)絡(luò)入侵判別的性能,基于KDD 數(shù)據(jù)集對(duì)9 種分類算法進(jìn)行了比對(duì),提出了采用疊加的集成算法優(yōu)于單一分類器性能的思路。文獻(xiàn)[5]研究了低速率DDoS 攻擊在云環(huán)境下檢測(cè)的方法,采用貝葉斯網(wǎng)絡(luò)進(jìn)行檢測(cè),提升了檢測(cè)精度并降低了計(jì)算資源的消耗。
基于上述問題和研究趨勢(shì),在前人研究的基礎(chǔ)上本文采用了特征工程的方法在KDD 數(shù)據(jù)集上對(duì)DoS 混合攻擊數(shù)據(jù)特征進(jìn)行離散化處理,采用CFS最佳優(yōu)先搜索算法搜索特征向量空間,對(duì)數(shù)據(jù)進(jìn)一步地壓縮與降維,提升模型對(duì)威脅的精準(zhǔn)判別效能。最后,通過利用隨機(jī)森林算法在權(quán)威的數(shù)據(jù)集上進(jìn)行測(cè)試,對(duì)DoS 攻擊屬性特征全空間及降維空間進(jìn)行比對(duì),證明基于特征優(yōu)化的混合式DoS 攻擊檢測(cè)的有效性與優(yōu)越性。
數(shù)據(jù)離散是指將連續(xù)的數(shù)據(jù)分組成一段段離散的區(qū)間。實(shí)現(xiàn)數(shù)據(jù)離散的方法主要包括等距離法、等頻率法或優(yōu)化的方法等幾種方法。數(shù)據(jù)離散主要有三個(gè)原因,一是有效減小分類算法的時(shí)空開銷,提升檢測(cè)模型的抗噪聲能力和分類能力;二是離散化特征更具有可理解性,可以較為直觀快速理解數(shù)據(jù)表示的結(jié)果;三是離散型數(shù)據(jù)對(duì)數(shù)據(jù)中的缺陷有較好的處理能力,使得分類模型與測(cè)試效果能夠更加穩(wěn)定。
等寬離散法:即將屬性值分為k個(gè)區(qū)間,每個(gè)區(qū)間具有相同寬度,根據(jù)實(shí)際需要確定k值。每個(gè)屬性值對(duì)應(yīng)所屬空間。
等頻離散法:即在每個(gè)區(qū)間放入數(shù)量相同的屬性值,根據(jù)實(shí)際需要確定區(qū)間的個(gè)數(shù)。
聚類離散法:將數(shù)據(jù)聚類后,在每個(gè)相同簇的屬性值進(jìn)行統(tǒng)一的標(biāo)注,簇的個(gè)數(shù)根據(jù)實(shí)際需要來確定。
CFS 算法主要通過啟發(fā)的方式評(píng)估搜索算法篩選出來的特征子集的相關(guān)性,評(píng)分高低由兩個(gè)參數(shù)決定,分別是屬性與類別的關(guān)聯(lián)度以及屬性之間的關(guān)聯(lián)度。啟發(fā)公式如式(1)所示:

式(1)中,Merits為包含k個(gè)特征的特征子集S的估計(jì)值,rf-f為特征-特征平均相關(guān)性參數(shù),rc-f為特征-類平均相關(guān)性參數(shù),r為相關(guān)系數(shù),所有變量執(zhí)行標(biāo)準(zhǔn)化。啟發(fā)式方法主要識(shí)別高度關(guān)聯(lián)的相關(guān)屬性特征,對(duì)類的判別不起作用的屬性特征將被刪除。

隨機(jī)森林由多個(gè)決策樹集成,每棵樹之間不存在關(guān)聯(lián)。輸入一個(gè)新的樣本后,森林中的每一棵決策樹會(huì)獨(dú)立進(jìn)行判斷歸類,樣本的預(yù)測(cè)值為判定數(shù)量最多的那一類。隨機(jī)森林屬于Bagging 算法的一種,具有減少方差的特性,因而模型泛化能力較好,與此同時(shí),可以采用并行的方式創(chuàng)建分類器[6]。
本文實(shí)驗(yàn)搭載于Windows 10 系統(tǒng),使用的計(jì)算機(jī)配置為Intel i7-8565U CPU@1.8 GHz 和16G 內(nèi)存,測(cè)試平臺(tái)是Weka 3.8.3。Weka 平臺(tái)集成了眾多數(shù)據(jù)挖掘算法,可以完成各種功能,包括數(shù)據(jù)預(yù)處理、數(shù)據(jù)分類、數(shù)據(jù)聚類、數(shù)據(jù)相關(guān)性分析四大功能。Weka 的擴(kuò)展性很強(qiáng),它包含了很多可以實(shí)現(xiàn)的接口,使用者如果想要完成自己的算法優(yōu)化,可以根據(jù)官方的開發(fā)文檔使用相應(yīng)的接口來自行開發(fā)。
NSL-KDD 是目前公共網(wǎng)絡(luò)流量權(quán)威數(shù)據(jù)集之一,網(wǎng)絡(luò)入侵檢測(cè)領(lǐng)域中的大多數(shù)實(shí)驗(yàn)都基于該數(shù)據(jù)集進(jìn)行。通用的NSL-KDD 數(shù)據(jù)集根據(jù)難度大小劃分為21 個(gè)級(jí)別,一共包含四個(gè)樣本子集,分別是“KDD Train+”、“KDD Train_20percent”、“KDD Test+”和“KDD Test-21”。其中前兩項(xiàng)為訓(xùn)練集,后兩項(xiàng)為測(cè)試集,“KDD Train_20percent”是“KDD Train+”的20%子集,“KDD Test+”包含了所有的測(cè)試數(shù)據(jù),“KDD Test-21”為難度級(jí)別為21 的測(cè)試子集,如表1 所示。
通用的NSL-KDD 數(shù)據(jù)集包括四種常見的網(wǎng)絡(luò)攻擊類型: Probe、DoS、R2L 和U2R[7]。其中,DoS 主要攻擊類型包括Smurf 攻擊、Teardrop 攻擊、Pod 攻擊、Neptune 攻擊等,如表2 所示。

表1 NSL-KDD 數(shù)據(jù)類別

表2 NSL-KDD 數(shù)據(jù)集中的DoS 攻擊
模型效能的評(píng)估指標(biāo)主要采用兩種,準(zhǔn)確率(Accuracy)和精確率(Precision)。如式(2)和式(3)所示:


其中,TP為真正,表示正例預(yù)測(cè)正確的數(shù)目;TN為真負(fù),表示負(fù)例預(yù)測(cè)正確的數(shù)目;FP為假正,表示負(fù)例中被錯(cuò)誤地分類為正例的數(shù)目;FN為假負(fù),表示正例中被錯(cuò)誤地分類為負(fù)例的數(shù)目。模型性能好壞的判斷標(biāo)準(zhǔn)是準(zhǔn)確率、精確率越高,誤報(bào)率越低。
第一步,將KDD Train+中45 927 個(gè)DoS 攻擊和67 343 個(gè)Normal 從數(shù)據(jù)集中分離,并作離散化預(yù)處理,在KDD Test+中剝離出DoS 攻擊和Normal數(shù)據(jù)集;第二步,利用CFS 子集技術(shù),從41 個(gè)屬性中篩選出特征向量;第三步,利用篩選出的特征向量子集訓(xùn)練隨機(jī)森林模型;第四步,利用離散化的測(cè)試集進(jìn)行特征降維后的分類器測(cè)試,并與基于41 維非離散化特征的DoS 攻擊檢測(cè)分類器進(jìn)行效能比對(duì),檢測(cè)模型如圖1 所示。

圖1 基于CFS 的DoS 檢測(cè)模型
采用隨機(jī)森林算法對(duì)41維全維數(shù)據(jù)進(jìn)行測(cè)試,然后使用CFS 子集技術(shù)進(jìn)行特征約簡(jiǎn)后的測(cè)試,對(duì)二者結(jié)果進(jìn)行比較。
(1)CFS 子集約簡(jiǎn)特征
將KDD Train+中45 927 個(gè)DoS 攻擊和67 343個(gè)Normal 從數(shù)據(jù)集中分離,進(jìn)行離散化處理,采用CFS 技術(shù)選擇后主要包括13 維屬性特征,“protocol_type”、“flag”、“src_bytes”、“dst_bytes”、“l(fā)and”、“wrong_fragment”、“hot”、“l(fā)ogged_in”、“srv_serror_rate”、“same_srv_rate”、“diff_srv_rate”、“dst_host_count”、“dst_host_same_srv_rate”。
(2)比較結(jié)果如表3 所示

表3 實(shí)驗(yàn)結(jié)果
在物聯(lián)網(wǎng)規(guī)模化發(fā)展的今天,低成本的混合式DoS 攻擊仍是攻擊者熱衷的手段,而快速的檢測(cè)及發(fā)現(xiàn)方式是防御方必須要考慮的問題。本文基于業(yè)界通用的NSL-KDD 數(shù)據(jù)集,全面分析了DoS 攻擊的特征屬性,并在此基礎(chǔ)上構(gòu)建了主流DoS 攻擊數(shù)據(jù)樣本集,通過采用CFS 技術(shù)實(shí)現(xiàn)了對(duì)數(shù)據(jù)特征的降維來提升分類器的效能。實(shí)驗(yàn)證明了通過主特征降維后訓(xùn)練的隨機(jī)森林算法模型在數(shù)據(jù)離散化后發(fā)現(xiàn)DoS 攻擊的時(shí)間損耗和精度上均獲得了提升。在未來,基于此特征選擇方法,可以進(jìn)一步嘗試不同機(jī)器學(xué)習(xí)算法的時(shí)效性比對(duì),并在此基礎(chǔ)上構(gòu)建一個(gè)完善有效的DoS 攻擊檢測(cè)系統(tǒng)。