(西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽(yáng) 621010)
隨著互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、機(jī)器學(xué)習(xí)等技術(shù)的快速發(fā)展,目前已經(jīng)全面進(jìn)入大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)數(shù)據(jù)迅速增長(zhǎng)且類型多樣,網(wǎng)絡(luò)規(guī)模越來(lái)越大,設(shè)備更加多樣化[1]。在日益復(fù)雜的網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)攻擊行為越來(lái)越復(fù)雜,手段也越來(lái)越隱蔽,且潛伏周期很長(zhǎng),新型攻擊多種多樣[2-3]。面對(duì)如此復(fù)雜嚴(yán)峻的形式,迅速、準(zhǔn)確地區(qū)分正常和異常網(wǎng)絡(luò)行為,有效防御非法入侵,成為網(wǎng)絡(luò)安全領(lǐng)域研究的重點(diǎn)。
自20世紀(jì)80年代Denning提出網(wǎng)絡(luò)入侵檢測(cè)模型以來(lái)[4],學(xué)者們提出了很多網(wǎng)絡(luò)異常行為檢測(cè)方法,目前異常行為檢測(cè)方法主要包含基于統(tǒng)計(jì)分析的方法、基于數(shù)據(jù)挖掘的方法、基于特征規(guī)則的方法和基于機(jī)器學(xué)習(xí)的方法[5-6]。其中基于機(jī)器學(xué)習(xí)的網(wǎng)絡(luò)異常檢測(cè)是學(xué)者們研究的重點(diǎn),但由于傳統(tǒng)的存儲(chǔ)空間及計(jì)算能力有限,機(jī)器學(xué)習(xí)的檢測(cè)效果不佳。隨著大數(shù)據(jù)技術(shù)的發(fā)展,提升了對(duì)大量數(shù)據(jù)的采集、存儲(chǔ)及處理能力。將機(jī)器學(xué)習(xí)和大數(shù)據(jù)技術(shù)相結(jié)合應(yīng)用到網(wǎng)絡(luò)異常行為檢測(cè)中[7],通過(guò)對(duì)數(shù)據(jù)流實(shí)時(shí)檢測(cè)和歷史數(shù)據(jù)的離線分析,可以識(shí)別更隱蔽及復(fù)雜的網(wǎng)絡(luò)攻擊,而且極大提高了網(wǎng)絡(luò)異常檢測(cè)的準(zhǔn)確率。因此,已成為近年來(lái)安全領(lǐng)域的一大熱門。
Son S[8]提出了一種基于apache的數(shù)據(jù)存儲(chǔ)和分析架構(gòu),用于處理大量的Hadoop日志數(shù)據(jù),并設(shè)計(jì)實(shí)現(xiàn)了三種有效的異常檢測(cè)方法,進(jìn)行了對(duì)比實(shí)驗(yàn)。S.Zhao等[9]提出了一種基于機(jī)器學(xué)習(xí)算法的實(shí)時(shí)網(wǎng)絡(luò)流量異常檢測(cè)的框架,所提出的原型系統(tǒng)結(jié)合了機(jī)器學(xué)習(xí)技術(shù)和現(xiàn)有的大數(shù)據(jù)處理框架,并利用校園網(wǎng)數(shù)據(jù)進(jìn)行了結(jié)果測(cè)試。Wang H等人[10]為了解決入侵檢測(cè)算法耗時(shí)大、數(shù)據(jù)分類占用內(nèi)存大、單點(diǎn)檢測(cè)效率低的問(wèn)題,提出了一種基于Spark平臺(tái)的并行主成分分析和支持向量機(jī)組合算法。B.Senthilnayaki等人[11]在模型預(yù)訓(xùn)練過(guò)程中首先采用遺傳算法進(jìn)行特征選擇,然后應(yīng)用SVM進(jìn)行分類,實(shí)驗(yàn)表明檢測(cè)效果較好。S.Sahu等人[12]采用決策樹(shù)構(gòu)建了網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng),對(duì)網(wǎng)絡(luò)數(shù)據(jù)包中的正常、已知攻擊和未知攻擊進(jìn)行分類。結(jié)果表明,決策樹(shù)算法對(duì)未知攻擊具備識(shí)別檢測(cè)能力。王萍[13]提出了一種基于大數(shù)據(jù)技術(shù)的網(wǎng)絡(luò)異常行為分析的方法,可以識(shí)別更隱蔽及復(fù)雜手法的攻擊行為,并基于該理論方法實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)異常行為分析監(jiān)測(cè)系統(tǒng)。李若鵬[14]設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)基于大數(shù)據(jù)的網(wǎng)絡(luò)異常行為檢測(cè)平臺(tái),實(shí)現(xiàn)多種海量數(shù)據(jù)的可靠高效的接入、存儲(chǔ)以及分析。
綜上所述,面對(duì)大數(shù)據(jù)時(shí)代網(wǎng)絡(luò)復(fù)雜多樣的數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)處理平臺(tái)已無(wú)法對(duì)海量數(shù)據(jù)進(jìn)行高效、全面的處理;傳統(tǒng)單一的機(jī)器學(xué)習(xí)算法存在對(duì)已知異常檢測(cè)效果較低,無(wú)法檢測(cè)未知攻擊行為的問(wèn)題。針對(duì)以上問(wèn)題,結(jié)合大數(shù)據(jù)技術(shù)和機(jī)器學(xué)習(xí),提出了一種基于大數(shù)據(jù)技術(shù)的網(wǎng)絡(luò)異常行為檢測(cè)方法。詳細(xì)介紹了該模型的總體架構(gòu)設(shè)計(jì),該模型架構(gòu)包括數(shù)據(jù)采集與預(yù)處理層、數(shù)據(jù)分析層、數(shù)據(jù)存儲(chǔ)層和可視化層;結(jié)合并行化的模擬退火優(yōu)化的支持向量機(jī)和隨機(jī)森林算法構(gòu)建網(wǎng)絡(luò)異常行為檢測(cè)模型;利用Flume、Kafka、Spark streaming技術(shù)以及網(wǎng)絡(luò)異常行為檢測(cè)模型實(shí)現(xiàn)數(shù)據(jù)流的實(shí)時(shí)檢測(cè),并將結(jié)果可視化展示。利用NSL-KDD數(shù)據(jù)集對(duì)本文提出的方法和相關(guān)算法進(jìn)行對(duì)比測(cè)試,實(shí)驗(yàn)結(jié)果表明,本文提出的方法在準(zhǔn)確率和誤報(bào)率方面明顯優(yōu)于其他算法,并測(cè)試了網(wǎng)絡(luò)異常行為實(shí)時(shí)檢測(cè)流程。
支持向量機(jī)(support vector machine,SVM)是一種基于VC維度理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理的機(jī)器學(xué)習(xí)算法,SVM是一種二分類模型?;舅悸肪褪窃谔卣骺臻g中找到一個(gè)能夠滿足限制條件的最優(yōu)超平面,該超平面能夠把數(shù)據(jù)集中的點(diǎn)準(zhǔn)確的分類,而且使兩側(cè)的點(diǎn)到該超平面的距離最大。其學(xué)習(xí)策略是求解超平面問(wèn)題,可以等價(jià)為求解相應(yīng)的凸二次規(guī)劃問(wèn)題。SVM在一定程度上克服了傳統(tǒng)機(jī)器學(xué)習(xí)算法中過(guò)擬合、維數(shù)災(zāi)難和局部極小值等不足,具有很強(qiáng)的學(xué)習(xí)和泛化能力等。
在線性可分的情況下,給出一組訓(xùn)練樣本,可將其分類的超平面用一個(gè)分類函數(shù)表示:
f(x)=ω·xi+b
(1)
這里用1和-1分別表示兩類樣本,當(dāng)f(x)>0時(shí),x屬于1的樣本點(diǎn),反之屬于-1的樣本點(diǎn)。然而這樣的分類超平面在分類問(wèn)題中并不唯一,需要尋找并確定最佳超平面。因此,將分類問(wèn)題轉(zhuǎn)化為二次規(guī)劃問(wèn)題的求解,公式如下:
(2)
在線性不可分的情況下通過(guò)引入非負(fù)松弛因子和懲罰因子,允許存在少量分類錯(cuò)誤的樣本,其約束條件為:
(3)
基于spark ML的SVM是具有一個(gè)Hinge損失函數(shù)的線性分類,其中Hinge loss用于最大間隔分類,Hinge函數(shù)的標(biāo)準(zhǔn)形式:
L(w;x,y):=max{0,1-ywTx}
(4)
默認(rèn)情況下,線性支持向量機(jī)通過(guò)L2正則化訓(xùn)練,其中正則化系數(shù)的設(shè)置對(duì)訓(xùn)練模型至關(guān)重要。支持向量機(jī)在高維或無(wú)限維空間中構(gòu)造一個(gè)超平面或一組超平面,輸出SVM模型結(jié)構(gòu)。對(duì)于新的數(shù)據(jù)節(jié)點(diǎn)x,則模型基于wTx值來(lái)預(yù)測(cè),如果wTx>0,則結(jié)果為正常,否則為異常。
模擬退火(simulated annealing,SA)算法來(lái)源于固體退火原理,即將固體加熱到足夠高的溫度,當(dāng)溫度很高時(shí),內(nèi)能比較大,內(nèi)部粒子處于快速無(wú)序運(yùn)動(dòng)狀態(tài),而在溫度緩慢冷卻時(shí),固體的內(nèi)能減小,內(nèi)部粒子逐漸趨于有序,最終趨于平衡狀態(tài),內(nèi)能達(dá)到最小,粒子最為穩(wěn)定。在實(shí)際應(yīng)用中,將優(yōu)化問(wèn)題的最優(yōu)解比作退火過(guò)程中能量處于最低的穩(wěn)定狀態(tài),也就是溫度達(dá)到最低點(diǎn)的狀態(tài)或概率分布中具有最大概率的狀態(tài)。其實(shí)現(xiàn)主要是在局部搜索的過(guò)程中引入了隨機(jī)擾動(dòng)的機(jī)制,對(duì)于產(chǎn)生的新解,如果好于舊解,則無(wú)條件接受或更新,如果差于舊解,則以一定概率接受或更新。
模擬退火算法存在兩個(gè)主要缺點(diǎn)。首先,退火速度問(wèn)題。對(duì)于復(fù)雜的目標(biāo)函數(shù),為了找到全局最優(yōu)解,設(shè)置的初始溫度足夠高,冷卻速度足夠慢,導(dǎo)致計(jì)算量很大。第二,最優(yōu)解的丟失和循環(huán)問(wèn)題。由于模擬退火的隨機(jī)性,可以跳出局部最優(yōu),但也可能丟棄當(dāng)前最優(yōu)解,以及對(duì)某個(gè)已經(jīng)訪問(wèn)過(guò)的解進(jìn)行多次重復(fù)的搜索。為了克服以上缺點(diǎn),本文對(duì)傳統(tǒng)的模擬退火算法進(jìn)行改進(jìn)。改進(jìn)的SA和傳統(tǒng)的SA主要區(qū)別在于:
1)溫度冷卻函數(shù)在傳統(tǒng)的SA中是恒定的,而在改進(jìn)的SA中采用分段函數(shù)。起初溫度較高的時(shí)候,采用遞減較快的函數(shù)來(lái)降低溫度,在退火的后期,采用遞減較慢的函數(shù)。溫度冷卻函數(shù)如下:
(5)
其中:m是預(yù)先設(shè)定的值,t是迭代次數(shù),T0為起始溫度。
2)內(nèi)循環(huán)次數(shù)在傳統(tǒng)的SA中是恒定的,而在改進(jìn)的SA中,如果當(dāng)前溫度的解在足夠長(zhǎng)的時(shí)間內(nèi)保持不變,超過(guò)了算法預(yù)設(shè)的閾值,則跳出循環(huán)。
3)改進(jìn)的SA增加記憶功能來(lái)保存最近訪問(wèn)的解和歷史最優(yōu)解。
改進(jìn)的模擬退火算法的整體步驟大致如下:
1)設(shè)定初始溫度T0,隨機(jī)產(chǎn)生初始解ω0,并計(jì)算目標(biāo)函數(shù)值f(ω0),終止溫度Te,內(nèi)迭代因子γ,內(nèi)循環(huán)閾值θ,設(shè)定降溫函數(shù)分段點(diǎn)m;
2)通過(guò)擾動(dòng)當(dāng)前解ω產(chǎn)生新解ω′,若ω′內(nèi)存中存在,則丟棄,否則計(jì)算相應(yīng)的目標(biāo)函數(shù)f(ω′),得到Δf=f(ω′)-f(ω);
4)持續(xù)在鄰近區(qū)域內(nèi)生成新解并重復(fù)步驟2)、3),直到達(dá)到內(nèi)循環(huán)閾值θ;
5)判斷溫度是否到達(dá)終止條件Ti 傳統(tǒng)基于spark ML的SVM正則化系數(shù)靠經(jīng)驗(yàn)設(shè)置,存在較強(qiáng)的主觀性,不同的值可能會(huì)得到不同的結(jié)果。然而模擬退火算法非常適合求解優(yōu)化問(wèn)題的最優(yōu)解。因此本文利用改進(jìn)的SA算法優(yōu)化SVM參數(shù)的設(shè)定,使模型準(zhǔn)確率達(dá)到全局最優(yōu)。 隨機(jī)森林(random forest,RF)算法是一種通過(guò)隨機(jī)的方式建立多棵決策樹(shù)從而形成一片森林的過(guò)程,其輸出的類別基于每個(gè)決策樹(shù)輸出類別的眾數(shù)而定。通過(guò)Bagging方法抽取森林中每棵決策樹(shù)的訓(xùn)練樣本,利用這些子訓(xùn)練集并行訓(xùn)練一套決策樹(shù),每棵決策樹(shù)相互獨(dú)立。對(duì)于測(cè)試數(shù)據(jù)集,在每個(gè)決策樹(shù)做出決策后,隨機(jī)森林模型將通過(guò)投票決定最終結(jié)果。隨機(jī)森林算法是一種集成學(xué)習(xí),是一種多個(gè)決策樹(shù)組合成為一個(gè)強(qiáng)分類器的過(guò)程。在實(shí)際應(yīng)用中,隨機(jī)森林分類精度高、多次預(yù)測(cè)結(jié)果穩(wěn)定,且降低過(guò)度擬合模型的風(fēng)險(xiǎn)。隨機(jī)森林的算法流程如下: 1)從原始的數(shù)據(jù)集中采用Bagging思想進(jìn)行有放回抽樣,抽取K個(gè)和原數(shù)據(jù)集數(shù)量相等的訓(xùn)練子集{D1,D2,...,Dk}; 2)使用每個(gè)訓(xùn)練集構(gòu)建子決策樹(shù),在決策樹(shù)的每個(gè)結(jié)點(diǎn),從全部特征中隨機(jī)采樣有m(m≤M)個(gè)特征的子空間,并基于這m個(gè)特征計(jì)算所有可能的分裂方式,選擇最佳分類方式(如entropy度量最大)用于該結(jié)點(diǎn)的分裂,繼續(xù)這個(gè)過(guò)程直到達(dá)到某個(gè)預(yù)設(shè)的停止條件。本文中預(yù)設(shè)的停止條件為決策樹(shù)的深度達(dá)到設(shè)定的值。 3)把K個(gè)不剪枝的樹(shù)集成得到一個(gè)隨機(jī)森林,隨機(jī)森林的分類決策采用投票的方式。當(dāng)新的數(shù)據(jù)需要通過(guò)隨機(jī)森林得到分類結(jié)果,就可以通過(guò)對(duì)子決策樹(shù)的判斷結(jié)果的投票,得到隨機(jī)森林的輸出結(jié)果了。 基于大數(shù)據(jù)的網(wǎng)絡(luò)異常行為檢測(cè)模型如圖1所示,包括數(shù)據(jù)采集層、數(shù)據(jù)預(yù)處理層、數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)分析層、可視化層。 1)數(shù)據(jù)采集層。負(fù)責(zé)從多源異構(gòu)的數(shù)據(jù)源采集數(shù)據(jù),數(shù)據(jù)源指用來(lái)支撐數(shù)據(jù)分析和實(shí)時(shí)監(jiān)測(cè)的各類原始安全數(shù)據(jù)。通過(guò)Flume采集數(shù)據(jù)發(fā)布到Kafka上。 2)數(shù)據(jù)預(yù)處理層。主要負(fù)責(zé)對(duì)收集到的原始數(shù)據(jù)進(jìn)行數(shù)值化、歸一化的處理工作,方便后面網(wǎng)絡(luò)異常行為分析使用。 3)數(shù)據(jù)分析層。負(fù)責(zé)大批量數(shù)據(jù)的計(jì)算,主要分為離線分析和實(shí)時(shí)檢測(cè)兩部分。通過(guò)基于Spark ML的機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)離線分析,完成網(wǎng)絡(luò)行為檢測(cè)模型的構(gòu)建。實(shí)時(shí)檢測(cè)基于Spark streaming框架通過(guò)消息訂閱讀取Kafka中的實(shí)時(shí)數(shù)據(jù)流,并依據(jù)檢測(cè)模型對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行檢測(cè)。 4)數(shù)據(jù)存儲(chǔ)層:按照數(shù)據(jù)的類型及使用情況實(shí)現(xiàn)各類數(shù)據(jù)的存儲(chǔ)與集中管理,本文將原始數(shù)據(jù)存儲(chǔ)到HDFS,部分分析處理結(jié)果存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)Mysql中。 5)可視化層:主要用于結(jié)果的展示和查詢,方便查看和操作。 圖1 基于大數(shù)據(jù)的網(wǎng)絡(luò)異常行為檢測(cè)模型 傳統(tǒng)串行機(jī)器學(xué)習(xí)算法處理大規(guī)模數(shù)據(jù)時(shí)速度會(huì)降低。針對(duì)此問(wèn)題,本文將并行框架Spark與前面描述的模擬退火、支持向量機(jī)和隨機(jī)森林算法結(jié)合,實(shí)現(xiàn)了基于Spark的并行化SA_SVM_RF模型。在不降低分類精度的前提下,可以明顯提高算法的分類效率。 Spark有兩個(gè)內(nèi)部機(jī)器學(xué)習(xí)庫(kù),分別為基于彈性分布式數(shù)據(jù)集(Resillient Distributed DataSet,RDD)的MLlib和基于DataFrame的ML。若數(shù)據(jù)集結(jié)構(gòu)復(fù)雜需經(jīng)過(guò)多次處理或數(shù)據(jù)需要集成學(xué)習(xí)的思想進(jìn)行綜合預(yù)測(cè)時(shí),Spark ML明顯優(yōu)于Spark MLlib,因此,本文算法是基于Spark ML實(shí)現(xiàn)的。 基于Spark的并行化SA_SVM_RF算法的實(shí)現(xiàn)步驟如圖2所示。在模型訓(xùn)練開(kāi)始之前,將數(shù)據(jù)集上傳到HDFS分布式文件存儲(chǔ)系統(tǒng)。Spark集群的任務(wù)調(diào)度將數(shù)據(jù)集劃分為K個(gè)部分,每個(gè)數(shù)據(jù)子集都會(huì)在Executor中創(chuàng)造一項(xiàng)新任務(wù),并分配計(jì)算資源。然后在Spark集群上先后進(jìn)行并行SA優(yōu)化的SVM和RF算法訓(xùn)練以獲得K個(gè)模型,最后,將局部最優(yōu)模型進(jìn)行合并操作,輸出全局最優(yōu)模型。 圖2 基于Spark的并行化SA_SVM_RF算法實(shí)現(xiàn)流程 1)數(shù)據(jù)集切分。利用textFile()函數(shù)從HDFS讀取數(shù)據(jù)集并將其轉(zhuǎn)換為具有列名的DataFrame,StringIndexer()對(duì)字符串的標(biāo)簽列進(jìn)行編碼,同時(shí)按照partition類中的分割規(guī)則將原數(shù)據(jù)集隨機(jī)切分成大小適中的獨(dú)立數(shù)據(jù)分區(qū),并分布到各Executor上。 2)Map階段。每個(gè)Executor將數(shù)據(jù)子塊里的原始DataFrame用transform() 方法轉(zhuǎn)化成適合SVM算法輸入格式的DataFrame,創(chuàng)建一個(gè)Pipeline對(duì)象,同時(shí)設(shè)置對(duì)應(yīng)的多個(gè)順序執(zhí)行的PipelineStage,構(gòu)建SA優(yōu)化的SVM算法對(duì)象并設(shè)置參數(shù),然后調(diào)用fit()方法對(duì)SA優(yōu)化的SVM分類器進(jìn)行迭代訓(xùn)練產(chǎn)生一個(gè)SA_SVMModel。接著調(diào)用SA_SVMModel的transform() 方法得到新的DataFrame,并將其傳入下一個(gè)Stage(即RF算法),RF算法用同樣的方法得到Model。 3)Combine階段。Combine階段位于Map和Reduce之間,通過(guò)Combiner對(duì)象,將所有數(shù)據(jù)子塊以及Map階段得到的局部模型Model洗牌后合并,交予Reduce階段。 4)Reduce階段。接收Combine階段的結(jié)果并對(duì)合并后的分類模型進(jìn)行測(cè)試。按照準(zhǔn)確率高誤報(bào)率低的測(cè)試標(biāo)準(zhǔn)輸出全局最優(yōu)分類器GlobelModel。 本文提出的網(wǎng)絡(luò)異常行為檢測(cè)主要分為兩個(gè)階段:離線構(gòu)建檢測(cè)模型和實(shí)時(shí)檢測(cè)數(shù)據(jù)流,網(wǎng)絡(luò)異常行為建模與實(shí)時(shí)檢測(cè)的流程圖如圖3所示。 圖3 網(wǎng)絡(luò)異常行為建模與實(shí)時(shí)檢測(cè)流程 基于并行化SA_SVM_RF的網(wǎng)絡(luò)異常行為模型構(gòu)建主要是將模擬退火優(yōu)化的支持向量機(jī)和隨機(jī)森林有效結(jié)合,充分利用各自的優(yōu)勢(shì)來(lái)提高網(wǎng)絡(luò)異常檢測(cè)的效果。模型構(gòu)建主要包括:數(shù)據(jù)預(yù)處理、模型訓(xùn)練、模型評(píng)估。數(shù)據(jù)預(yù)處理主要是對(duì)數(shù)據(jù)集進(jìn)行數(shù)值化、歸一化處理。訓(xùn)練階段主要是先利用模擬退化優(yōu)化的支持向量機(jī)將數(shù)據(jù)集分成兩類,然后利用隨機(jī)森林再次分類形成五類,得到訓(xùn)練模型。模型評(píng)估主要是利用測(cè)試數(shù)據(jù)評(píng)估訓(xùn)練的網(wǎng)絡(luò)異常行為檢測(cè)模型的好壞,并將測(cè)試結(jié)果反饋到模型訓(xùn)練階段來(lái)不斷調(diào)整模型,直至產(chǎn)生滿足要求的模型。 基于Flume_Kafka_Spark Streaming的網(wǎng)絡(luò)異常實(shí)時(shí)檢測(cè)步驟如下: 1)Flume實(shí)時(shí)采集數(shù)據(jù),并發(fā)送到Kafka的topic中; 2)采用Spark streaming實(shí)時(shí)計(jì)算框架通過(guò)消息訂閱讀取Kafka 的topic中實(shí)時(shí)數(shù)據(jù)流,利用檢測(cè)模型進(jìn)行實(shí)時(shí)檢測(cè),并將結(jié)果保存在mysql數(shù)據(jù)庫(kù)中; 3)以可視化的形式輸出最終的異常檢測(cè)結(jié)果。 測(cè)試環(huán)境Spark集群包括3個(gè)虛擬機(jī),其中一個(gè)主節(jié)點(diǎn),兩個(gè)從節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都具有相同的配置,設(shè)置2核CPU,4 GB內(nèi)存,20 G硬盤。測(cè)試環(huán)境中配置的組件主要包括Hadoop、Zookeeper、Flume、Kafka、Spark。 本文使用NSL-KDD數(shù)據(jù)集作為模型的訓(xùn)練和測(cè)試數(shù)據(jù)集,同時(shí)用多種算法對(duì)模型進(jìn)行比較驗(yàn)證。使用KDD CUP99中未標(biāo)簽的數(shù)據(jù)集模擬實(shí)時(shí)產(chǎn)生數(shù)據(jù)流測(cè)試網(wǎng)絡(luò)異常行為實(shí)時(shí)檢測(cè)流程。 使用NSL-KDD數(shù)據(jù)集將本文算法與四種傳統(tǒng)算法進(jìn)行比較驗(yàn)證。表1表示不同算法分別在KDDTest+和 KDDTest-21上的整體檢測(cè)效果。表2表示不同算法在 KDDTest+和KDDTest-21上對(duì)四種攻擊類型檢測(cè)的準(zhǔn)確率。 表1 不同模型在KDDTest+和KDDTest-21上的整體檢測(cè)效果 從表1中可以看出,與傳統(tǒng)機(jī)器學(xué)習(xí)算法相比,本文算法的整體準(zhǔn)確率都高于以上四種傳統(tǒng)機(jī)器學(xué)習(xí)算法,誤報(bào)率要略微低于決策樹(shù)和隨機(jī)森林算法,高于其余兩種算法。 表2 四種攻擊類型在KDDTest+和KDDTest-21上檢測(cè)的準(zhǔn)確率 從表2中可以看出,與傳統(tǒng)機(jī)器學(xué)習(xí)算法相比,本文提出的算法除了對(duì)Probe的檢測(cè)準(zhǔn)確率略低于Bayes算法外,對(duì)四種攻擊類型的檢測(cè)準(zhǔn)確率明顯優(yōu)于四種傳統(tǒng)算法,尤其是提升了對(duì)R2L攻擊和U2R攻擊的檢測(cè)能力。 將本文算法與文獻(xiàn)[14]進(jìn)行比較驗(yàn)證,對(duì)比結(jié)果如圖4所示。 圖4 不同算法檢測(cè)準(zhǔn)確率對(duì)比結(jié)果 由圖可知,本文算法的整體檢測(cè)準(zhǔn)確率比文獻(xiàn)[18]高12.86%。從四種攻擊類型的檢測(cè)準(zhǔn)確率來(lái)看,本文算法對(duì)DOS、Probe、R2L和U2R的檢測(cè)準(zhǔn)確率比文獻(xiàn)[18]分別提高了1.58%,10.39%,8.27%,51.52%。綜合來(lái)看,本文算法具有更高的檢測(cè)準(zhǔn)確率,進(jìn)一步提高了入侵檢測(cè)分類效果。 網(wǎng)絡(luò)異常實(shí)時(shí)檢測(cè)情況如圖5所示。其中左上角的柱狀圖展示了一天內(nèi)網(wǎng)絡(luò)實(shí)時(shí)檢測(cè)到的各類別的總數(shù),右上角的儀表盤展示了一天內(nèi)網(wǎng)絡(luò)的總量,下面的散點(diǎn)圖可以看出某一時(shí)間點(diǎn)出現(xiàn)了某種網(wǎng)絡(luò)攻擊。 圖5 網(wǎng)絡(luò)異常實(shí)時(shí)檢測(cè)展示 網(wǎng)絡(luò)異常行為實(shí)時(shí)檢測(cè)過(guò)程中網(wǎng)絡(luò)總量實(shí)時(shí)展示如圖6所示。從圖中可以看出網(wǎng)絡(luò)總量的實(shí)時(shí)變化情況。 圖6 網(wǎng)絡(luò)總量實(shí)時(shí)展示 網(wǎng)絡(luò)行為歷史數(shù)據(jù)查詢部分結(jié)果如圖7所示??梢酝ㄟ^(guò)設(shè)置網(wǎng)路異常類型、起始時(shí)間和結(jié)束時(shí)間查詢網(wǎng)絡(luò)行為數(shù)據(jù)記錄。 圖7 網(wǎng)絡(luò)行為歷史數(shù)據(jù)查詢展示 針對(duì)現(xiàn)有網(wǎng)絡(luò)異常檢測(cè)存在的問(wèn)題,本文將大數(shù)據(jù)技術(shù)和機(jī)器學(xué)習(xí)結(jié)合,提出了一種基于大數(shù)據(jù)技術(shù)的網(wǎng)絡(luò)異常行為檢測(cè)方法。首先利用基于Spark的并行SA_SVM_RF算法構(gòu)建網(wǎng)絡(luò)異常行為檢測(cè)模型。然后運(yùn)用Flume、Kafka、Spark steaming等技術(shù)框架實(shí)現(xiàn)了數(shù)據(jù)流的高效采集、存儲(chǔ)和處理,完成網(wǎng)絡(luò)異常行為實(shí)時(shí)檢測(cè)。并且使用NSL-KDD數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)驗(yàn)證,結(jié)果表明,本文提出的方法有效提高了網(wǎng)絡(luò)異常行為檢測(cè)準(zhǔn)確率、降低了誤報(bào)率,具有較好的檢測(cè)性能,并驗(yàn)證了大數(shù)據(jù)環(huán)境下實(shí)時(shí)數(shù)據(jù)流的處理。下一步工作中,將進(jìn)一步優(yōu)化本文提出的算法來(lái)完善模型,使之更適用于實(shí)際應(yīng)用。1.3 隨機(jī)森林
2 基于大數(shù)據(jù)技術(shù)的網(wǎng)絡(luò)異常行為檢測(cè)
2.1 網(wǎng)絡(luò)異常行為檢測(cè)模型設(shè)計(jì)
2.2 基于Spark的并行SA_SVM_RF實(shí)現(xiàn)
2.3 網(wǎng)絡(luò)異常行為建模與實(shí)時(shí)檢測(cè)
3 實(shí)驗(yàn)結(jié)果與分析
3.1 測(cè)試環(huán)境和測(cè)試數(shù)據(jù)集
3.2 算法有效性驗(yàn)證
3.3 網(wǎng)絡(luò)異常行為實(shí)時(shí)檢測(cè)測(cè)試
4 總結(jié)與展望