李 昊,郝 寬,姜 偉
(哈爾濱師范大學(xué) 計(jì)算機(jī)科學(xué)與信息工程學(xué)院,黑龍江 哈爾濱 150025)
隨著互聯(lián)網(wǎng)及網(wǎng)絡(luò)應(yīng)用的飛速發(fā)展,人們的生產(chǎn)生活已經(jīng)深度依賴網(wǎng)絡(luò),人們從互聯(lián)網(wǎng)中獲取信息也變得極為便利,這就難以避免海量的數(shù)據(jù)信息通過網(wǎng)絡(luò)進(jìn)行傳播。互聯(lián)網(wǎng)提高了人們的生活生產(chǎn)效率與質(zhì)量,但同時(shí),一系列網(wǎng)絡(luò)安全問題也相應(yīng)產(chǎn)生,比如網(wǎng)絡(luò)入侵,不論是個(gè)人、企業(yè),還是政府、軍隊(duì)的信息,一旦被不法分子竊取、篡改,極有可能造成無法彌補(bǔ)的損失。
傳統(tǒng)的基于防火墻等的靜態(tài)安全防范技術(shù)已然無法滿足當(dāng)前網(wǎng)絡(luò)安全的需求,為了更好地應(yīng)對(duì)當(dāng)前的網(wǎng)絡(luò)安全問題,現(xiàn)在更多應(yīng)用主動(dòng)防御的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)。但是隨著網(wǎng)絡(luò)攻擊智能化,網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)也面臨著巨大的挑戰(zhàn),需要對(duì)入侵檢測(cè)技術(shù)進(jìn)行不斷研究。
在網(wǎng)絡(luò)流量中,惡意的網(wǎng)絡(luò)攻擊往往隱藏在大量的正常行為中。它在網(wǎng)絡(luò)流量中表現(xiàn)出高度的隱身性和模糊性,使得網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)難以保證檢測(cè)的準(zhǔn)確性和及時(shí)性。研究機(jī)器學(xué)習(xí)和深度學(xué)習(xí)在入侵檢測(cè)問題上的應(yīng)用,提出了一種結(jié)合GRU網(wǎng)絡(luò)和K-means的算法模型進(jìn)行入侵行為檢測(cè)。首先,利用GRU網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)行為進(jìn)行信息特征提取,實(shí)現(xiàn)全面有效的特征學(xué)習(xí)。其次,使用K-means算法對(duì)前置輸入進(jìn)行聚類,對(duì)于那些暫時(shí)無法進(jìn)行屬性判斷的流量行為,再次進(jìn)行特征提取后使用K-means算法進(jìn)行分類,有效減少傳統(tǒng)二分類入侵檢測(cè)對(duì)于暫時(shí)無法判斷的流量行為的誤判動(dòng)作。
CHO等[1]提出了門控循環(huán)單元(gated recurrentunit,GRU)。相比于長短期記憶網(wǎng)絡(luò)(LSTM,Long Short-Term Memory),GRU網(wǎng)絡(luò)具有更為簡(jiǎn)潔的模型,GRU中去除了細(xì)胞狀態(tài),有重置門和更新門兩個(gè)門限結(jié)構(gòu),重置門確定如何將前一時(shí)刻的記憶與新的輸入信息相結(jié)合,表示前一時(shí)刻信息的忽略程度,值越大代表忽略的信息程度越小。更新門代表前一時(shí)刻信息對(duì)當(dāng)前狀態(tài)的傾向程度,用于控制前一時(shí)刻的狀態(tài)信息被帶入到當(dāng)前狀態(tài)中的程度,值越大代表影響越大[2]。GRU結(jié)構(gòu)在多種場(chǎng)景下被證實(shí)有效,具有計(jì)算方便、訓(xùn)練速度更快的特點(diǎn),同時(shí)可以很好地將長距離的信息進(jìn)行依賴保存,有效解決梯度問題。循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)用于分析或預(yù)測(cè)順序數(shù)據(jù)[3],這使得它成為入侵檢測(cè)的一個(gè)可行的候選對(duì)象,因?yàn)榫W(wǎng)絡(luò)流量數(shù)據(jù)本質(zhì)上是順序的[3]:
上式中,zt代表更新門,rt代表重置門,tanh為雙曲正切函數(shù),σ為Sigmoid函數(shù),w為t時(shí)刻的權(quán)值矩陣。
基于這些特點(diǎn),本研究采用GRU網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 GRU網(wǎng)絡(luò)結(jié)構(gòu)圖
聚類算法一般分為劃分聚類和層次聚類,K-means算法是Macqueen在1967年提出的一種劃分聚類算法[4]。K-means算法是一種基于劃分的無監(jiān)督的聚類算法,利用數(shù)據(jù)對(duì)象間的距離作為相似性的評(píng)價(jià)指標(biāo)[5]。傳統(tǒng)的K-means算法如下:對(duì)給定包含n個(gè)對(duì)象的數(shù)據(jù)集x:x={x1,x2,x3,…,xn},其中每個(gè)對(duì)象都具有m個(gè)維度的屬性,依據(jù)對(duì)象間的相似性,最終將n個(gè)對(duì)象聚集到指定的k個(gè)類簇中,每個(gè)對(duì)象屬于且僅屬于一個(gè)聚簇類,這個(gè)對(duì)象到這個(gè)類簇中心距離為最小。
K-means算法的實(shí)現(xiàn)步驟。①初始化k個(gè)聚類中心:{C1,C2,C3,…,Ck},1 圖2 K-means算法流程圖 構(gòu)建的基于GRU網(wǎng)絡(luò)和K-means算法的入侵檢測(cè)方法,其整體流程主要包括兩大部分:一部分為預(yù)處理數(shù)據(jù),使用GRU網(wǎng)絡(luò)對(duì)數(shù)據(jù)特征進(jìn)行提取;另一部分為使用K-means算法對(duì)上步驟輸入的數(shù)據(jù)進(jìn)行聚類劃分。 在進(jìn)行特征提取之前,需要先對(duì)所選數(shù)據(jù)進(jìn)行預(yù)處理,在這個(gè)階段,主要工作是將數(shù)據(jù)集中的字符型特征使用One-hot進(jìn)行數(shù)值化轉(zhuǎn)換,再劃分訓(xùn)練集、測(cè)試集。采用Train_Test_Split()函數(shù)劃分?jǐn)?shù)據(jù)集來盡量平均劃分?jǐn)?shù)據(jù)樣本,減少人為主觀原因帶來的誤差。Train_Test_Split()是交叉驗(yàn)證中常用的函數(shù),對(duì)目標(biāo)數(shù)據(jù)集的劃分具有隨機(jī)的、按比例的功能,將目標(biāo)數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集(Train Data) 和測(cè)試數(shù)據(jù)集(Testdata)。 待檢測(cè)的網(wǎng)絡(luò)輸入數(shù)據(jù)復(fù)雜度一般較高,導(dǎo)致RNN網(wǎng)絡(luò)的結(jié)構(gòu)較為復(fù)雜,容易出現(xiàn)梯度消失等問題。在GRU的單元結(jié)構(gòu)中,無須考慮循環(huán)神經(jīng)網(wǎng)絡(luò)中的隱藏層的細(xì)胞狀態(tài),LSTM網(wǎng)絡(luò)中的輸入門和遺忘門被替代,減少了相應(yīng)網(wǎng)絡(luò)的參數(shù)數(shù)量,提高了模型收斂性能,降低了時(shí)間復(fù)雜度。同時(shí),網(wǎng)絡(luò)流量數(shù)據(jù)是具有時(shí)序特征的序列數(shù)據(jù),例如DDos攻擊,就是使用短時(shí)間內(nèi)對(duì)某服務(wù)大量訪問的手段達(dá)到使被攻擊服務(wù)不可用的目的,而GRU能對(duì)具有時(shí)序特征的數(shù)據(jù)進(jìn)行很好的處理。融合GRU網(wǎng)絡(luò)的部分主要對(duì)數(shù)據(jù)進(jìn)行特征提取及數(shù)據(jù)降維處理。主要步驟如下:①將上一層的輸入進(jìn)行整合;②對(duì)數(shù)據(jù)進(jìn)行長距離依賴特征提??;③將特征張量化后輸出;④對(duì)下一層邊界域中數(shù)據(jù)進(jìn)行處理(如圖3所示)。 圖3 GRU網(wǎng)絡(luò)特征提取示意圖 在真實(shí)的網(wǎng)絡(luò)環(huán)境中,每時(shí)每刻產(chǎn)生的數(shù)據(jù)流量都是巨大的,并且具有分布不均的特點(diǎn)。仿真實(shí)驗(yàn)使用的數(shù)據(jù)9數(shù)據(jù)集中冗余和重復(fù)的樣本,樣本分布較KDDCup 99更合理。KDD99產(chǎn)出于1999年第三屆國集為NSLKDD,NSL-KDD是KDDCup 99的改進(jìn)版本[6],主要是消除了KDDCup 9際知識(shí)發(fā)現(xiàn)和數(shù)據(jù)挖掘工具大賽。此數(shù)據(jù)集共有大約500萬條數(shù)據(jù),共收集了9個(gè)星期。 本實(shí)驗(yàn)使用的機(jī)器配置如下。處理器:11th Gen Intel(R)Core(TM)i5-11320H@3.20 GHz;內(nèi)存:16.0 GB(單通道);硬盤:512GB(SSD)。 軟件環(huán)境及版本如下。操作系統(tǒng):Windows 10家庭中文版21H2;集成開發(fā)環(huán)境:PyCharm 2021.1;編程語言:Python 3.6。 實(shí)驗(yàn)評(píng)價(jià)指標(biāo)是入侵檢測(cè)中常用的評(píng)價(jià)指標(biāo),分別為:準(zhǔn)確率(Accuracy)、召回率(Recal)l、精確率(Precision)、F1 (F1-score)。 準(zhǔn)確率(Accuracy)表示模型對(duì)給定樣本判別能力: 召回率(Recall)表示真實(shí)攻擊樣本在所有攻擊樣本中的比例: 精確率(Precision)表示真實(shí)攻擊樣本在被預(yù)測(cè)為攻擊樣本中的比例: F1(F1-score)表示整體指標(biāo)及Recall與Precision兩項(xiàng)指標(biāo): 以上指標(biāo)中,TP為預(yù)測(cè)為非入侵的正樣本;TN為預(yù)測(cè)為入侵的負(fù)樣;FN為預(yù)測(cè)為入侵的正樣本;FP為預(yù)測(cè)為非入侵的負(fù)樣本。 對(duì)同一數(shù)據(jù)集,用隨機(jī)函數(shù)選出訓(xùn)練數(shù)據(jù)集,進(jìn)行5次共得到5組隨機(jī)訓(xùn)練集,在每組數(shù)據(jù)集上進(jìn)行3輪訓(xùn)練,取平均值,各指標(biāo)見表1。 表1 不同訓(xùn)練集模型檢測(cè)效果 除了已提出的模型,作為對(duì)照實(shí)驗(yàn),使用同一數(shù)據(jù)集在不同模型進(jìn)行相關(guān)的實(shí)驗(yàn),結(jié)果對(duì)比見表2。 表2 不同模型檢測(cè)效果 通過橫向和縱向?qū)Ρ?,可以得出算法模型具有一定的?yōu)勢(shì)。但是在實(shí)驗(yàn)過程中也發(fā)現(xiàn),對(duì)于流量相對(duì)較小的攻擊,無法充分學(xué)習(xí)其特征,從而導(dǎo)致檢測(cè)結(jié)果并不理想。在實(shí)際的環(huán)境中,攻擊行為越來越隱蔽且方式新奇,對(duì)于如何更好地及時(shí)檢測(cè)出這種攻擊行為,提高模型泛化能力仍是未來研究的重點(diǎn)。 機(jī)器學(xué)習(xí)與深度學(xué)習(xí)逐漸和入侵檢測(cè)領(lǐng)域交叉結(jié)合,取得了較好的效果。對(duì)入侵檢測(cè)進(jìn)行了深入研究與設(shè)計(jì),在神經(jīng)網(wǎng)絡(luò)方面選取了結(jié)構(gòu)更為簡(jiǎn)潔的GRU網(wǎng)絡(luò),提出了一種結(jié)合GRU網(wǎng)絡(luò)及K-means算法的混合入侵檢測(cè)方法,在兼顧檢測(cè)效率、精度及可靠性的同時(shí),盡量控制成本。實(shí)驗(yàn)結(jié)果表明,提出的方法為入侵檢測(cè)方法模型拓展了思路,具有一定的可行性,值得繼續(xù)深入研究。2 基于K-means算法的入侵檢測(cè)模型與方法
2.1 入侵檢測(cè)算法整體流程
2.2 基于GRU網(wǎng)絡(luò)的特征提取
3 實(shí)驗(yàn)與結(jié)果分析
3.1 數(shù)據(jù)集
3.2 實(shí)驗(yàn)環(huán)境
3.3 評(píng)價(jià)指標(biāo)
3.4 實(shí)驗(yàn)分析與結(jié)果
4 結(jié)語