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