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

式(1)中,Merits為包含k個特征的特征子集S的估計值,rf-f為特征-特征平均相關性參數,rc-f為特征-類平均相關性參數,r為相關系數,所有變量執行標準化。啟發式方法主要識別高度關聯的相關屬性特征,對類的判別不起作用的屬性特征將被刪除。

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

表1 NSL-KDD 數據類別

表2 NSL-KDD 數據集中的DoS 攻擊
模型效能的評估指標主要采用兩種,準確率(Accuracy)和精確率(Precision)。如式(2)和式(3)所示:


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

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

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