孫澤熙
南京郵電大學(xué)計算機學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院
習(xí)總書記指出:“沒有網(wǎng)絡(luò)安全就沒有國家安全,就沒有經(jīng)濟社會穩(wěn)定運行,廣大人民群眾利益也難以得到保障。”
DDoS(Distributed Denial of Service,分布式拒絕服務(wù))攻擊是目前最常見、危害最大的攻擊手段之一。攻擊者從多個不同位置同時發(fā)動拒絕服務(wù)攻擊,占用目標的系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)帶寬等資源,妨害其正常提供服務(wù)。為增強效力,攻擊者還會使用反射攻擊、源IP 偽造等技術(shù)偽裝攻擊流量,進一步加大了溯源與防御的難度,其防治是研究的熱點與難點。
目前,DDoS 攻擊檢測技術(shù)已具備相當高的準確率。然而攻擊檢測方法只能辨別攻擊是否發(fā)生,無法緩解攻擊造成的影響。本文提出了一種基于XGBoost 的DDoS 攻擊流量過濾算法。模型通過攻擊檢測得到一個時間周期內(nèi)的網(wǎng)絡(luò)狀態(tài)標簽,隨后使用流量特征與標簽訓(xùn)練機器學(xué)習(xí)分類器,更新過濾器。模型能夠較為準確地區(qū)分正常數(shù)據(jù)包和異常數(shù)據(jù)包,且過濾器的參數(shù)可以較為容易地轉(zhuǎn)化為適用于包過濾防火墻或其他類似設(shè)備的過濾規(guī)則。
DDoS 攻擊的防御技術(shù),大致可以分為三個方面:預(yù)防、檢測及響應(yīng)。
按檢測對象劃分,攻擊檢測可以分為流量檢測,主機性能檢測,用戶行為檢測。流量檢測對受保護對象接收到的數(shù)據(jù)包和數(shù)據(jù)流進行分析,根據(jù)流量特征判斷當前網(wǎng)絡(luò)所處的狀態(tài),可部署在任意網(wǎng)絡(luò)位置,技術(shù)相對成熟。主機性能檢測與用戶行為檢測均僅能部署在近目的端,兩者與流量檢測互為補充。
根據(jù)檢測策略的不同,攻擊檢測可以分為基于誤用的檢測和基于異常的檢測。基于誤用的檢測將待測流量與事先收集的攻擊流量進行特征比對,適合防備已知攻擊,但靈活性與可移植性較差。基于異常的檢測則對正常用戶行為進行建模,有悖于常理的流量會被判定為攻擊流量。它能夠應(yīng)對未知攻擊,但建模難度更大,整體的精度可能有所欠缺。
傳統(tǒng)的攻擊檢測算法主要有基于信息熵的算法和基于自相似性的算法。相關(guān)文獻提供了一種基于熵的檢測算法,并驗證了算法在檢測高速率和低速率攻擊時的有效性。相關(guān)文獻在傳統(tǒng)的基于熵的檢測算法的基礎(chǔ)上加入了威脅等級,提高了算法在不同速率的攻擊下的準確率。相關(guān)文獻將基于自相似性的檢測與小波變換結(jié)合,得到的新算法能夠更為準確地區(qū)分攻擊與繁忙業(yè)務(wù)。
隨著人工智能的高速發(fā)展,許多機器學(xué)習(xí)模型,如隨機森林、SVM 也被應(yīng)用于攻擊檢測。
常用的DDoS 攻擊響應(yīng)技術(shù)有流量過濾、路徑隱藏、資源重配置等。流量過濾是在受保護對象之前識別并拋棄異常數(shù)據(jù)包的技術(shù),能夠立刻削減攻擊流量,是最直接的應(yīng)對手段。目前,流量過濾一般使用專用的硬件防火墻,其過濾規(guī)則需要人工配置。
近年來,機器學(xué)習(xí)算法已被廣泛應(yīng)用于各行各業(yè)。DDoS攻擊流量的過濾均屬于標準的二分類問題,滿足其使用條件。但問題在于:有監(jiān)督的機器學(xué)習(xí)算法需要在一定量的已知標簽(即正確的分類結(jié)果)的數(shù)據(jù)上進行學(xué)習(xí),之后才能進行分類。然而現(xiàn)實的流量數(shù)據(jù)不存在標簽,無法直接訓(xùn)練分類器。
關(guān)于這一問題有兩種易得的解決思路:
其一是在事先準備好的人工標注的數(shù)據(jù)集上訓(xùn)練分類器,進行持久化部署。這種方法相較于人工設(shè)計過濾規(guī)則,可以提取更深層的信息,對已知攻擊卓有成效,但靈活性欠佳。據(jù)綠盟全球威脅狩獵系統(tǒng)監(jiān)測,約七成DDoS 攻擊的持續(xù)時間不超過半個小時。在如此短的時間內(nèi),基本不可能通過有限的人力完成數(shù)據(jù)的標注,更遑論過濾規(guī)則的更新了。所以這種方式無法有效應(yīng)對未知攻擊。
其二是使用無監(jiān)督學(xué)習(xí)算法,如聚類算法。這類算法無需標簽即可工作,可以實現(xiàn)“自適應(yīng)過濾”,但精度往往有所欠缺。并且聚類算法難以處理正負樣本比例懸殊的數(shù)據(jù),可能無法應(yīng)對低速率攻擊。此外,聚類算法還只能劃分數(shù)據(jù),而不能指明正樣本與負樣本,還需額外的處理工作。
綜上所述,可見以上兩種思路均未很好地平衡算法的準確率與靈活性,無法直接投入使用。
為了兼顧流量過濾算法的精度和對未知攻擊的檢出率,本文提出了一種新的流量過濾算法設(shè)計思路。算法主要包括兩個部分:特征提取模塊et和分類器ct。該算法將實時流量迭代訓(xùn)練集,實時訓(xùn)練分類器,動態(tài)更新過濾規(guī)則以應(yīng)對未知攻擊,同時保留了分類模型精度較高的優(yōu)點。流程如圖1 所示。

