孫澤熙
南京郵電大學(xué)計(jì)算機(jī)學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院
習(xí)總書記指出:“沒有網(wǎng)絡(luò)安全就沒有國(guó)家安全,就沒有經(jīng)濟(jì)社會(huì)穩(wěn)定運(yùn)行,廣大人民群眾利益也難以得到保障。”
DDoS(Distributed Denial of Service,分布式拒絕服務(wù))攻擊是目前最常見、危害最大的攻擊手段之一。攻擊者從多個(gè)不同位置同時(shí)發(fā)動(dòng)拒絕服務(wù)攻擊,占用目標(biāo)的系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)帶寬等資源,妨害其正常提供服務(wù)。為增強(qiáng)效力,攻擊者還會(huì)使用反射攻擊、源IP 偽造等技術(shù)偽裝攻擊流量,進(jìn)一步加大了溯源與防御的難度,其防治是研究的熱點(diǎn)與難點(diǎn)。
目前,DDoS 攻擊檢測(cè)技術(shù)已具備相當(dāng)高的準(zhǔn)確率。然而攻擊檢測(cè)方法只能辨別攻擊是否發(fā)生,無法緩解攻擊造成的影響。本文提出了一種基于XGBoost 的DDoS 攻擊流量過濾算法。模型通過攻擊檢測(cè)得到一個(gè)時(shí)間周期內(nèi)的網(wǎng)絡(luò)狀態(tài)標(biāo)簽,隨后使用流量特征與標(biāo)簽訓(xùn)練機(jī)器學(xué)習(xí)分類器,更新過濾器。模型能夠較為準(zhǔn)確地區(qū)分正常數(shù)據(jù)包和異常數(shù)據(jù)包,且過濾器的參數(shù)可以較為容易地轉(zhuǎn)化為適用于包過濾防火墻或其他類似設(shè)備的過濾規(guī)則。
DDoS 攻擊的防御技術(shù),大致可以分為三個(gè)方面:預(yù)防、檢測(cè)及響應(yīng)。
按檢測(cè)對(duì)象劃分,攻擊檢測(cè)可以分為流量檢測(cè),主機(jī)性能檢測(cè),用戶行為檢測(cè)。流量檢測(cè)對(duì)受保護(hù)對(duì)象接收到的數(shù)據(jù)包和數(shù)據(jù)流進(jìn)行分析,根據(jù)流量特征判斷當(dāng)前網(wǎng)絡(luò)所處的狀態(tài),可部署在任意網(wǎng)絡(luò)位置,技術(shù)相對(duì)成熟。主機(jī)性能檢測(cè)與用戶行為檢測(cè)均僅能部署在近目的端,兩者與流量檢測(cè)互為補(bǔ)充。
根據(jù)檢測(cè)策略的不同,攻擊檢測(cè)可以分為基于誤用的檢測(cè)和基于異常的檢測(cè)?;谡`用的檢測(cè)將待測(cè)流量與事先收集的攻擊流量進(jìn)行特征比對(duì),適合防備已知攻擊,但靈活性與可移植性較差。基于異常的檢測(cè)則對(duì)正常用戶行為進(jìn)行建模,有悖于常理的流量會(huì)被判定為攻擊流量。它能夠應(yīng)對(duì)未知攻擊,但建模難度更大,整體的精度可能有所欠缺。
傳統(tǒng)的攻擊檢測(cè)算法主要有基于信息熵的算法和基于自相似性的算法。相關(guān)文獻(xiàn)提供了一種基于熵的檢測(cè)算法,并驗(yàn)證了算法在檢測(cè)高速率和低速率攻擊時(shí)的有效性。相關(guān)文獻(xiàn)在傳統(tǒng)的基于熵的檢測(cè)算法的基礎(chǔ)上加入了威脅等級(jí),提高了算法在不同速率的攻擊下的準(zhǔn)確率。相關(guān)文獻(xiàn)將基于自相似性的檢測(cè)與小波變換結(jié)合,得到的新算法能夠更為準(zhǔn)確地區(qū)分攻擊與繁忙業(yè)務(wù)。
隨著人工智能的高速發(fā)展,許多機(jī)器學(xué)習(xí)模型,如隨機(jī)森林、SVM 也被應(yīng)用于攻擊檢測(cè)。
常用的DDoS 攻擊響應(yīng)技術(shù)有流量過濾、路徑隱藏、資源重配置等。流量過濾是在受保護(hù)對(duì)象之前識(shí)別并拋棄異常數(shù)據(jù)包的技術(shù),能夠立刻削減攻擊流量,是最直接的應(yīng)對(duì)手段。目前,流量過濾一般使用專用的硬件防火墻,其過濾規(guī)則需要人工配置。
近年來,機(jī)器學(xué)習(xí)算法已被廣泛應(yīng)用于各行各業(yè)。DDoS攻擊流量的過濾均屬于標(biāo)準(zhǔn)的二分類問題,滿足其使用條件。但問題在于:有監(jiān)督的機(jī)器學(xué)習(xí)算法需要在一定量的已知標(biāo)簽(即正確的分類結(jié)果)的數(shù)據(jù)上進(jìn)行學(xué)習(xí),之后才能進(jìn)行分類。然而現(xiàn)實(shí)的流量數(shù)據(jù)不存在標(biāo)簽,無法直接訓(xùn)練分類器。
關(guān)于這一問題有兩種易得的解決思路:
其一是在事先準(zhǔn)備好的人工標(biāo)注的數(shù)據(jù)集上訓(xùn)練分類器,進(jìn)行持久化部署。這種方法相較于人工設(shè)計(jì)過濾規(guī)則,可以提取更深層的信息,對(duì)已知攻擊卓有成效,但靈活性欠佳。據(jù)綠盟全球威脅狩獵系統(tǒng)監(jiān)測(cè),約七成DDoS 攻擊的持續(xù)時(shí)間不超過半個(gè)小時(shí)。在如此短的時(shí)間內(nèi),基本不可能通過有限的人力完成數(shù)據(jù)的標(biāo)注,更遑論過濾規(guī)則的更新了。所以這種方式無法有效應(yīng)對(duì)未知攻擊。
其二是使用無監(jiān)督學(xué)習(xí)算法,如聚類算法。這類算法無需標(biāo)簽即可工作,可以實(shí)現(xiàn)“自適應(yīng)過濾”,但精度往往有所欠缺。并且聚類算法難以處理正負(fù)樣本比例懸殊的數(shù)據(jù),可能無法應(yīng)對(duì)低速率攻擊。此外,聚類算法還只能劃分?jǐn)?shù)據(jù),而不能指明正樣本與負(fù)樣本,還需額外的處理工作。
綜上所述,可見以上兩種思路均未很好地平衡算法的準(zhǔn)確率與靈活性,無法直接投入使用。
為了兼顧流量過濾算法的精度和對(duì)未知攻擊的檢出率,本文提出了一種新的流量過濾算法設(shè)計(jì)思路。算法主要包括兩個(gè)部分:特征提取模塊et和分類器ct。該算法將實(shí)時(shí)流量迭代訓(xùn)練集,實(shí)時(shí)訓(xùn)練分類器,動(dòng)態(tài)更新過濾規(guī)則以應(yīng)對(duì)未知攻擊,同時(shí)保留了分類模型精度較高的優(yōu)點(diǎn)。流程如圖1 所示。
圖1 算法流程
在時(shí)間周期t 內(nèi),首先將本周期的流量Ft輸入特征提取模塊et,得到特征數(shù)組Xt。隨后將Xt輸入前一周期訓(xùn)練好的分類器ct-1,得到標(biāo)簽Yt。再將Xt與Yt拼接,與上一周期的訓(xùn)練集一并組成新的訓(xùn)練集Tt,訓(xùn)練分類器ct;最后從訓(xùn)練完畢的分類器ct中導(dǎo)出包過濾規(guī)則ft以備下一周期使用。與此同時(shí),算法使用上一個(gè)周期的分類器ct-1生成過濾規(guī)則,傳遞給包過濾設(shè)備,拋棄異常數(shù)據(jù)包,保留合法流量Ft′。
該算法在面臨已知攻擊時(shí),分類器可以逐步純化數(shù)據(jù)集,進(jìn)而提高預(yù)測(cè)得到的標(biāo)簽準(zhǔn)確率;遭遇未知攻擊時(shí),攻擊樣本會(huì)逐步進(jìn)入訓(xùn)練集,分類器可以在極為有限的時(shí)間內(nèi)習(xí)得新攻擊的特征,做出針對(duì)性的相應(yīng),具有較好的魯棒性。
本文使用了約750 萬條真實(shí)TCP 樣本進(jìn)行了仿真實(shí)驗(yàn),每條樣本有80 個(gè)可用特征,包含數(shù)據(jù)包特征和數(shù)據(jù)流特征。其中非數(shù)值型的特征被編碼并轉(zhuǎn)換為整型,并進(jìn)行歸一化(Min-Max Scaling)處理。
本文使用F2 分?jǐn)?shù)作為模型精度的評(píng)價(jià)指標(biāo)。根據(jù)二分類問題混淆矩陣,有:
Fβ 分?jǐn)?shù)可視為精確率和召回率的調(diào)和平均。精確率(precision)反映了模型對(duì)正常流量的檢測(cè)性能,精確率越高,誤報(bào)(錯(cuò)誤攔截正常流量)就越少;而召回率(recall)體現(xiàn)了模型對(duì)攻擊流量的檢測(cè)性能,召回率越高,漏報(bào)(錯(cuò)誤放行攻擊流量)就越少。
F2 分?jǐn)?shù)賦予了召回率兩倍于精確率的權(quán)重,符合面臨DDoS 攻擊時(shí)保護(hù)系統(tǒng)優(yōu)先于保護(hù)業(yè)務(wù)的思想。
為了選取分類器,本文對(duì)八個(gè)常見分類模型進(jìn)行了考察:樸素貝葉斯(NB),邏輯斯蒂回歸(LR),KNN,決策樹(DT),隨機(jī)森林(RF),XGboost(XGBT),支持向量機(jī)(SVM),多層感知機(jī)(MLP)。
兩個(gè)聚類模型:K-Means++,Agglomerative 被引入,作為對(duì)照。
(1)訓(xùn)練集的規(guī)模
將待選模型在不同規(guī)模的DDoS 數(shù)據(jù)集上分別進(jìn)行了精度測(cè)試,結(jié)果如圖2、圖3 所示。
圖2 分類模型精度-訓(xùn)練集規(guī)模曲線
圖3 聚類模型精度-訓(xùn)練集規(guī)模曲線
依圖可見:除樸素貝葉斯外,其余分類器對(duì)訓(xùn)練集的規(guī)模敏感,其性能與樣本量大致呈正相關(guān)。大部分模型精度的增長(zhǎng)拐點(diǎn)在102 與103 之間,而深度學(xué)習(xí)所需的數(shù)據(jù)量極為龐大,即便最簡(jiǎn)單的多層感知機(jī)也需萬條數(shù)據(jù)的支撐才能追平其它算法。聚類算法的性能與數(shù)據(jù)規(guī)模間沒有明確的相關(guān)性,但其精度與分類算法存在較大差距。
根據(jù)拐點(diǎn)效應(yīng),算法中訓(xùn)練集的規(guī)模應(yīng)設(shè)置為1000。
(2)模型的訓(xùn)練速度與推理速度
對(duì)分類模型的訓(xùn)練速度與推理速度進(jìn)行了測(cè)試。訓(xùn)練集共103 條樣本,驗(yàn)證集共106 條樣本,所有模型均使用常用的python 庫實(shí)現(xiàn),使用的CPU 為i7-10700K。如表1 所示:KNN與SVM 訓(xùn)練極快,但推理速度落后其他模型兩個(gè)數(shù)量級(jí),需慎重使用。
表1 模型的訓(xùn)練與推理速度
(3)模型對(duì)標(biāo)簽噪聲的容忍能力
算法中,因?yàn)榉诸惼鞯恼_率不為100%,所以由前一個(gè)周期的分類器所生成的標(biāo)簽必然存在錯(cuò)誤。這些標(biāo)注錯(cuò)誤的數(shù)據(jù)會(huì)與正常數(shù)據(jù)相拮抗,影響正常樣本的表達(dá),降低模型的精度。本文將一個(gè)基準(zhǔn)數(shù)據(jù)集中的部分樣本隨機(jī)反轉(zhuǎn)標(biāo)簽以模擬這種情況,隨后考察了部分原始精度較高的算法在有標(biāo)簽噪聲的數(shù)據(jù)上精度損失。其中,正確標(biāo)簽的占比記為α。如圖4所示,模型中XGBoost的綜合表現(xiàn)最好遠(yuǎn)優(yōu)于其他算法。
圖4 部分模型在有標(biāo)簽噪聲的數(shù)據(jù)上的精度變化
綜上,認(rèn)定XGBoost 為分類器的最優(yōu)解。其基礎(chǔ)準(zhǔn)確率極高,訓(xùn)練與推理較快,能夠支撐算法的精度與靈活性。作為集成學(xué)習(xí)算法,其能有效應(yīng)對(duì)標(biāo)簽噪聲,在處理新的流量特征時(shí)可以更快完成收斂。
本文采用XGBoost 作為分類器。首先自數(shù)據(jù)集中隨機(jī)取出10 組樣本模擬10 個(gè)相鄰時(shí)間周期的流量;隨后隨機(jī)初始化第一個(gè)標(biāo)簽數(shù)組,模擬算法應(yīng)對(duì)未知攻擊的情形;再按順序依次生成預(yù)測(cè)標(biāo)簽訓(xùn)練分類器,更新訓(xùn)練集;最后根據(jù)數(shù)據(jù)集中的真實(shí)標(biāo)簽進(jìn)行測(cè)試,記錄每一個(gè)周期的分類器的F2 分?jǐn)?shù)。結(jié)果如圖5 所示。
圖5 算法F2 分?jǐn)?shù)的時(shí)間序列曲線
觀察圖5,可知模型既具備較高的精度,又能夠及時(shí)處理未知攻擊,能夠有效進(jìn)行流量過濾:模型在第三個(gè)周期就完成了對(duì)未知攻擊建模,隨后的數(shù)個(gè)周期內(nèi),研判數(shù)據(jù)包的準(zhǔn)確率均維持在0.95 以上。
DDoS 攻擊依然是全球范圍內(nèi)最具威脅的攻擊手段之一。對(duì)DDoS 攻擊的防御和控制目前尚缺乏通用、有效的措施。本文對(duì)機(jī)器學(xué)習(xí)在防御DDoS 攻擊的應(yīng)用進(jìn)行了介紹與探索,提出了一種兼具精度與靈活性的新的流量過濾算法。希望為新的流量過濾算法的設(shè)計(jì)提供幫助。