王文濤,湯婕,王嘉鑫
(中南民族大學 計算機科學學院&湖北省制造企業(yè)智能管理工程技術研究中心,武漢 430074)
信息時代下,網絡與信息安全的可靠性愈發(fā)的得到大家的重視,入侵檢測系統(tǒng)(Intrusion Detection System,IDS)被公認為是防火墻后的第二道網絡安全閘門,在網絡信息安全領域發(fā)揮著重要的作用.IDS根據輸入數據的來源可分為:基于主機的入侵檢測系統(tǒng)(Host Intrusion Detection System,HIDS)和基于網絡的入侵檢測系統(tǒng)(Net Intrusion Detection System,NIDS)[1],以下將主要討論NIDS的入侵檢測.
現階段NIDS分為兩種:誤用檢測(Misuse detection)系統(tǒng)和異常檢測(Anomaly detection)系統(tǒng)[2].誤用檢測系統(tǒng)是基于已知特征和模式的知識來檢測攻擊,這些特征和模式可以統(tǒng)稱為signature[3].但隨著網絡傳播速度不斷提高,數據維度急劇增加,傳統(tǒng)入侵檢測系統(tǒng)無法及時提取有用屬性并做出檢測判決,造成了誤警率高、檢測率低的問題[4].
將機器學習應用到NIDS已成為近年來網絡安全領域的研究熱點.余等[5]研究了融合粒子群算法和支持向量機的網絡入侵檢測技術.前者通過采用粒子群優(yōu)化算法確定懲罰參數C和核寬度參數,排除特征集噪聲干擾,優(yōu)化了支持向量機迭代過程.任等[6]利用K近鄰離群點檢測算法,先將大量數據集分離出小規(guī)模且高質量的訓練集,再通過多層次的隨機森林分類器,實驗發(fā)現該方法可以有效檢測Probe攻擊.
現實的網絡流量數據存在大量冗余特征,對冗余特征進行分析通常會占用大量內存和計算資源[7].因此,對網絡數據進行特征提取是構建有效模型的關鍵.此外,張等[8]研究發(fā)現對大量的特征訓練會導致分類算法對訓練樣本產生過擬合,難以泛化到新樣本.近年來,深度學習(Deep Learning,DL)的出現為解決機器學習的局限性提供了新的思路.
目前深度學習在NIDS分類算法主要包括5種:深度神經網絡(Deep Neural Networks,DNN)、卷積神經網絡(Convolutional Neural Networks,CNN)、循環(huán)神經網絡(Recurrent Neural Network,RNN)、深度信念網絡(Deep Belief Network,DBN)和自編碼器(Autoencoder,AE)[9].之前的大部分工作都忽略了時間維度對檢測性能的影響.針對該問題本研究在深度學習模型上選取稀疏自動編碼器(Sparse Autoencoder,SAE)、長短時記憶網絡(Long Short-Term Memory,LSTM)來構建入侵檢測系統(tǒng)分類器.具體研究工作如下:
(1)基于UNSW-NB15數據集的包特性聚成4類特征:時間特征、內容特征、基本特征、額外生成特征.其次運用特征工程的思想,對特征進行排序:簇間按照隨機森林重要性排序,簇內特征計算與分類信息的相關性并設定相關性閾值.在排序后的特征簇內依次選出大于閾值的重要特征,剩余特征則按照先簇間重要性、后簇內相關性的規(guī)則排序,最終得到全部特征排序,并選出表現較優(yōu)的前13個特征.
(2)設計基于SAE-LSTM的異常流量檢測模型,運用稀疏自動編碼器(SAE)重構數據,將重構后的數據輸入LSTM神經網絡分類器進行分類.
從20世紀90年代末起,入侵檢測技術的研究取得了飛速的發(fā)展,特別是在構建智能化方面取得了飛速的進步[10].入侵檢測研究重點是對入侵行為進行判斷,本質上是一個分類問題,然而網絡數據中大量冗余及不相關網絡特征會嚴重干擾IDS的分類過程.
早期研究發(fā)現,不同類型的攻擊和正常行為都與數據集的各個特征屬性存在一定程度的關聯性.因此尋找到最小的特征子集不僅能簡化運算,還能提升檢測率[11].由于IDS所需處理的數據量極大,系統(tǒng)中的冗余及無關特征會造成計算復雜度高、資源開銷大的問題.因此,特征選擇已成為入侵檢測系統(tǒng)的重要部分.2010年,錢[12]提出可從兩方面討論IDS特征選?。合嚓P性尺度及重要性度量尺度.前者是討論特征與分類標簽間的相關性度量,篩選出相關性高的特征;后者是將入侵檢測看作分類系統(tǒng),依據不同特征對目標分類的貢獻度來打分.學者在重要性度量方面有諸多研究:BREIMAN[13]提出通過隨機森林(Random Forest,RF)的置換特征重要性計算特征的重要性得分.陳[14]在CIC-IDS2017數據集上運用隨機森林進行特征選擇選取前30個特征進行機器學習.2020年,何[15]提出結合RF與特征遞歸消除的混合特征選擇方法.
不僅在入侵檢測領域,RF在醫(yī)學[16]、信息學[17]等方面也有廣泛運用.但RF問題在于:適用于低維的數據集特征選擇,當特征規(guī)模較大時,計算效率會大大降低,通常需引入前向或者后向算法來消除特征.
網絡攻擊在一段時間內是連續(xù)的,t+1時刻的數據特征和t時刻可能具有一定的相關性.RNN目前能夠很好地處理與時間相關的序列數據,但它在時間序列數據過長時,會出現梯度消失和梯度爆炸的問題[18].
2017年,WANG[19]等發(fā)現當正常流量數據包含異常攻擊流量數據時,會產生較高的重構誤差,導致較高的漏警率和誤警率.為了解決這一問題,他提出了一種多層的長短期記憶網絡(Long Short Time Memory,LSTM),用于從上下文中學習網絡數據的表示.同時使用LSTM的編碼器及解碼器的功能來重構數據.
YIESI等[20]利用簡單的自動編碼器和SVM分類器對入侵檢測系統(tǒng)的流量數據進行自動特征提取.研究者使用不同的激活函數和損失函數分別在KDD-99、NSL-KDD數據集上實驗,結果表明,激活函數為ReLU以及損失函數為交叉熵損失函數取得比其他函數更高的檢測精度.
入侵檢測技術已成為檢測網絡域中各種惡意活動的重要機制.基于前文的研究,提出一種結合聚類思想的隨機森林特征選擇以及SAE-LSTM分類器的入侵檢測模型.首先,對UNSW-NB15數據集按照數據包特性進行聚類,聚成基本特征、內容特征、時間特征、額外生成特征4大簇.保持其他簇不變逐一對同一特征簇的特征進行隨機森林置換,通過置換前后預測誤差大小來衡量特征簇間重要性.在簇內,通過計算簇內特征與分類信息的相關性進一步得到簇內特征排序.在UNSW-NB15數據集上做特征選擇,取出前13個特征.在分類器上,采用融合稀疏自動編碼器(Sparse Autoencoder,SAE)作數據重構的LSTM分類器.該模型可在一定程度提高IDS的檢測準確率,同時降低誤報率和漏警率.
為提高NIDS的檢測性能,提出了一種基于特征選擇的LSTM深度學習方法,方法的實驗框架如圖1所示.主要包括三個階段.
圖1 基于特征工程的SAE-LSTM入侵檢測模型Fig.1 SAE-LSTM intrusion detection model based on Feature Engineering
特征工程:原始網絡數據集經過轉換數值型數據后,輸入特征選擇模塊,選取最優(yōu)的特征集合,提高攻擊檢測效率.
數據降維:經特征選取后的數據集再進行清除臟數據、歸一化、字符串類型one-hot編碼等處理,再通過SAE進行編碼、解碼操作,重構數據集合,實現數據降維.
檢測分類:攻擊檢測模型采用的是LSTM分類器.
隨機森林在用作特征選擇時分為兩類:基于基尼(Gini)指數和基于置換重要性(Permutation Importance,PI).基尼系數的選擇標準為依據每個子節(jié)點達到最高的純度,即落在子節(jié)點中的所有觀察都屬于同一個分類,此時基尼系數最小,純度最高,不確定度最小.隨機森林置換重要性是基于“置換檢驗”的思想由BREIMAN針對隨機森林引入的[13],其核心是對特征重要性進行檢測,通過計算改變單個特征數值后模型對測試集數據的預測結果誤差.如果模型的誤差提升幅度較大,那么該特征就是“重要的”.如果誤差不變或變化很小,則稱該特征為“不重要”.
置換重要性的步驟可簡述為:
1.劃分訓練數據集(Xtrain,Ytrain)來訓練模型.
2.對訓練數據集進行預測(Xtrain,Y_hat),計算準確度得分.
3.計算每個特征的置換重要性:
(1)置換訓練數據集中的第i個特征的值,保持其它特征不變.生成置換后的訓練數據集(Xtrain_permuted).
(2)用第2步訓練好的模型以及Xtrain_permuted數據集進行預測(Y_hat_permuted)計算對應的準確度得分(score_permuted).
置換重要性的缺點在于適用低維度(特征數小于20)的數據,隨著數據特征增加,采用單個特征重要性度量的方式會導致算法運行占據空間大,時間長,效率低[21].針對此問題,提出引入聚類后多特征一齊置換的隨機森林特征選擇方法.
表1中列出選用的UNSW-NB15數據集所有統(tǒng)計特征及其特征描述.根據數據包屬性將特征類型聚為4類[22]:基本特征、內容特征、時間特征、額外生成特征.
表1 UNSW-NB15數據集的特征類型分布情況Tab.1 Distribution of feature types in UNSW-NB15 dataset
特征選擇的流程如算法Cluster-RF所示.針對初始數據按照包屬性聚類后,每個簇進行隨機置換后的準確度得分除以簇內特征個數即為該簇的準確度得分.按照得分大小給簇排序,簇內特征按照與分類信息的皮爾森相關性進行排序.選出每個簇內與分類標簽相關性大于0.3[23]的特征(即有相關性的特征),并按照簇重要性先排序在前.實驗結果顯示皮爾森相關性大于0.3的特征數量為10.而相關性小于0.3的特征則按照先簇間置換重要性、后簇內相關性依次排序.最終輸出特征排序結果.
基于聚類的隨機森林置換重要性算法Cluster-RF流程:
輸入:原始特征集合U
輸出:特征排序列表List
N為原始特征個數
{}→feature_selected,{}→feature_surplus
foriin range(N):
if特征與分類標簽相關性>相關性閾值
feature_selected←特征i;
if特征與分類標簽相關性<相關性閾值
feature_surplus←特征i;
將剩余特征集合feature_surplus按照特征性質聚類成簇Ck←Cluster k={1,2,,d};
對簇進行隨機森林置換重要性排序得簇重要性排序Rank(Ck);
對剩余特征集合feature_surplus中的特征按照先簇間重要性、后簇內相關性大小為原則進行重新排序賦予新集合feature_surplus_sorted←feature_surplus;
輸出最終特征排序List[1:N]←feature_selected+feature_surplus_sorted
End.
稀疏自動編碼器(SAE)具有三層結構,包括輸入層、隱藏層和輸出層.自動編碼器可分為編碼器和解碼器.編碼器通常用于數據壓縮和特征提取.由于減少了隱藏層神經元的數量,編碼將同一類型的數據映射到特定的神經元上,達到降維的效果.而將提取的數據轉化為輸入數據的形狀的過程稱為解碼.編碼可以很好地實現從高維數據空間到低維數據空間的非線性轉換.將網絡數據集原始特征作為輸入向量x輸入公式(1)進行編碼:
其中W∈Rp×q為編碼層的權重矩陣,b∈Rp代表偏置向量.而σ是激活函數的表示.然后將構造特征通過如下公式進行解碼.W'代表著解碼層的權重矩陣,b'代表解碼層的偏置向量.
對稀疏自動編碼器進行訓練,優(yōu)化稀疏自動編碼器中的四項參數,即兩個權重矩陣W與W'與兩個偏置向量b與b'.此時,將已得到的重新構造的特征與原始特征相比較,將它們之間的差值稱之為重構誤差,公式如下:
為了解決神經網絡中可能會出現的過擬合現象,稀疏自動編碼器在損失函數中加入權重懲罰項,可以將公式(3)合理地替換為:
其中m為特征數量,λ為權重懲罰系數.
編碼可以很好地實現從高維數據到低維數據空間的非線性轉換.稀疏自動編碼器利用反向傳播算法使得輸出盡可能等于輸入,并且隱藏層必須滿足一定的稀疏性,即隱藏層不能攜帶太多信息.所以隱藏層對輸入進行了壓縮,并在輸出層中解壓縮.整個過程會丟失信息,但訓練能夠使丟失的信息盡可能減少.為了保證隱藏層的稀疏性,自動編碼器的代價方程加入了一個KL離散度作為懲罰項.KL離散度是衡量某個隱層節(jié)點的平均激活輸出和提出的設定的稀疏度ρ之間的相似性,公式為:
實驗中的稀疏自動編碼器結構如圖2所示:
圖2 稀疏自動編碼器結構Fig.2 The structure of sparse automatic encoder
RNN模型面臨的挑戰(zhàn)是梯度消失.為解決這個問題,HOCHREITER和SCHMIDHUBER[18]利用3個門控單元來改進RNN模型,提出了LSTM模型.門控機制的工作原理是通過存儲歷史記憶,從而利用不同時間的信息計算出隱藏單元在時間步驟t的激活值ht[16].LSTM單元的結構如圖3所示.獲得神經單元的更新激活的過程如下.
圖3 LSTM模型結構Fig.3 LSTM model structure
其中LSTM網絡中各個端輸出的公式集合為:
實驗中網絡數據集的每個時間戳經稀疏自編碼器重構后得到32維數據,再輸入到LSTM模型中.其中每一行即一個樣本,代表一個時序狀態(tài),時序長度為1.研究采用的LSTM神經網絡模型的隱層神經元結構參考了現有的LSTM模型,另外采用試值法,測試隱層節(jié)點數對異常檢測模型的影響,最終試驗確定每層隱藏神經元個數為32,層數為一層.
入侵檢測實驗在編譯環(huán)境為Python 3.6.4、操作系統(tǒng)為Ubuntu 18.04且配備NVIDIA GeForce RTX 2070顯卡的計算機上進行.
對于模型分類后的結果,實驗采用的評價指標為:準確率(Accuracy)、誤警率(FAR)、漏警率(MAR)和檢測時間,計算公式如下.其中,TP(True Positive)表示將攻擊流量預測為攻擊流量的樣本數.TN(True Negative)為將正常流量預測為正常流量的樣本數.FP(False Positive)為將正常流量預測為攻擊流量的樣本數.FN(False Negative)為將攻擊流量預測為正常流量的樣本數.準確率表示模型判斷正確的數據數量占總數據的百分比,即:
誤警率表示正常流量被模型判斷為攻擊流量的數量占樣本中被檢測為攻擊流量的百分比即:
漏警率表示攻擊流量被模型判斷為正常流量的結果占樣本實際攻擊流量數據的百分比即:
UNSW_NB15入侵檢測數據集相比于傳統(tǒng)的KDD99和NSLKDD數據集更適合研究人員用于入侵檢測技術的研究[22].它是結合真實世界攻擊與目前幾種典型攻擊于一體的數據集,由澳大利亞網絡安全中心(ACCS)創(chuàng)建.該數據集原始特征為49個、具有9種攻擊類型,分別是Fuzzers,Analysis,Backdoors,DoS,Exploits,Generic,Reconnaissance,Shellcode和Worms.該數據集的訓練集數量為175341條,測試集為82332條.
AWID數據集作為wifi數據集于2016年公開,其中包含從真實網絡世界收集的正常與攻擊入侵數據.該數據集中的每一條都有155個屬性,每個屬性特征都可解釋.根據分類類別區(qū)分不同,可以分為AWID-CLS和AWID-ATK數據集.CLS數據集主要分為4類即正常、Flooding、Impersonation、和Injection.AWID-ATK數據集則是根據前面所述4類里更加細化的17個目標類別.對于這一數據集,考慮到它為高維數據集,研究中用于輔助驗證特征選擇方法的有效性.
研究運用特征工程的思想探尋對檢測精度貢獻度高的特征集合.采取策略為先將數據集聚類成簇、再以簇為單位進行簇間重要性排序,簇內特征又根據與分類標簽的皮爾森相關性進行排序.先取出簇內相關性大于0.3的特征[23]共10個,按簇重要性大小排序.上一步操作后再將剩余特征按照先簇間重要性大小、后簇內相關性大小進行排序,最終輸出特征重要性排序.
特征排序后,為了確定最佳特征集合數量,按照排序從前8個開始選取.如圖4所示.當選取特征數量為13時,UNSW-NB15數據集在提出的SAE-LSTM模型以及邏輯回歸分類器中分別達到了99.1%、90.5%的準確率.
圖4 測試集上選擇特征個數與分類器準確率關系Fig.4 Relationship between the number of selected features and classifier accuracy on the test set
研究同時也將UNSW-NB15數據集中的8種攻擊流量分別混合正常流量數據做特征選擇試驗.表2展示了特征選擇前后各種攻擊流量類型在邏輯回歸分類器的準確率表現.結果表明:所提出的特征選擇方法在Backdoors攻擊上可以達到95.2%的檢測準確率.
表2 各種攻擊下選取的最優(yōu)特征子集Tab.2 Optimal subset of features selected under various attacks
此外,特征選擇的方法還在wi-fi數據集AWID上進行實驗.該數據集包含155維特征,其中有非數值化特征”wlan.ra”、”wlan.da”等,且缺失值較多.研究在刪除缺失值大于80%的特征屬性后剩余96維,進一步進行特征選取,最終得到28維特征.
表3展示了兩數據集特征選取前后在SAELSTM模型的準確率差異.AWID數據集準確率高達98.33%,較選擇前提升14.57%.同時在高維數據集下,所提出的特征選擇方法可以削減原隨機森林方法的時間開銷.
表3 有線及無線數據集上特征選擇的表現Tab.3 Performance of feature selection on wired and wireless data sets
圖5、圖6展示了所選取的13維特征與四元組特征[24]即(源IP地址,目的IP地址,源端口號,目的端口號)的Renyi熵在所提出SAE-LSTM模型上作預測誤報率、漏警率實驗對比.
圖5 四元組Renyi熵特征與選取特征誤警率對比Fig.5 Comparison of quadratic Renyi entropy features and selected features false alarm rate
圖6 四元組Renyi熵特征與選取特征漏警率對比Fig.6 Comparison of quadratic Renyi entropy features and selected features missed alarm rate
實驗結果證明:當攻擊比例為0.2時,四元組Renyi熵特征檢測誤報率到達0.17,而特征選取后的誤報率僅為0.04;攻擊比例為0.8時,特征選取后的13個特征集合在SAE-LSTM分類器誤報率僅為0.18,較四元組Renyi熵特征集合下降4%.各項指標均表明,特征選取后的特征集合可有效提升檢測性能.
由于本實驗為二分類實驗,實驗中會除去attack_cat攻擊種類字段.數據預處理過程將訓練集和測試集中的符號特征protocol,service,state以one-hot編碼轉化為數值表示.
歸一化處理:不同的特征屬性字段之間的量綱會有所差異,為了消除這類差異給分類器的準確率造成影響.特此做歸一化,一方面消除不同的特征屬性字段之間的量綱的差異,另一方面使得數據的量綱更具有可比較性.
實驗使用Python進行編碼,Keras框架構建神經元網絡.在數據預處理階段,除去有重復項的src_ip、dst_ip,src_port、dst_port四個特征.隨后通過特征選擇從45維特征選取13維特征.模型訓練包含兩個階段:第一階段是訓練SAE重構網絡數據.根據理論分析和查閱前人工作經驗[25]表明隱藏層數、單位數和稀疏常數是影響SAE性能的主要因素.實驗采用枚舉法選取參數訓練不同的SAE,確定ρ=0.04的SAE[128,32,32]達到了最好的性能,因此選擇其作為SAE的參數.經測試,最終選取兩層隱含層的SAE結構[26,29].第二階段,將編碼后的數據作為LSTM分類模型輸入.
圖7(a)、圖7(b)顯示SAE-LSTM模型隨時間戳步長增加,訓練集與測試集精度變化情況.對訓練數據集,隨著時間戳步長的增加,精度的提高不太明顯.在測試數據集上,分類精度隨著時間戳步長增加提升較明顯,并且在時間戳步長為8時,檢測準確率最高.
圖7 不同時間步長的LSTM模型與其他模型準確率對比Fig.7 Accuracy of LSTM models with different fetch steps vs.other models
表4所示,對比同樣采用UNSW-NB15數據集的相關論文模型,結合特征選擇的SAE-LSTM入侵檢測模型的檢測率達99.1%、誤報率為4.18%、漏報率為2.1%,具有更高的檢測率、更低的誤報率和漏報率.
表4 實驗模型與其他文獻模型結果對比 %Tab.4 Comparison of the results of this model with other models in the literature %
為削減特征冗余對入侵檢測的干擾,提高入侵檢測系統(tǒng)的準確率及泛化能力,提出一種入侵檢測的有效框架,包括特征選擇與檢測分類兩大塊.首先,采用融合聚類思想的隨機森林特征打分機制,在UNSW-NB15網絡數據集上選取出貢獻最大的前13個特征,并在155維數據集AWID上進行試驗以證明特征選擇方法的有效性.
特征選取后的數據,經由稀疏自動編碼器提取低維的數理特征,最后將編碼器的輸出數據作為LSTM輸入,并將時間戳步長作為研究的重要參數.實驗結果表明,時間戳步長為8時,實驗模型具有最佳檢測精度.準確度達到98%以上,同時FAR低于4.18%.在未來的研究中,將著重于通過引入注意力機制來提高訓練數據的性能.