圖1 算法流程
在時間周期t 內(nèi),首先將本周期的流量Ft輸入特征提取模塊et,得到特征數(shù)組Xt。隨后將Xt輸入前一周期訓(xùn)練好的分類器ct-1,得到標簽Yt。再將Xt與Yt拼接,與上一周期的訓(xùn)練集一并組成新的訓(xùn)練集Tt,訓(xùn)練分類器ct;最后從訓(xùn)練完畢的分類器ct中導(dǎo)出包過濾規(guī)則ft以備下一周期使用。與此同時,算法使用上一個周期的分類器ct-1生成過濾規(guī)則,傳遞給包過濾設(shè)備,拋棄異常數(shù)據(jù)包,保留合法流量Ft′。
該算法在面臨已知攻擊時,分類器可以逐步純化數(shù)據(jù)集,進而提高預(yù)測得到的標簽準確率;遭遇未知攻擊時,攻擊樣本會逐步進入訓(xùn)練集,分類器可以在極為有限的時間內(nèi)習(xí)得新攻擊的特征,做出針對性的相應(yīng),具有較好的魯棒性。
本文使用了約750 萬條真實TCP 樣本進行了仿真實驗,每條樣本有80 個可用特征,包含數(shù)據(jù)包特征和數(shù)據(jù)流特征。其中非數(shù)值型的特征被編碼并轉(zhuǎn)換為整型,并進行歸一化(Min-Max Scaling)處理。
本文使用F2 分數(shù)作為模型精度的評價指標。根據(jù)二分類問題混淆矩陣,有:

Fβ 分數(shù)可視為精確率和召回率的調(diào)和平均。精確率(precision)反映了模型對正常流量的檢測性能,精確率越高,誤報(錯誤攔截正常流量)就越少;而召回率(recall)體現(xiàn)了模型對攻擊流量的檢測性能,召回率越高,漏報(錯誤放行攻擊流量)就越少。
F2 分數(shù)賦予了召回率兩倍于精確率的權(quán)重,符合面臨DDoS 攻擊時保護系統(tǒng)優(yōu)先于保護業(yè)務(wù)的思想。
為了選取分類器,本文對八個常見分類模型進行了考察:樸素貝葉斯(NB),邏輯斯蒂回歸(LR),KNN,決策樹(DT),隨機森林(RF),XGboost(XGBT),支持向量機(SVM),多層感知機(MLP)。
兩個聚類模型:K-Means++,Agglomerative 被引入,作為對照。
(1)訓(xùn)練集的規(guī)模
將待選模型在不同規(guī)模的DDoS 數(shù)據(jù)集上分別進行了精度測試,結(jié)果如圖2、圖3 所示。

