林麗星
(閩西職業(yè)技術(shù)學(xué)院 信息與制造學(xué)院,福建 龍巖 364021)
Spark集群環(huán)境使用內(nèi)部分布數(shù)據(jù)集,不僅具備常規(guī)的數(shù)據(jù)交互查詢功能,還對(duì)工作環(huán)境負(fù)載產(chǎn)生一定程度的優(yōu)化作用,因此Spark集群在眾多數(shù)據(jù)采集監(jiān)測(cè)領(lǐng)域得到廣泛應(yīng)用。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)日益優(yōu)化,網(wǎng)絡(luò)安全形勢(shì)日益嚴(yán)峻,黑客企圖通過入侵等方式獲得私密的網(wǎng)絡(luò)數(shù)據(jù)信息[1]。因此,Spark環(huán)境下網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)問題亟待解決和優(yōu)化。Spark集群繼承了 Hadoop中Mapreduce的全部?jī)?yōu)越性能,適用于數(shù)據(jù)挖掘算法的運(yùn)行。為此在Spark環(huán)境下布置了并行式的K-mean聚類模型以挖掘當(dāng)前數(shù)據(jù)是否存在危險(xiǎn)因素,進(jìn)而監(jiān)測(cè)網(wǎng)絡(luò)數(shù)據(jù)的安全性能。
Spark環(huán)境下網(wǎng)絡(luò)數(shù)據(jù)采集的結(jié)構(gòu)布局如圖1所示,主要包括Spark集群、無(wú)線網(wǎng)絡(luò)、Spark服務(wù)集群、數(shù)據(jù)采集單元等關(guān)鍵部分。其中,Spark集群由多個(gè)從節(jié)點(diǎn)、一個(gè)主節(jié)點(diǎn)構(gòu)成,均通過交換機(jī)與數(shù)據(jù)采集單元進(jìn)行指令傳達(dá)與信息交互[2];數(shù)據(jù)采集單元包括數(shù)個(gè)數(shù)據(jù)流量采集節(jié)點(diǎn),采集后的數(shù)據(jù)傳輸?shù)絊park服務(wù)集群進(jìn)行安全處理與存儲(chǔ),以網(wǎng)絡(luò)為介質(zhì)傳輸?shù)接脩舳艘怨?shù)據(jù)分析使用。
Spark大數(shù)據(jù)集群環(huán)境下數(shù)據(jù)采集由采集單元部署的大量節(jié)點(diǎn)完成,是網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)的基礎(chǔ),數(shù)據(jù)流采集完畢將會(huì)進(jìn)行安全存儲(chǔ)以供安全監(jiān)測(cè)環(huán)節(jié)使用。Spark環(huán)境下采集的數(shù)據(jù)流包括結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)兩種,采集節(jié)點(diǎn)需要零散布局在復(fù)雜的網(wǎng)絡(luò)之中,通過并行化節(jié)點(diǎn)管理策略將分散的數(shù)據(jù)采集節(jié)點(diǎn)集中起來(lái)統(tǒng)一管理,以優(yōu)化網(wǎng)絡(luò)數(shù)據(jù)采集效果與效率。具體執(zhí)行方式如下:首先以大數(shù)據(jù)平臺(tái)為載體向各個(gè)數(shù)據(jù)采集節(jié)點(diǎn)發(fā)送獨(dú)立的執(zhí)行任務(wù),引入流量采集技術(shù)獲取網(wǎng)絡(luò)中完整的流量數(shù)據(jù);然后整合采集到的全部數(shù)據(jù)信息,統(tǒng)一進(jìn)行數(shù)據(jù)預(yù)處理,提高網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)的精準(zhǔn)度、降低數(shù)據(jù)監(jiān)測(cè)難度。
圖1 Spark集群采集網(wǎng)絡(luò)數(shù)據(jù)的拓?fù)浣Y(jié)構(gòu)布局
數(shù)據(jù)采集節(jié)點(diǎn)利用 Netsniff-ng抓包工具采集網(wǎng)絡(luò)數(shù)據(jù)包[3],其優(yōu)點(diǎn)是可以優(yōu)化網(wǎng)絡(luò)吞吐能力、降低計(jì)算機(jī)運(yùn)行環(huán)境的CPU開銷,減少對(duì)硬件軟件運(yùn)行環(huán)境的負(fù)載。
1.2.1 并行化聚類流程設(shè)計(jì)
K-mean聚類算法是一種無(wú)監(jiān)督的學(xué)習(xí)過程,將海量數(shù)據(jù)中某些相似的數(shù)據(jù)成員進(jìn)行分類組織,獲取大數(shù)據(jù)的某些內(nèi)在結(jié)構(gòu)特質(zhì),利用K-mean聚類算法識(shí)別網(wǎng)絡(luò)數(shù)據(jù)中的異常因素功能,對(duì) Spark環(huán)境下網(wǎng)絡(luò)數(shù)據(jù)安全進(jìn)行準(zhǔn)確監(jiān)測(cè)。Spark集群環(huán)境中產(chǎn)生的數(shù)據(jù)規(guī)模龐大,為高效率完成數(shù)據(jù)安全監(jiān)測(cè)并及時(shí)發(fā)現(xiàn)異常因素,設(shè)計(jì)了K-mean聚類算法并行化執(zhí)行流程,能在有限時(shí)間內(nèi)完成更多的數(shù)據(jù)檢測(cè)任務(wù),具體執(zhí)行流程如圖2所示。
圖2 K-mean聚類算法的并行化執(zhí)行流程圖
分析圖2得知,布局在Spark環(huán)境下的網(wǎng)絡(luò)數(shù)據(jù)總量被劃分成無(wú)數(shù)個(gè)節(jié)點(diǎn)數(shù)據(jù),節(jié)點(diǎn)數(shù)據(jù)異常檢測(cè)任務(wù)一一指派給不同的K-mean聚類模型,在相同時(shí)間段內(nèi)各節(jié)點(diǎn)一同完成數(shù)據(jù)檢測(cè)任務(wù)[4];最后將并行式聚類結(jié)果進(jìn)行集中整合,得到海量網(wǎng)絡(luò)數(shù)據(jù)的安全監(jiān)測(cè)結(jié)果。
1.2.2 基于K-mean聚類模型的網(wǎng)絡(luò)異常數(shù)據(jù)檢測(cè)
K-mean聚類算法識(shí)別網(wǎng)絡(luò)異常數(shù)據(jù)的原理如下:1)采集原始網(wǎng)絡(luò)數(shù)據(jù)集進(jìn)行K均值聚類訓(xùn)練,生成異常數(shù)據(jù)檢測(cè)模型,模型檢測(cè)誤差符合實(shí)際檢測(cè)要求;2)將當(dāng)前Spark環(huán)境下采集的網(wǎng)絡(luò)數(shù)據(jù)作為模型的輸入樣本輸入到訓(xùn)練好的K-mean聚類模型中,即可生成預(yù)期的數(shù)據(jù)異常檢測(cè)結(jié)果,以此評(píng)估網(wǎng)絡(luò)數(shù)據(jù)的安全性。
基于K-mean聚類算法的網(wǎng)絡(luò)數(shù)據(jù)異常識(shí)別過程需引入“信息熵”這一概念進(jìn)行輔助分析:首先對(duì)網(wǎng)絡(luò)數(shù)據(jù)流量實(shí)施信息熵量化處理,然后在此基礎(chǔ)上使用K-mean聚類算法劃分?jǐn)?shù)據(jù)的類別,判別其屬于安全數(shù)據(jù)還是異常數(shù)據(jù)。
信息熵自提出以來(lái)常用于隨機(jī)事件概率量化分析,公式(1)描述了信息熵量化的基本原理:
(1)
公式中,信息基元類別數(shù)量以及信息熵分別使用L、S表示,不同類別的概率描述為Gi。
網(wǎng)絡(luò)數(shù)據(jù)具有大量的特征屬性,從時(shí)間與空間維度來(lái)講特征屬性排列復(fù)雜,所以將固定時(shí)間頻率下的網(wǎng)絡(luò)數(shù)據(jù)作為對(duì)象進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)特征數(shù)據(jù)統(tǒng)計(jì),減少數(shù)據(jù)特征統(tǒng)計(jì)的不確定性。為此設(shè)計(jì)如下信息熵統(tǒng)計(jì)策略[5]:1)以網(wǎng)絡(luò)數(shù)據(jù)中的L個(gè)數(shù)據(jù)包為單位進(jìn)行時(shí)間窗劃分,L個(gè)數(shù)據(jù)包定義為g,定義各窗口的數(shù)據(jù)包為“單位流”;2)由此一來(lái),信息熵的統(tǒng)計(jì)可基于單位流的所有特征屬性進(jìn)行求取。
定義單位時(shí)間內(nèi)網(wǎng)絡(luò)數(shù)據(jù)的特征屬性為Ri,λi為Ri取值的種類數(shù)量,采用nj表示特征屬性第j種取值在單位時(shí)間內(nèi)網(wǎng)絡(luò)數(shù)據(jù)流的數(shù)量,基于上述變量計(jì)算此刻數(shù)據(jù)的信息熵如公式(2)所示:
(2)
以上步驟完成了對(duì)網(wǎng)絡(luò)數(shù)據(jù)流信息熵的量化過程,隨后基于K-mean聚類算法進(jìn)行聚類分析構(gòu)建K-mean聚類模型。采集網(wǎng)絡(luò)數(shù)據(jù)作為類標(biāo)樣本,種類為k個(gè),即聚類算法的k值。每個(gè)類原始簇類中心即為該類全部樣本的均值?;诰徒峙湓瓌t完成樣本劃分工作,聚類質(zhì)量則通過全部對(duì)象與聚類中心誤差平方和θ進(jìn)行計(jì)算,樣本聚類質(zhì)量與θ成反比,即高質(zhì)量的聚類結(jié)果往往θ較小。采用公式(3)計(jì)算θ值:
(3)
聚類步驟中需要將k值加1,繼續(xù)執(zhí)行聚類操作選取新簇的中心。隨機(jī)在沒有進(jìn)行標(biāo)記的樣本數(shù)據(jù)中選擇一點(diǎn)命名為α,作為新簇中心,β也為樣本中的一點(diǎn),以α點(diǎn)、β點(diǎn)為依據(jù)可劃分出新的具有中心點(diǎn)的簇,即α點(diǎn)需將β點(diǎn)距離當(dāng)前簇較遠(yuǎn)的中心視為具有中心點(diǎn)的簇,β點(diǎn)與中心點(diǎn)的距離為縮小的趨勢(shì),此時(shí)距離計(jì)算方法如公式(4)所示,取該公式的最大值:
(4)
然后基于就近原則分配全部樣本并求取各個(gè)類的聚類質(zhì)量。當(dāng)k個(gè)簇聚類質(zhì)量大于k-1個(gè)簇的聚類質(zhì)量,將k值加1繼續(xù)執(zhí)行下面的操作;當(dāng)k個(gè)簇聚類質(zhì)量小于或等于k-1個(gè)簇的聚類質(zhì)量,將k值減1,執(zhí)行以下操作:判斷全部簇中是否存在孤立簇,孤立簇是只包含新增的簇中心點(diǎn)[6]。存在孤立簇時(shí)需刪除其中心點(diǎn)集以及沒有標(biāo)記的樣本,將k值減1,并從計(jì)算聚類中心誤差平方和步驟開始執(zhí)行后續(xù)操作;不存在孤立點(diǎn)時(shí),將新k值和原始聚類中心點(diǎn)作為算法的初始輸入,重復(fù)更新聚類中心,算法聚類中心合理收斂后終止計(jì)算。
K-mean聚類算法成功收斂后即可得到訓(xùn)練完成的異常數(shù)據(jù)識(shí)別模型,將Spark環(huán)境中實(shí)時(shí)采集的網(wǎng)絡(luò)數(shù)據(jù)作為樣本輸入模型即可辨別數(shù)據(jù)是否存在異常,監(jiān)測(cè)其安全性。
借助Intellij IDEA環(huán)境搭建數(shù)據(jù)安全監(jiān)測(cè)實(shí)驗(yàn)平臺(tái),以驗(yàn)證提出的Spark環(huán)境中網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)的性能。實(shí)驗(yàn)平臺(tái)共設(shè)置6個(gè)服務(wù)器節(jié)點(diǎn),1臺(tái)為主節(jié)點(diǎn),其余為從節(jié)點(diǎn);單個(gè)節(jié)點(diǎn)內(nèi)存為16GB;實(shí)驗(yàn)使用的Hadoop版本、Spark版本分別為2.6.4和2.1.1。實(shí)驗(yàn)中引入基于特征統(tǒng)計(jì)的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法、基于時(shí)間相關(guān)性的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法作為對(duì)比,以檢驗(yàn)該方法的性能。
在Spark環(huán)境中每隔20min采集一次數(shù)據(jù)作為測(cè)試樣本數(shù)據(jù),2小時(shí)內(nèi)共采集6個(gè)樣本數(shù)據(jù)集,統(tǒng)計(jì)3種方法在每個(gè)樣本數(shù)據(jù)上的安全監(jiān)測(cè)結(jié)果,計(jì)算其誤檢率如圖3所示。
圖3 3種方法的誤檢率統(tǒng)計(jì)
表1 3種算法安全監(jiān)測(cè)中CPU占用率統(tǒng)計(jì)/%
結(jié)合圖3與表1數(shù)據(jù)分析3種方法進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)的性能,其中,本文方法無(wú)論在誤檢率還是CPU占用率方面均取得了優(yōu)異的測(cè)試成績(jī),6次數(shù)據(jù)安全測(cè)試中誤檢率均保持在1%左右,而基于特征統(tǒng)計(jì)的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法、基于時(shí)間相關(guān)性的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法誤檢率均超過10%,最高分別達(dá)到18%和13.5%。Spark環(huán)境中網(wǎng)絡(luò)數(shù)據(jù)規(guī)模龐大,本文方法CPU占用率保持在8.9%~12.4%之間,相對(duì)穩(wěn)定;而基于特征統(tǒng)計(jì)的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法、基于時(shí)間相關(guān)性的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法均呈現(xiàn)CPU占用率過高且波動(dòng)較大特征,相比之下,本文方法對(duì)計(jì)算環(huán)境的負(fù)載依賴較小。
提出一種適用于Spark環(huán)境的網(wǎng)絡(luò)數(shù)據(jù)安全監(jiān)測(cè)方法,該方法采用并行式計(jì)算策略布局K-mean聚類模型,模型挖掘網(wǎng)絡(luò)數(shù)據(jù)異常信息后其結(jié)果進(jìn)行統(tǒng)一整合。這種并行式K-mean聚類算法在同一時(shí)間段內(nèi)完成多個(gè)聚類任務(wù),能夠高效率挖掘數(shù)據(jù)異常情況、監(jiān)測(cè)數(shù)據(jù)的安全;該方法由于在數(shù)據(jù)采集階段使用了Netsniff-ng抓包工具,大幅度降低計(jì)算機(jī)運(yùn)行環(huán)境的CPU開銷,所以在實(shí)驗(yàn)分析取得了相對(duì)優(yōu)異的CPU占用率成績(jī),總體而言對(duì)計(jì)算環(huán)境的負(fù)載依賴較小。