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