圖2 分類模型精度-訓(xùn)練集規(guī)模曲線

圖3 聚類模型精度-訓(xùn)練集規(guī)模曲線
依圖可見:除樸素貝葉斯外,其余分類器對訓(xùn)練集的規(guī)模敏感,其性能與樣本量大致呈正相關(guān)。大部分模型精度的增長拐點在102 與103 之間,而深度學(xué)習(xí)所需的數(shù)據(jù)量極為龐大,即便最簡單的多層感知機也需萬條數(shù)據(jù)的支撐才能追平其它算法。聚類算法的性能與數(shù)據(jù)規(guī)模間沒有明確的相關(guān)性,但其精度與分類算法存在較大差距。
根據(jù)拐點效應(yīng),算法中訓(xùn)練集的規(guī)模應(yīng)設(shè)置為1000。
(2)模型的訓(xùn)練速度與推理速度
對分類模型的訓(xùn)練速度與推理速度進行了測試。訓(xùn)練集共103 條樣本,驗證集共106 條樣本,所有模型均使用常用的python 庫實現(xiàn),使用的CPU 為i7-10700K。如表1 所示:KNN與SVM 訓(xùn)練極快,但推理速度落后其他模型兩個數(shù)量級,需慎重使用。

表1 模型的訓(xùn)練與推理速度
(3)模型對標簽噪聲的容忍能力
算法中,因為分類器的正確率不為100%,所以由前一個周期的分類器所生成的標簽必然存在錯誤。這些標注錯誤的數(shù)據(jù)會與正常數(shù)據(jù)相拮抗,影響正常樣本的表達,降低模型的精度。本文將一個基準數(shù)據(jù)集中的部分樣本隨機反轉(zhuǎn)標簽以模擬這種情況,隨后考察了部分原始精度較高的算法在有標簽噪聲的數(shù)據(jù)上精度損失。其中,正確標簽的占比記為α。如圖4所示,模型中XGBoost的綜合表現(xiàn)最好遠優(yōu)于其他算法。

圖4 部分模型在有標簽噪聲的數(shù)據(jù)上的精度變化
綜上,認定XGBoost 為分類器的最優(yōu)解。其基礎(chǔ)準確率極高,訓(xùn)練與推理較快,能夠支撐算法的精度與靈活性。作為集成學(xué)習(xí)算法,其能有效應(yīng)對標簽噪聲,在處理新的流量特征時可以更快完成收斂。
本文采用XGBoost 作為分類器。首先自數(shù)據(jù)集中隨機取出10 組樣本模擬10 個相鄰時間周期的流量;隨后隨機初始化第一個標簽數(shù)組,模擬算法應(yīng)對未知攻擊的情形;再按順序依次生成預(yù)測標簽訓(xùn)練分類器,更新訓(xùn)練集;最后根據(jù)數(shù)據(jù)集中的真實標簽進行測試,記錄每一個周期的分類器的F2 分數(shù)。結(jié)果如圖5 所示。

圖5 算法F2 分數(shù)的時間序列曲線
觀察圖5,可知模型既具備較高的精度,又能夠及時處理未知攻擊,能夠有效進行流量過濾:模型在第三個周期就完成了對未知攻擊建模,隨后的數(shù)個周期內(nèi),研判數(shù)據(jù)包的準確率均維持在0.95 以上。
DDoS 攻擊依然是全球范圍內(nèi)最具威脅的攻擊手段之一。對DDoS 攻擊的防御和控制目前尚缺乏通用、有效的措施。本文對機器學(xué)習(xí)在防御DDoS 攻擊的應(yīng)用進行了介紹與探索,提出了一種兼具精度與靈活性的新的流量過濾算法。希望為新的流量過濾算法的設(shè)計提供幫助。