郭小靜 李隘優(yōu)
(閩西職業(yè)技術(shù)學(xué)院, 福建 龍巖 364021)
在信息技術(shù)、通信技術(shù)和計(jì)算機(jī)科學(xué)技術(shù)的推動(dòng)下,互聯(lián)網(wǎng)已經(jīng)覆蓋了社會(huì)生活的方方面面,對(duì)經(jīng)濟(jì)、教育、科技、醫(yī)療、軍事等諸多領(lǐng)域都產(chǎn)生了極其深遠(yuǎn)的影響。隨著網(wǎng)絡(luò)開放程度的提高,局域網(wǎng)所面臨的網(wǎng)絡(luò)攻擊風(fēng)險(xiǎn)也在同步提升[1],局域網(wǎng)范圍內(nèi)出現(xiàn)異常流量,是網(wǎng)絡(luò)異常或遭受攻擊的重要信號(hào)之一[2]。與正常流量相比,局域網(wǎng)異常流量在流量形式上發(fā)生了改變,通過對(duì)流量異常變化的檢測(cè),可以識(shí)別出網(wǎng)絡(luò)攻擊是否存在,及具體的攻擊程度和攻擊類型[3]。惡意的網(wǎng)絡(luò)攻擊,如DDoS攻擊[4]、規(guī)模較大的端口攻擊等,會(huì)導(dǎo)致局域網(wǎng)系統(tǒng)漏洞的出現(xiàn)[5],或出現(xiàn)局部網(wǎng)絡(luò)的擁塞現(xiàn)象,進(jìn)而引發(fā)局域網(wǎng)流量的異常。
現(xiàn)有局域網(wǎng)異常流量檢測(cè)方法主要包括基于統(tǒng)計(jì)數(shù)據(jù)的檢測(cè)方法[6]、基于聚類分析的檢測(cè)方法[7]。其中統(tǒng)計(jì)數(shù)據(jù)檢測(cè)以經(jīng)驗(yàn)數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)模型的建立為基礎(chǔ),檢測(cè)局域網(wǎng)的流量是否出現(xiàn)了異常,此方法容易實(shí)現(xiàn)且已成熟穩(wěn)定,但檢測(cè)的精度較低;而聚類檢測(cè)不依賴于任何的經(jīng)驗(yàn)數(shù)據(jù),通過判斷流量數(shù)據(jù)點(diǎn)與聚類中心點(diǎn)的距離[8],即可識(shí)別出進(jìn)入局域網(wǎng)的流量是否異常,與統(tǒng)計(jì)數(shù)據(jù)模型相比聚類算法的檢測(cè)精度有所改善,但檢測(cè)效率低,耗時(shí)較長。為綜合現(xiàn)有檢測(cè)方法的優(yōu)勢(shì),研究提出了一種基于全連接循環(huán)神經(jīng)網(wǎng)絡(luò)的異常流量檢測(cè)技術(shù),神經(jīng)網(wǎng)絡(luò)作為一種模擬人腦工作原理的新型信息處理模型,在處理異常流量數(shù)據(jù)方面,與傳統(tǒng)檢測(cè)方法相比具有更高的效率和準(zhǔn)確率,而全連接循環(huán)神經(jīng)網(wǎng)絡(luò)是對(duì)經(jīng)典神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化與改進(jìn),可以更進(jìn)一步地保護(hù)局域網(wǎng)的數(shù)據(jù)安全。
循環(huán)神經(jīng)網(wǎng)絡(luò)是一種特殊結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),能夠滿足大量序列數(shù)據(jù)的同時(shí)輸入、輸出及并行處理的要求。循環(huán)神經(jīng)網(wǎng)絡(luò)的神經(jīng)元具有良好的連續(xù)性[9],不同時(shí)刻進(jìn)入神經(jīng)網(wǎng)絡(luò)系統(tǒng)通過權(quán)重建立時(shí)間上的先后聯(lián)系,提升數(shù)據(jù)之間的關(guān)聯(lián)性。而全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型在中間隱含層之間也建立了相應(yīng)的聯(lián)系,以增強(qiáng)神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)處理能力和邏輯分析能力。全連接循環(huán)神經(jīng)網(wǎng)絡(luò)的神經(jīng)元在相鄰時(shí)刻狀態(tài)見圖1。
圖1中St和St+1分別為t時(shí)刻和t+1時(shí)刻神經(jīng)元的狀態(tài);xt、xt+1及ut、ut+1分別為t時(shí)刻和t+1時(shí)刻神經(jīng)元輸入數(shù)據(jù)及輸入權(quán)重比例;yt、yt+1及vt、vt+1分別為t時(shí)刻和t+1時(shí)刻神經(jīng)元輸出數(shù)據(jù)及輸出權(quán)重比例;τt、τt+1分別為全連接循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)元St狀態(tài)和St+1狀態(tài)下對(duì)應(yīng)的激活函數(shù)[10];wt-1、wt、wt+1是連接t-1時(shí)刻、t時(shí)刻和t+1時(shí)刻的權(quán)重比例。狀態(tài)分析結(jié)果表明,一個(gè)神經(jīng)元的數(shù)據(jù)處理會(huì)受到相鄰時(shí)刻的狀態(tài)、激活函數(shù)類型、權(quán)重比例的影響,以St+1為例:
圖1 全連接循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)元相鄰時(shí)刻狀態(tài)圖
St+1=τt+1(wt+1×St+yt+1×xt+1)
(1)
進(jìn)入全連接循環(huán)神經(jīng)網(wǎng)絡(luò)的待檢測(cè)數(shù)據(jù)可視為一組序列數(shù)據(jù),基于時(shí)序分析的視角在t時(shí)刻輸入數(shù)據(jù)xt視為一種隨機(jī)過程滿足條件{xt:t=0,±1,±2,…}。基于自回歸模型分析和描述t時(shí)刻時(shí)間序列的輸出過程:
yt=c+∑utxt+εt
(2)
式中:c為神經(jīng)網(wǎng)絡(luò)模型的常數(shù)項(xiàng);εt為隨機(jī)誤差項(xiàng)。
對(duì)于全連接循環(huán)神經(jīng)網(wǎng)絡(luò)而言,輸入數(shù)據(jù)訓(xùn)練是核心環(huán)節(jié),但在數(shù)據(jù)訓(xùn)練中訓(xùn)練與學(xué)習(xí)的損失率會(huì)不斷提高;同時(shí)受到循環(huán)神經(jīng)網(wǎng)絡(luò)層數(shù)和神經(jīng)元數(shù)量的影響,容易導(dǎo)致模型梯度出現(xiàn)損失甚至消失[11]。為此,通過MBGD算法(小批量梯度下降)對(duì)模型的損失和收斂方向進(jìn)行微調(diào),改善由于損失率提升給模型帶來的負(fù)面影響。全連接循環(huán)神經(jīng)網(wǎng)絡(luò)在應(yīng)對(duì)大規(guī)模入侵檢測(cè)數(shù)據(jù)時(shí),由于梯度損失和模型收斂問題,訓(xùn)練效率會(huì)出現(xiàn)降低的趨勢(shì),MBGD算法的全局梯度降低速度快,并能夠?qū)崿F(xiàn)訓(xùn)練過程的在線更新,避免出現(xiàn)過多的模型訓(xùn)練次數(shù)。同時(shí),將動(dòng)量引入MBGD算法,動(dòng)量參與梯度優(yōu)化時(shí),伴隨著動(dòng)量的增加,全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的震蕩頻率會(huì)得到更好的抑制,同時(shí)循環(huán)神經(jīng)網(wǎng)絡(luò)模型的參數(shù)選擇難度和復(fù)雜度都得到控制和降低。當(dāng)待訓(xùn)練和待檢測(cè)的原始入侵檢測(cè)數(shù)據(jù)規(guī)模持續(xù)增大時(shí),經(jīng)過梯度優(yōu)化的全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)處理性能和處理效率不會(huì)受到影響。
在針對(duì)局域網(wǎng)的異常流量檢測(cè)過程中,如果輸入的數(shù)據(jù)集規(guī)模較大、結(jié)構(gòu)復(fù)雜,為避免神經(jīng)網(wǎng)絡(luò)模型中間隱含層復(fù)雜度過高,使用GRU(門控循環(huán)單元)代替普通的神經(jīng)元,可以降低全連接循環(huán)神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,減少中間隱含層的數(shù)量,與MBGD算法共同降低神經(jīng)網(wǎng)絡(luò)模型的損失,GRU的基本結(jié)構(gòu)見圖2。
圖2 GRU的基本結(jié)構(gòu)
圖2中,S0、S1和S2分別表示中間的計(jì)算結(jié)果,在全連接循環(huán)神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)模型包含了來自多個(gè)方向的數(shù)據(jù)輸入,令輸入數(shù)據(jù)的維度為n,輸入項(xiàng)xt表示為:
xt={xt1,xt2,…,xtn}
(3)
將全連接循環(huán)神經(jīng)網(wǎng)絡(luò)隱含層的第一層和最后一層的神經(jīng)元數(shù)量同步設(shè)定為n,確保循環(huán)神經(jīng)網(wǎng)絡(luò)的神經(jīng)元達(dá)到全連接的狀態(tài),見圖3。
圖3 全連接循環(huán)神經(jīng)網(wǎng)絡(luò)隱含層連接狀態(tài)
與普通神經(jīng)網(wǎng)絡(luò)模型不同,全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型包括來自兩個(gè)方向的輸入,即當(dāng)前狀態(tài)下的數(shù)據(jù)輸入和上一狀態(tài)下的數(shù)據(jù)輸入。當(dāng)輸入數(shù)據(jù)規(guī)模較大時(shí),全連接循環(huán)神經(jīng)網(wǎng)絡(luò)在時(shí)間方向展開,具備強(qiáng)大的數(shù)據(jù)同步和并行處理能力。如果中間隱含層過于復(fù)雜導(dǎo)致模型梯度出現(xiàn)過快損失,此時(shí)使用GRU單元替代普通的神經(jīng)元,降低全連接循環(huán)神經(jīng)網(wǎng)絡(luò)中間隱含層的復(fù)雜度,保證模型的數(shù)據(jù)處理性能不降低。全連接循環(huán)神經(jīng)網(wǎng)絡(luò)當(dāng)前神經(jīng)元的計(jì)算過程依賴于上一時(shí)刻的計(jì)算結(jié)果,如果將數(shù)據(jù)xt輸入循環(huán)神經(jīng)網(wǎng)絡(luò)模型,當(dāng)前神經(jīng)元的狀態(tài)St+1也會(huì)受到上一神經(jīng)元狀態(tài)St的影響。中間隱含層的每個(gè)神經(jīng)元或GRU單元在t時(shí)刻和t+1時(shí)刻都對(duì)應(yīng)一個(gè)輸出,但只有最終的輸入結(jié)果yt+1才能作為最終的輸出結(jié)果,表示為:
yt+1=τt+1(ζ,…,xt,xt+1)
(4)
式中:τt+1表示t+1時(shí)刻全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的激活函數(shù);ζ表示模型參數(shù)。
(5)
式中:μ和σ分別為輸入數(shù)據(jù)的均值和標(biāo)準(zhǔn)差。
在輸入標(biāo)準(zhǔn)化數(shù)據(jù)訓(xùn)練中,隨著數(shù)據(jù)規(guī)模的增大,模型的梯度損失增加,用損失函數(shù)表示,損失函數(shù)的類別有多種,在計(jì)算模型的代價(jià)損失時(shí)選擇與標(biāo)準(zhǔn)化處理數(shù)據(jù)處理方法相匹配的均方誤差值函數(shù)mset+1(y):
(6)
(7)
則在t+1時(shí)刻修正后的輸入表示為:
(8)
在全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的實(shí)際應(yīng)用中,流量異常檢測(cè)的過程是連續(xù)的,檢測(cè)的整個(gè)過程類似于滑動(dòng)窗口,在數(shù)據(jù)訓(xùn)練的時(shí)間上是接續(xù)的,且在計(jì)算過程中中間隱含層的位置也存在變化。異常流量檢測(cè)基于對(duì)進(jìn)入模型的全部數(shù)據(jù)的訓(xùn)練展開,全連接循環(huán)模式下,t+1時(shí)刻的數(shù)據(jù)規(guī)模和狀態(tài),以t時(shí)刻的檢測(cè)狀態(tài)為基礎(chǔ),通過測(cè)試預(yù)測(cè)值和真實(shí)值之間的差距計(jì)算實(shí)際距離存在的偏差,進(jìn)而識(shí)別出進(jìn)入神經(jīng)網(wǎng)絡(luò)模型數(shù)據(jù)流量是否異常。數(shù)據(jù)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)環(huán)節(jié),無法直接反應(yīng)出系統(tǒng)的當(dāng)前狀態(tài),但能夠以預(yù)測(cè)誤差εt+1的方式表示真實(shí)值和預(yù)測(cè)值之間的偏差:
(9)
基于全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的局域網(wǎng)異常流量檢測(cè)流程如圖4所示。
圖4 基于局域網(wǎng)異常流量檢測(cè)流程
步驟1:基于歷史經(jīng)驗(yàn)數(shù)據(jù)和系統(tǒng)采集到的相關(guān)信息,預(yù)先確定全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型中間隱含層的規(guī)模。神經(jīng)網(wǎng)絡(luò)的規(guī)模過大會(huì)帶來硬件資源的過度占用。
步驟2:輸入標(biāo)準(zhǔn)化處理后,基于小批量梯度法調(diào)整模型的損失和收斂方向。根據(jù)實(shí)際進(jìn)入模型的數(shù)據(jù)規(guī)模確定全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型中間層數(shù)量,如果數(shù)據(jù)規(guī)模大或復(fù)雜,引入GRU替代普通的神經(jīng)元,損失函數(shù)值的波動(dòng)范圍會(huì)影響數(shù)據(jù)訓(xùn)練的精度。
步驟3:確定激活函數(shù)、模型參數(shù)及控制距離閾值,各種參數(shù)的選擇與中間隱含層的規(guī)模相關(guān),也與GRU單元的數(shù)量有關(guān),因此基于目標(biāo)值的優(yōu)化問題是一種迭代更新的問題,直到損失函數(shù)的均值趨于穩(wěn)定。
在小區(qū)門前,杜一朵碰見了一個(gè)熟人。熟人問她一大早忙什么去?杜一朵隨口說,打牌去。都曉得杜一朵愛打牌,且打得一手好牌。熟人也沒多想,點(diǎn)點(diǎn)頭就過去了。后來熟人又遇見一個(gè)熟人,熟人慣性地問,你也打牌去?那人兩眼通紅大著嗓門說,清晨八早打個(gè)屁!打炮!
步驟4:當(dāng)損失函數(shù)的均值趨于穩(wěn)定時(shí),開始訓(xùn)練輸入數(shù)據(jù),訓(xùn)練中損失函數(shù)的值會(huì)出現(xiàn)波動(dòng),通過調(diào)整與閾值的差距保持損失值在較低的區(qū)間。最后將預(yù)測(cè)結(jié)果與目標(biāo)值作對(duì)比,判斷系統(tǒng)的狀態(tài)及進(jìn)入系統(tǒng)的數(shù)據(jù)是否存在異常。
實(shí)驗(yàn)數(shù)據(jù)集:實(shí)驗(yàn)用的數(shù)據(jù)集選用DBLP Datasets公開數(shù)據(jù)集,該實(shí)驗(yàn)用的數(shù)據(jù)集中包含了PUT、PSSO和GET等3種類型的數(shù)據(jù)。實(shí)驗(yàn)數(shù)據(jù)集中的正常請(qǐng)求25 000個(gè),異常請(qǐng)求15 000個(gè)。數(shù)據(jù)集中的異常流量攻擊類型有SQL注入、DDoS攻擊、CRLF注入、腳本病毒和參數(shù)異常篡改等5種。
實(shí)驗(yàn)環(huán)境:在Mininet局域網(wǎng)平臺(tái)內(nèi)布置了1臺(tái)控制器、2臺(tái)交換機(jī)和5臺(tái)主機(jī),異常流量檢測(cè)實(shí)驗(yàn)的硬件拓?fù)浣Y(jié)構(gòu)見圖5。
圖5 局域網(wǎng)絡(luò)異常流量檢測(cè)硬件的拓?fù)浣Y(jié)構(gòu)
實(shí)驗(yàn)操作選用兼容性更好的Linux系統(tǒng),抓包工具為wireshark,系統(tǒng)語言選擇python 3.5,此外系統(tǒng)執(zhí)行python腳本。
首先檢驗(yàn)全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型在不同神經(jīng)元比重條件下?lián)p失函數(shù)值的變化,神經(jīng)元比重越高表明系統(tǒng)的負(fù)荷越高,面臨的數(shù)據(jù)流量處理壓力越大,全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的損失函數(shù)實(shí)際值與損失函數(shù)目標(biāo)值的變化情況見圖6。
圖6 全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的損失函數(shù)值變化
隨著輸入神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)集規(guī)模不斷增大,打開的中間隱含層增加,參與工作的神經(jīng)元比例也在增加。此時(shí)為了避免模型系統(tǒng)的負(fù)載過高導(dǎo)致?lián)p失函數(shù)值增加,全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型會(huì)使用GRU單元替代部分神經(jīng)元,降低模型的總體資源占用,同時(shí)調(diào)整均方誤差的閾值范圍,確保實(shí)際的損失函數(shù)值曲線與其目標(biāo)值曲線不產(chǎn)生過大的偏差,進(jìn)而保證了模型的工作效率和檢測(cè)率。
而在經(jīng)典循環(huán)神經(jīng)網(wǎng)絡(luò)模型控制下,實(shí)際的損失函數(shù)值曲線與其目標(biāo)值曲線仍有較大的偏差,隨著參與工作的神經(jīng)元數(shù)量的增加,模型的損失函數(shù)值會(huì)不斷增加,見圖7。
圖7 經(jīng)典循環(huán)神經(jīng)網(wǎng)絡(luò)模型的損失函數(shù)值變化曲線
(10)
(11)
(12)
式中:TP為異常流量被正確檢測(cè)出的比例;FN為異常數(shù)據(jù)被錯(cuò)誤檢測(cè)出的比例;TN為正常數(shù)據(jù)被正確檢測(cè)出的比例;FP為正常數(shù)據(jù)被錯(cuò)誤檢測(cè)出的比例。
將包括正常請(qǐng)求和異常請(qǐng)求在內(nèi)的一共40 000個(gè)數(shù)據(jù)隨機(jī)分為10個(gè)數(shù)據(jù)組,檢測(cè)全連接循環(huán)神經(jīng)網(wǎng)絡(luò)檢測(cè)算法的DR、FAR及FAR指標(biāo)值的分布情況,結(jié)果見表1。
表1 全連接循環(huán)神經(jīng)網(wǎng)絡(luò)檢測(cè)算法性能指標(biāo)值
同時(shí)對(duì)比基于統(tǒng)計(jì)數(shù)據(jù)的異常流量檢測(cè)算法和基于聚類分析的檢測(cè)算法的3個(gè)指標(biāo)值的分布情況,結(jié)果見表2和表3。
表2 基于統(tǒng)計(jì)數(shù)據(jù)的異常流量檢測(cè)算法性能指標(biāo)值
表3 基于聚類分析的異常流量檢測(cè)算法性能指標(biāo)值
統(tǒng)計(jì)數(shù)據(jù)結(jié)果顯示,提出的全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型的檢測(cè)率DR、假陽性率FAR和檢測(cè)精度ACC指標(biāo)平均值,明顯優(yōu)于統(tǒng)計(jì)數(shù)據(jù)監(jiān)測(cè)算法和聚類分析檢測(cè)算法,具有更好的局域網(wǎng)異常流量檢測(cè)性能。
通過對(duì)局域網(wǎng)異常流量的判斷,能夠檢測(cè)出局域網(wǎng)是否遭受到了攻擊。神經(jīng)網(wǎng)絡(luò)算法能夠有效處理大規(guī)模的入侵?jǐn)?shù)據(jù),在經(jīng)典神經(jīng)網(wǎng)絡(luò)算法的基礎(chǔ)上,設(shè)計(jì)了一種全連接循環(huán)神經(jīng)網(wǎng)絡(luò)模型,提升隱含層的數(shù)據(jù)計(jì)算能力。同時(shí)為了更好地控制模型的梯度損失,基于函數(shù)損失實(shí)際值和目標(biāo)值之間的均方誤差設(shè)定距離閾值,均衡模型的資源占用與隱含層的總體規(guī)模。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)模型的檢測(cè)率、假陽性率和檢測(cè)精度指標(biāo),都要明顯優(yōu)于基于統(tǒng)計(jì)數(shù)據(jù)的異常流量檢測(cè)算法和基于聚類分析的異常流量檢測(cè)算法。