李穎之,李 曼,董 平,周華春
(北京交通大學 電子信息工程學院,北京 100044)
分布式拒絕服務(Distributed Denial of Service,DDoS)攻擊可操作性強、攻擊門檻低,給網(wǎng)絡(luò)服務商帶來客戶流失、商業(yè)損失等重大風險[1]。與傳統(tǒng)基于低層協(xié)議的DDoS 攻擊相比,應用層DDoS 攻擊利用高層協(xié)議實現(xiàn),模擬正常用戶的訪問行為,具有難以檢測的標志性特征[2]。目前較為流行的低層檢測系統(tǒng)難以判斷用戶請求,導致檢測誤報率高等問題。
現(xiàn)有DDoS 攻擊檢測方法采用傳統(tǒng)的基于統(tǒng)計的或是基于機器學習的檢測方法,只區(qū)分異常流量和正常流量(Benign),未進一步檢測流量中攻擊的具體類型,且檢測準確率低。為解決現(xiàn)有技術(shù)存在的問題,本文提出一種可檢測多類型應用層DDoS 攻擊的檢測方法,檢測多類型應用層DDoS 攻擊有助于后續(xù)針對性的防御措施。該方法采用基于集成學習的多分類檢測模型,能夠檢測多類型的應用層DDoS 攻擊,包括挑戰(zhàn)黑洞(Challenge Collapsar,CC)、HTTP Flood、HTTP Post 及HTTP Get 攻擊共四種應用層DDoS 攻擊。
應用層DDoS 攻擊中不同的攻擊類型有不同的特點,時間特征、數(shù)據(jù)包特征等均會因為攻擊機制的不同而有差異,對其采用同一種檢測手段的誤判率較高,具備檢測惡意流量具體類型的能力可以提高檢測性能且可以更精準地匹配防御類型。
本文的主要工作如下:
1)建立多類型應用層DDoS 攻擊數(shù)據(jù)集。實驗模擬5G多場景下海量正常流量、不同類型的應用層DDoS 攻擊流量,提供符合現(xiàn)實流量規(guī)律的真實數(shù)據(jù)集,解決當前最新數(shù)據(jù)集的不公開性且未細化攻擊類型的問題。
2)提出一種應用層DDoS 攻擊特征分析方法,結(jié)合攻擊原理、特征選擇以及統(tǒng)計分析的方法篩選不同類型應用層DDoS 攻擊的有效特征信息的方法,生成表征CC、HTTP Flood、HTTP Post 及HTTP Get 攻擊的47 維特征信息,降低模型擬合程度,提高模型準確率的同時減少訓練時間。
3)提出一種結(jié)合離線訓練和在線檢測的基于集成學習的應用層DDoS 攻擊檢測方法。離線訓練階段提出集成學習方法提高模型的泛化性和準確率,并對流量進行細粒度感知,指示應用層DDoS 攻擊具體種類;在線檢測階段提出時間窗口概念并尋找最佳時間窗口周期,驗證模型在最佳時間窗口下的在線檢測性能。離線訓練和在線檢測相互隔離,可分別獨立調(diào)整并節(jié)省在線過程的時間開銷。實驗結(jié)果表明,本文提出的檢測方法可以有效檢測CC、HTTP Flood、HTTP Post及HTTP Get 攻擊共四種應用層DDoS 攻擊,在最優(yōu)時間窗口下惡意流量檢測率達98%。
目前,應用層DDoS 攻擊類型多且復雜,國內(nèi)外對應用層DDoS 攻擊的檢測方法研究主要基于統(tǒng)計、基于機器學習以及基于深度學習的方法[3]。
基于統(tǒng)計的方法中,Erhan 等[4]利用流量特征統(tǒng)計變化的優(yōu)勢,根據(jù)統(tǒng)計信號處理方法,提出了兩種簡單而有效的基于網(wǎng)絡(luò)的DDoS 攻擊檢測方法。Wang 等[5]提出名為SkyShield 的模型,采用三個草圖和兩個布隆過濾器,利用指數(shù)加權(quán)移動平均值(Exponentially Weighted Moving-Average,EWMA)算法計算來分析,緩解階段用白名單和黑名單進行檢查,根據(jù)異常桶檢查剩余的請求。Tang 等[6]提出檢測會話初始協(xié)議(Session Initiation Protocol,SIP)泛洪攻擊的方法,設(shè)計三維草圖,將草圖中的數(shù)據(jù)分布之間的海林格距離與EWMA 算法計算的動態(tài)閾值進行比較,超過閾值判為SIP攻擊。
基于機器學習的方法中[7],She 等[8]引入了一種基于聚類的HTTP 泛洪攻擊檢測方法,使用k-means 聚類方法,將這些普通用戶會話進行集群,以構(gòu)建普通用戶行為模型,計算普通用戶行為與攻擊者的輪廓分數(shù)來判別流量類型。Johnson 等[9]利用多層感知器(Multi-Layer Perceptron,MLP)分類算法和遺傳算法作為學習算法來檢測DDoS 攻擊,提取特征作為分類算法的輸入,用于區(qū)分攻擊與正常配置文件。Adi 等[10]提出一種檢測隱蔽應用層DDoS 攻擊的方法,隱蔽應用層DDoS 攻擊直接攻擊HTTP/2 Web 服務器并降低目前機器學習分析的性能,結(jié)合特征選擇技術(shù)和監(jiān)督學習方法進行檢測,誤報率可低至0.024%。
基于深度學習的方法[11]通過自主訓練學習代替根據(jù)經(jīng)驗挑選特征的步驟,這一特點使得深度學習成為一種理想的自適應流量分類方法?;谏疃葘W習的方法中,Lotfollahi等[12]引入深度學習方法Deep packet,將數(shù)據(jù)包的原始字節(jié)作為特征輸入,構(gòu)建一維卷積神經(jīng)網(wǎng)絡(luò)(One Dimensional Convolutional Neural Network,1DCNN)和稀疏自動編碼機(Sparse AutoEncoder,SAE)模型進行流量分類,準確率可達98%。Wang 等[13]將數(shù)據(jù)按照流進行劃分,提取流字節(jié)作為輸入特征,提取特征作為分類算法的輸入,用于區(qū)分攻擊與正常配置文件,分別比較一維卷積神經(jīng)網(wǎng)絡(luò)和二維卷積神經(jīng)網(wǎng)絡(luò)的預測效果,均可達到90%左右的準確率。
上述文獻中,利用統(tǒng)計方法[4-6]檢測應用層DDoS 攻擊的方法中設(shè)定的閾值、規(guī)則需要經(jīng)驗豐富的專家手動設(shè)定,自適應性差。機器學習的檢測方法[8-10]適用于連續(xù)性的數(shù)值表現(xiàn),比如其中較為經(jīng)典的極限梯度提升(eXtreme Gradient Boosting,XGBoost)[14]分類模型是基于樹的模型找最優(yōu)分割點,對于連續(xù)型數(shù)值特征分割點易于實現(xiàn),且分類效果會更好;但機器學習表現(xiàn)得泛化性差,在數(shù)據(jù)集不平衡等情況時有較高誤報率。深度學習的檢測方法[12-13]將高緯度的稀疏特征映射為低緯度的稠密特征,可以更有效表現(xiàn)離散型特征;因此適合于高緯度的離散型特征,不適用于包含連續(xù)型數(shù)值特征的數(shù)據(jù)集。
綜上所述,現(xiàn)有的應用層DDoS 攻擊檢測方法較多,但仍存在檢測時延長、模型泛化性差等諸多問題。此外,當前國內(nèi)外針對DDoS 攻擊的研究基本是將應用層作為一類攻擊進行研究,只能粗略判斷攻擊類型,無法檢測具體的多類型應用層DDoS 攻擊。
本文提出基于集成學習的多類型應用層DDoS 攻擊檢測方法可有效解決泛化性問題,提高檢測準確率;同時檢測多類型應用層DDoS 攻擊,驗證其在線檢測的性能較好,具有很好的實用性。
本文提出基于集成學習的應用層DDoS 攻擊檢測系統(tǒng)框圖如圖1 所示,包含數(shù)據(jù)集生成、數(shù)據(jù)集預處理、離線訓練以及在線檢測四個模塊。
圖1 檢測系統(tǒng)框圖Fig.1 Block diagram of detection system
1)數(shù)據(jù)集生成模塊提供了一種生成多類型應用層DDoS攻擊流量數(shù)據(jù)集的方法,模擬實驗流量并根據(jù)五元組劃分為流級流量,利用特征提取工具生成原始特征信息,根據(jù)IP 標記標簽得到原始數(shù)據(jù)集。
2)數(shù)據(jù)集預處理模塊篩選流級特征并提取適用于所有應用層DDoS 攻擊流量的有效特征信息,生成已標記的有效應用層DDoS 攻擊數(shù)據(jù)集。
3)離線訓練模塊將已標記的有效數(shù)據(jù)集按比例劃分為訓練數(shù)據(jù)集和驗證數(shù)據(jù)集,輸入離線訓練數(shù)據(jù)集中已篩選的特征到集成后的訓練模型中,該模型對輸入特征進行訓練和分類,利用驗證數(shù)據(jù)集對多類型應用層DDoS 攻擊檢測模型調(diào)參并驗證輸出結(jié)果。
4)在線檢測模塊通過在線部署的檢測模型判斷待檢測流量的具體流量類型,在線采集流量數(shù)據(jù),將流經(jīng)的網(wǎng)絡(luò)流量生成可夠后續(xù)檢測的在線檢測數(shù)據(jù)集。流量入口處部署訓練后的集成模型作為在線分類器,輸入在線檢測數(shù)據(jù)集,判斷流經(jīng)流量的類型。
應用層DDoS 攻擊檢測系統(tǒng)的各個模塊涉及各種算法,各算法構(gòu)成的整體檢測算法具有識別具體應用層DDoS 攻擊種類以及正常流量的功能,整體檢測算法的流程如圖2所示。
圖2 整體檢測算法流程Fig.2 Flow chart of overall detection algorithm
數(shù)據(jù)集生成的算法描述如下:
算法1 數(shù)據(jù)集生成算法。
由于最新數(shù)據(jù)集的不公開性且現(xiàn)有數(shù)據(jù)集無法真實反映流量環(huán)境的問題[15],數(shù)據(jù)集生成模塊利用工具或腳本模擬最新應用層DDoS 攻擊、正常流量,并在網(wǎng)絡(luò)入口處收集指定時間的實驗流量,自生成符合現(xiàn)實流量規(guī)律的數(shù)據(jù)集,提供后續(xù)訓練的離線數(shù)據(jù)集。
應用層DDoS 攻擊中不同的攻擊類型有不同的特點,對其采用同一種檢測手段的誤判率較高,且判斷具體的攻擊種類可以更精準地匹配防御類型;因此本文將應用層DDoS 攻擊進一步細化,針對應用層DDoS 攻擊中四種攻擊效果較好的主流攻擊展開研究:CC、HTTP Flood、HTTP Post 及HTTP Get 攻擊[3]。
CC 攻擊利用HTTP 協(xié)議對服務器中的網(wǎng)頁發(fā)送高頻的完成HTTP 請求導致服務器崩潰,由于正常用戶訪問頁面需要有瀏覽點擊等行為,導致CC 攻擊的時間特征比正常用戶短,且攻擊發(fā)起流的特征是有一定規(guī)律的;HTTP Flood 攻擊通過模擬多個源攻擊機發(fā)送大量不完整的HTTP 數(shù)據(jù)包來淹沒服務器的資源,模擬長時間的連接請求,導致HTTP Flood 攻擊的時間特征比正常用戶久,且攻擊發(fā)起流的特征是有一定規(guī)律的;HTTP Post 和HTTP Get 攻擊也是進行長時間連接的HTTP 泛洪,攻擊行為導致的時間特征相對較長,但是憑借隨機產(chǎn)生的消息頭信息,隨機性比正常值大。
此外,為了驗證模型對其他DDoS 攻擊也具有分辨能力,數(shù)據(jù)集中增加Other 攻擊,包括反射放大DDoS 攻擊、網(wǎng)絡(luò)層DDoS 攻擊以及僵尸DDoS 攻擊等常見的DDoS 攻擊類型。
利用工具或腳本模擬上述多種應用層DDoS 攻擊流量。實際情況下應用層數(shù)據(jù)易出現(xiàn)海量的數(shù)據(jù)特征,導致海量正常流量與應用層DDoS 攻擊混淆的問題,因此在流量模擬端模擬海量的正常流量,獲得真實環(huán)境下的流量分布情況,以訓練可區(qū)分正常流量和應用層DDoS 攻擊的模型。
網(wǎng)絡(luò)流定義為具有一個或多個相同屬性的數(shù)據(jù)包流[3],本文將具有相同五元組信息的數(shù)據(jù)定義為一條數(shù)據(jù)流,其中五元組信息包括源IP 地址、目的IP 地址、源端口號、目的端口號和通信協(xié)議。通過流特征提取工具CICFlowMeter 工具[16]提取實驗流量的多維流特征信息,得到包含多類型應用層DDoS 攻擊87 維原始特征信息的數(shù)據(jù)集。
特征的數(shù)量和有效性對模型的檢測精度影響較大,有效特征的預處理和篩選需要經(jīng)過繁雜的運算和判決[17]。本文提出的應用層DDoS攻擊特征分析結(jié)合特征工程和統(tǒng)計圖的方法對每一種應用層DDoS攻擊特征集進行分析和篩選,得到針對每一種應用層DDoS攻擊對應的有效特征信息;進一步地,合并每一類型應用層DDoS攻擊的有效特征信息,匯總為多類型應用層DDoS攻擊有效特征信息。將有效特征信息輸入模型,在保證高準確率的同時降低擬合程度、減少訓練時間。
離線訓練模塊主要負責生成可高準確率檢測DDoS 攻擊的模型,將數(shù)據(jù)集預處理模塊獲取的應用層DDoS 攻擊的有效特征信息作為模型輸入,訓練得到最優(yōu)模型。首先將已獲取的離線有效數(shù)據(jù)集按比例劃分為訓練數(shù)據(jù)集和驗證數(shù)據(jù)集。輸入離線訓練數(shù)據(jù)集中已篩選的特征到集成后的多類型應用層DDoS 攻擊檢測模型中,該模型對輸入特征信息進行訓練和分類,判斷不同類型應用層DDoS 攻擊流量和正常流量,利用離線驗證數(shù)據(jù)集對多類型應用層DDoS 攻擊檢測模型的輸出結(jié)果驗證。
目前很多改進的、表現(xiàn)良好的機器學習模型均是基分類器的集成,較為常用的集成學習算法有Bagging、Boosting、Stacking[14]等。
Bagging 算法采用自采樣法對數(shù)據(jù)集進行n次隨機重采樣,得到n個訓練樣本集,基于訓練樣本集訓得到n個分類器,最后利用投票等規(guī)則將分類器組合。Bagging 集成算法的效果很大程度受基分類器效果以及數(shù)據(jù)類別是否平衡的影響。
Boosting 的基本思想是糾正基分類器所犯的錯誤,串行訓練一些列分類器,通過對錯誤分類的樣本賦予更高的權(quán)重來更新分類器。具體思路可分為以下幾個步驟:首先,使用相同權(quán)重初始化所有樣本,之后的每次迭代中降低正確分類樣本的權(quán)重,增加錯誤分類樣本的權(quán)重,最終得到根據(jù)自身表現(xiàn)加權(quán)的幾個基分類器的線性組合。由于Boosting 傾向于錯誤概率高的樣本,若樣本存在離群的錯誤樣本,Boosting 的效果易受影響。
Stacking 算法分為兩層的訓練,首先利用k-折交叉驗證法訓練第一層的各基分類器,并將各個分類器的預測結(jié)果作為新特征用于訓練第二層模型;第二層的模型訓練并預測得到最終的結(jié)果。Stacking 集成模型應用的領(lǐng)域很廣,Pavlyshenko 等[18]提出將Stacking 集成模型應用于時間序列和邏輯回歸,集成多個機器學習模型預測高度不平衡數(shù)據(jù),可將預測精準率明顯提升。
Stacking算法集成多個傳統(tǒng)學習算法作為基分類器,基分類器的效果以及樣本的不平衡影響相對較小,具有性能優(yōu)于單個最優(yōu)分類器、泛化性強等優(yōu)點,相較于Bagging和Boosting算法的穩(wěn)定性更高。因此本文采用基于Stacking 集成學習的多類型應用層DDoS攻擊檢測方法,訓練可同時檢測多類型應用層DDoS攻擊的離線模型,得到檢測準確率高且泛化性好的模型,可在后續(xù)在線檢測獲得較好的檢測性能。
基分類器本身對模型的檢測精準度影響較大,比較不同基分類器的檢測性能進行模型選擇。在輸入相同應用層DDoS 攻擊數(shù)據(jù)集以及特征數(shù)量的情況下,利用指標召回率(Recall)比較隨機森林(Random Forest,RF)[19]、XGBoost[20]、極端隨機樹(Extremely randomized Tree,ET)、輕量梯度提升器(Light Gradient Boosting Machine,LightGBM)、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[21]以及長短期記憶(Long Short-Term Memory,LSTM)人工神經(jīng)網(wǎng)絡(luò)模型的檢測性 能,對CC、HTTPFlood、HTTPPost、HttpGet、正常流 量(Benign)以及其他攻擊流量(Other)的召回率對比如表1所示。
表1 基分類器的召回率對比Tab.1 Recall comparison of base classifiers
采用機器學習模型(RF、XGBoost、ET、LightGBM)效果明顯優(yōu)于采用深度學習模型(CNN、LSTM)。其中,對于樣本數(shù)量較少的HTTP Flood、HTTP Post 和HTTP Get 攻擊,CNN 和LSTM 表現(xiàn)較差;考慮是深度學習模型容易將注意力集中在樣本數(shù)較多的類,樣本數(shù)多的CC、Benign、Other 攻擊訓練時易產(chǎn)生過擬合,樣本數(shù)少的HTTP Flood、HTTP Post 和HTTP Get 攻擊易產(chǎn)生欠擬合。過擬合即模型只對本訓練數(shù)據(jù)集檢測性能良好,但是該模型去預測新的數(shù)據(jù)集時性能較差,這是由于訓練過程過度追求檢測性能導致模型對當前數(shù)據(jù)集出現(xiàn)過的攻擊數(shù)據(jù)過度依賴,無法判斷新的攻擊數(shù)據(jù)。而機器學習中的XGBoost 和LightGBM 模型在損失函數(shù)上加了正則項控制了模型的復雜度,一定程度減輕過擬合現(xiàn)象,檢測效果相對較好。
基于Stacking 的集成模型如圖3 所示,Stacking 模型訓練主要分為兩個層次:第一層將檢測數(shù)據(jù)按比例分為訓練集和測試集,輸入訓練集后分別對XGBoost 模型和LightGBM 模型進行訓練,訓練后分別利用模型預測訓練集和測試集的標簽。將兩個模型的訓練集的預測標簽作為新的特征,合并新的特征與訓練集的真實標簽為新的數(shù)據(jù)集;將新的數(shù)據(jù)集按比例分為訓練集和測試集后,再次輸入第二層的邏輯回歸模型中進行訓練,重復第一層的訓練過程得到最終的訓練模型,根據(jù)第二層模型對測試集的預測值進行預測得最終預測結(jié)果。
圖3 基于Stacking的集成模型Fig.3 Stacking-based integrated model
基于訓練好的模型檢測實時應用層DDoS 攻擊,在線檢測模塊通過在線部署的檢測模型判斷待檢測流量,利用Shell 腳本實現(xiàn)在線流量數(shù)據(jù)采集、在線數(shù)據(jù)集生成、在線檢測的自動化過程。
在線流量數(shù)據(jù)采集階段,利用實時流量抓取工具,在網(wǎng)絡(luò)流量入口處間隔指定時間捕獲流經(jīng)流量。
在線數(shù)據(jù)集生成階段,在線讀取生成的流量文件,采用流特征提取工具CICFlowMeter 將指定時間間隔在線保存的流量文件轉(zhuǎn)為包含87 維特征信息的數(shù)據(jù)集;根據(jù)數(shù)據(jù)預處理模塊的特征工程方法提取數(shù)據(jù)集的47 維有效特征,生成在線檢測數(shù)據(jù)集。
在線檢測階段,部署在網(wǎng)絡(luò)流量入口處的檢測模型作為在線分類器,判斷輸入流量的類型,生成模型預測標簽。通過流量真實標簽以及模型預測標簽,計算準確率、誤報率、召回率以及惡意流量檢測率等指標,驗證模型在線檢測性能。
實驗基于Vmware vSphere 虛擬平臺模擬多類型的應用層DDoS 攻擊、其他類型DDoS 攻擊以及多場景下的正常流量,軟件環(huán)境為 Ubuntu18.04 操作系統(tǒng)。利用流特征提取工具CICFlowMeter 提取特征信息并處理后生成實驗所需數(shù)據(jù)集,分別進行離線模型訓練實驗和在線檢測驗證實驗。
實驗通過準確率A(Accuracy)、精準率P(Precision)、召回率R(Recall)、F1 分數(shù)(F1)和混淆矩陣(Confusion matrix)這5 個評價指標來評估離線訓練模型和在線檢測階段的分類效果。其中:準確率表示模型分類正確的樣本數(shù)占總樣本數(shù)比例;精準率表示模型預測正確的攻擊樣本數(shù)占所有預測為攻擊的樣本數(shù)的比例;召回率表示模型判斷正確的應用層DDoS 攻擊樣本數(shù)占所有攻擊樣本數(shù)的比例;F1 分數(shù)表示精準率和召回率的調(diào)和平均值,能夠更準確地反映模型性能。當上述指標均表現(xiàn)較好時,可說明檢測模型分類效果良好。
其中:TP(True Positive)表示實際類型為應用層DDoS 攻擊樣本中被模型分類正確的樣本數(shù);TN(True Negative)表示實際類型為非應用層攻擊樣本中被模型分類正確的樣本數(shù);FP(False Positive)表示實際類型為非應用層攻擊樣本中被模型錯誤分類為應用層攻擊類型的樣本數(shù);FN(False Negative)表示實際類型為應用層攻擊樣本被模型錯誤分類為非應用層DDoS 攻擊的樣本數(shù)。
混淆矩陣以矩陣形式匯總了樣本數(shù)據(jù)的真實情況與分類模型的預測結(jié)果。以常見的二元分類為例,表2 展示了二元混淆矩陣的樣式,其中0 代表判定為非攻擊類別,1 代表判斷定為攻擊類別。
表2 二分類混淆矩陣樣例Tab.2 Example of confusion matrix for binary classification
對于多分類模型,精準率、召回率、F1 分數(shù)僅是針對每一類別的性能指標,為整體描述檢測性能,目前常見的有微平均和宏平均兩種指標。宏平均是指在計算均值時使每個類別具有相同的權(quán)重,最后結(jié)果是每個類別的指標的算術(shù)平均值;微平均是指計算多分類指標時賦予所有類別的每個樣本相同的權(quán)重,將所有樣本合在一起計算各個指標。根據(jù)上述定義可知在數(shù)據(jù)集樣本不均衡時,微平均更注重樣本量多的類別,宏平均更注重樣本量少的類別,本文構(gòu)建的模型在樣本數(shù)量大的類別上表現(xiàn)較好,更關(guān)注于樣本量少的類別的檢測情況,因此使用宏平均作為整體衡量指標。
宏平均精準率(macro-P)表示對每個類別精準率求平均;宏平均召回率(macro-R)表示對每個類別召回率求平均;宏平均F1 分數(shù)(macro-F1)表示對每個類別F1求平均。計算公式如下:
惡意流量檢測率驗證在線檢測的有效性,計算公式為:
其中:Ti是在線檢測后網(wǎng)絡(luò)環(huán)境中攻擊流量類別i被檢測出的流量數(shù)目;Ai是攻擊流量類別i的總流量數(shù)目;n表示攻擊流量類別的總流量數(shù)目。當惡意流量檢測率較高時,可說明在線檢測階段可以有效檢測惡意流量。
在網(wǎng)絡(luò)入口路由器處收集一定時間的實驗流量,實驗網(wǎng)絡(luò)拓撲圖如圖4 所示。
圖4 網(wǎng)絡(luò)拓撲圖Fig.4 Network topology diagram
流量發(fā)起端主要由3 個域構(gòu)成,其中應用層DDoS 攻擊域中4 臺虛擬主機利用攻擊工具分別發(fā)起4 種應用層DDoS攻擊:CC 攻擊是由Webbench 工具模擬多用戶發(fā)起分布式的泛洪請求,HTTP Flood 攻擊是由Hulk 攻擊工具模擬分布式攻擊流量,HTTP Post 攻擊和HTTP Get 攻擊這兩類攻擊是通過設(shè)定Goleden-Eye 工具的參數(shù)發(fā)送分布式模擬攻擊流量。其他DDoS 攻擊域中6 臺虛擬機根據(jù)攻擊工具或腳本發(fā)起僵尸網(wǎng)絡(luò)DDoS 攻擊、網(wǎng)絡(luò)層攻擊等。上述攻擊域中的每一種攻擊按照具體時間點單獨或者組合的形式發(fā)起。
依據(jù)3GPP 提出的5G 典型場景中的流量模型,在5G 移動通信網(wǎng)絡(luò)原型系統(tǒng)中通過編寫發(fā)包腳本模擬瀏覽器、視頻流、游戲等多場景下的流量統(tǒng)計規(guī)律,實現(xiàn)海量正常用戶流量模擬[22],不間斷發(fā)起正常流量。
正常域中4 臺虛擬機流量接收端主要由受害者域和正常域組成:受害者域接收來自應用層DDoS 攻擊域和其他DDoS 攻擊域的攻擊流量,正常域接收來自正常主機的通信流量。匯總攻擊流量以及正常流量發(fā)起的時間節(jié)點以及流量發(fā)起的源目IP 地址,如表3 所示。收集流量時間共計25 min,根據(jù)時間節(jié)點分別在4 臺虛擬機上模擬應用層DDoS攻擊流量,在6 臺虛擬機上模擬其他DDoS 攻擊,在1 臺虛擬機上模擬正常流量。
表3 流量時間節(jié)點匯總Tab.3 Flow time node summary
在骨干網(wǎng)的流量入口路由器處,利用Linux 系統(tǒng)抓包軟件Tcpdump,抓取經(jīng)過指定網(wǎng)卡的一定時間內(nèi)待檢測的網(wǎng)絡(luò)流量,生成對應的抓包Pcap 文件,得到包含多種攻擊流量和正常流量的原始流量集。流特征提取工具CICFlowMeter 轉(zhuǎn)化Pcap 文件為可供后期訓練的csv 格式的數(shù)據(jù)集。對該數(shù)據(jù)集進行數(shù)據(jù)統(tǒng)計后,其數(shù)據(jù)分布如表4 所示,標簽共計6種,將訓練集的流量類型編號為[0,5]的范圍。
表4 不同流量類型所占比例表Tab.4 Percentages of different traffic types
利用特征工程中RF、XGBoost、ET這3種模型[14]對生成的87 維原始特征信息進行特征重要性排序,篩選兩種及兩種以上模型中均排名靠前的特征信息。其次,結(jié)合多種攻擊的時序圖和統(tǒng)計圖的方法進行分析。結(jié)合上述兩個步驟篩選應用層DDoS 攻擊的特征信息,提取適用于所有應用層DDoS 攻擊的有效特征信息,生成已標記有效數(shù)據(jù)集。
以HTTP Get 攻擊為例,圖5 展示HTTP Get 攻擊時序圖。攻擊者在TCP 三次握手后發(fā)出大量請求,較長時間占用后才有對應HTTP 響應,因此流持續(xù)時間、流空閑時間較長等可作為有效特征信息。圖6 展示了HTTP Get 攻擊流持續(xù)時間的分布情況。由圖6 可知流持續(xù)時間主要分布在5 s 和30 s。根據(jù)以上步驟對每一類型應用層DDoS 攻擊進一步篩選特征。
圖5 HTTP Get攻擊時序圖Fig.5 Sequence diagram of HTTP Get attack
圖6 HTTP Get攻擊流持續(xù)時間分布直方圖Fig.6 Histogram of HTTP Get attack flow duration distribution
將多種攻擊的有效特征信息進行匯總,最終得到如圖7所示的對于多種應用層DDoS 攻擊均有效的特征信息。由圖7可知,提取的特征信息共47維,按照其特性分為五元組信息、時間特征、流報頭特征、有效載荷特征以及標志位特征。
圖7 有效特征信息圖Fig.7 Effective feature information map
為驗證特征分析對模型性能提升和訓練時間縮短的有效性,以精確率、召回率、F1 分數(shù)、訓練時間為指標,對比特征信息篩選前后的模型表現(xiàn),如表5 所示。從表5 可以看出,輸入的流特征數(shù)量對模型的檢測結(jié)果存在重要的影響。當采用篩選后的47 維有效特征作為Stacking 集成模型的輸入特征時,對于正常流量、CC、HTTP Flood、Other 攻擊的識別精確率、召回率、F1 分數(shù)這3 個指標均可達0.95 以上;對于易混淆的HTTP Post 和HTTP Get 攻擊也在0.90 左右;整體性能較優(yōu)。當采用87 維原始特征信息作為Stacking 集成模型的輸入特征時,模型在檢測HTTP Flood、HTTP Post、HTTP Get攻擊時指標均有所下降,因為過多的特征會導致過擬合,檢測性能反而下降。
此外,訓練和檢測時間也是衡量特征篩選方法效果的重要指標。比較篩選后特征與原始特征的訓練和檢測時間,如表5 所示。
表5 不同特征訓練模型的指標對比Tab.5 Index comparison of different feature training models
篩選后特征訓練模型比原始特征離線訓練模型所需時間減少1 018.26 s,在線檢測時間減少36.6 s,由此可知篩選有效特征信息可以有效節(jié)省離線訓練和在線檢測的時間。
為了驗證本文提出的Stacking 集成模型的檢測性能,針對2.3 節(jié)得到性能較好的兩種基學習器XGBoost、LightGBM模型以及Stacking 集成模型進行了檢測對比實驗。將已獲得的離線有效數(shù)據(jù)集按7∶3 劃分為訓練數(shù)據(jù)集和驗證數(shù)據(jù)集,在輸入相同訓練數(shù)據(jù)集的情況下比較性能。
對上述三種檢測模型,利用驗證數(shù)據(jù)集對多類型應用層DDoS 攻擊檢測模型的輸出結(jié)果驗證。依據(jù)精確率、召回率和F1 分數(shù)指標對檢測結(jié)果進行對比,如圖8 所示。通過對比可以看出,針對Benign 和CC 攻擊的識別,每一種模型在精準率、召回率和F1 分數(shù)上表現(xiàn)較好,基本可達1.0,這是由于CC 攻擊多方面特征與正常用戶行為偏差過大,因此檢測率很高;對于HTTP Flood 攻擊,Stacking 集成模型表現(xiàn)優(yōu)于其他兩個模型,這是由于Stacking 集成模型在構(gòu)建檢測模型時進一步集成,因此具有較強的泛化性;對于HTTP Post 和HTTP Get 攻擊,Stacking 集成模型和XGBoost 表現(xiàn)較好。
圖8 各類模型的性能比較Fig.8 Performance comparison of various models
為了驗證Stacking 集成模型相較于現(xiàn)有的其他集成策略模型的優(yōu)越性,利用其他集成學習算法進行訓練和測試,對比Bagging、Boosting(AdaBoost、XGBoost)與Stacking 集成模型的檢測性能。對上述4 種檢測模型,利用驗證數(shù)據(jù)集對多類型應用層DDoS 攻擊檢測模型的輸出結(jié)果驗證。依據(jù)準確率、宏平均精確率、宏平均召回率以及宏平均F1 分數(shù)等指標對檢測結(jié)果進行對比,如表6 所示。
由表6 可知,相較于Bagging、Adaboost 和XGBoost 模型,Stacking 的準確率分別提高了0.18、0.21 和0.19 個百分點,宏平均精準率分別提高了1.59、2.34 和2.44 個百分點,宏平均召回率分別提高了1.86%、2.48%和0.90%,宏平均F1 分數(shù)分別提高了1.77、2.43 和1.69 個百分點。相較于其他集成策略的模型,Stacking 集成模型的精度均有較大提升,結(jié)果表現(xiàn)較好。
表6 Stacking模型與其他集成策略模型性能對比Tab.6 Performance comparison between Stacking model and other integration strategy models
綜合上述評價指標可知,相較于現(xiàn)有的單一機器學習模型以及Bagging、Boosting 集成模型,本文提出的Stacking 集成模型綜合XGBoost 模型和LightGBM 模型這兩種模型的檢測結(jié)果進行最終結(jié)果預測,泛化性強,可有效提高檢測性能??紤]應用層DDoS 攻擊的多樣性,采用的檢測模型必須要對多種攻擊具有較強的檢測準確度,后續(xù)在線檢測階段所部署模型采用Stacking 集成模型最佳。
本節(jié)基于3.4 節(jié)已訓練好的Stacking 集成模型進行應用層DDoS 攻擊在線檢測。在線流量數(shù)據(jù)采集階段,為了驗證Stacking 集成模型對組合類型的應用層DDoS 攻擊的檢測效果,使用Webbench、Hulk、Goleden-Eye 等攻擊工具持續(xù)發(fā)送8 h 的攻擊流量和正常流量。分別發(fā)送CC、HTTP Flood、HTTP Post、HTTP Get、Other、CC+HTTP Flood、HTTP Flood+HTTP Post、HTTP Post+HTTP Get、CC+HTTP Flood+HTTP Post+HTTP Get 攻擊。其中分別單獨發(fā)送CC、HTTP Flood、HTTP Post、HTTP Get、Other 攻擊的 流量速 率分別 約17.9 MB/s、15.0 MB/s、10.3 MB/s、11.2 MB/s、42.1 MB/s,不同組合應用層DDoS 攻擊中最大速率可達到73 MB/s。由于在網(wǎng)絡(luò)流量入口處會有大量正常用戶訪問,本實驗將正常流量的速率設(shè)定為35 MB/s。
在線數(shù)據(jù)集生成階段,引入時間窗口的概念,即在線抓包生成檢測數(shù)據(jù)集的時間間隔。由于不同時間窗口對于流級的數(shù)據(jù)集分割情況會有一定差別,訓練的模型也會有所不同,導致最后訓練的結(jié)果差異較大。Stacking 模型自定義不同時間窗口,分別對比性能評價指標,選擇性能最優(yōu)的時間窗口作為在線檢測的設(shè)定參數(shù)。
在線檢測階段,為了評估Stacking 集成模型在3 種時間窗口(分別為1 min、2 min、3 min)下的檢測性能,將3 種模型的檢測情況以混淆矩陣的形式展示,實驗結(jié)果如圖9 所示,其中最右側(cè)圖例根據(jù)顏色深淺反映數(shù)值大小,提高數(shù)據(jù)可視化程度。從圖9 可以看出,3 種時間窗口下的在線檢測模型對Benign 類型的識別檢測率基本可以保證在1.0;對于CC 攻擊和其他類型攻擊,3 種時間窗口下的在線檢測模型表現(xiàn)均較好,可達0.9 以上;對于HTTP Flood 攻擊,1 min 和2 min 的時間窗口表現(xiàn)優(yōu)于3 min 時間窗口;對于較易混淆的HTTP Get 和HTTP Post 攻擊,1 min 和2 min 的時間窗口表現(xiàn)明顯優(yōu)于3 min 時間窗口。
為驗證2 min 時間窗口可以在保持高檢測率時,將惡意流量檢測率也保持在較高水平的結(jié)論,以惡意流量檢測率為指標對在線檢測數(shù)據(jù)集進行實驗。對比3 個時間窗口的惡意流量檢測率,如表7 所示,發(fā)現(xiàn)2 min 的惡意流量檢測率最高。通過分析圖9 和表7 的結(jié)果,可以看出2 min 時間窗口相對表現(xiàn)最佳,因為2 min 窗口相較于1 min 窗口可獲取更多的特征信息,相較于3 min 窗口流截斷引起的誤差小且時間開銷小。為保證瞬時流量的檢測能力和效果,本文選擇2 min時間窗口作為在線檢測的最優(yōu)時間窗口參數(shù)。
圖9 不同時間窗口的混淆矩陣Fig.9 Confusion matrices in different time windows
表7 惡意流量檢測率對比Tab.7 Malicious traffic detection rate comparison
為了更加全面地評價Stacking 集成模型在2 min 時間窗口的檢測性能,采用精確率、召回率和F1 分數(shù)評價模型,結(jié)果如表8 所示。對于正常流量、CC 攻擊和其他DDoS 攻擊的識別,精確率、召回率和F1 分數(shù)都在0.98 以上;對于HTTP Flood、HTTP Post 和HTTP Get 攻擊的識別,精確率、召回率和F1 分數(shù)可基本在0.90 左右。綜合上述結(jié)果可知,在線檢測階段Stacking 集成模型的性能表現(xiàn)較好,模型泛化性強。
表8 最優(yōu)時間窗口的檢測性能Tab.8 Test performance for optimal time window
本文提出的基于集成學習的應用層DDoS 攻擊檢測方法,結(jié)合離線訓練和在線檢測方法,可檢測多類型應用層DDoS 攻擊。實驗結(jié)果表明,所提方法可有效檢測多類型應用層DDoS 攻擊,在最優(yōu)時間窗口下惡意流量檢測率達98%。本文將進一步驗證基于集成學習的檢測方法在真實網(wǎng)絡(luò)環(huán)境中的可用性,優(yōu)化在線時間窗口值并優(yōu)化模型,得到更佳檢測效果。