陳麗芳,楊麗敏,于健
(華北理工大學 理學院,河北 唐山 063210)
網絡環境日趨復雜,社會對信息和通信技術的依賴程度愈來愈高,網絡安全風險也隨之升高。前人所使用的傳統預警技術只能檢測出歷史上曾經出現過的攻擊,而且存在誤報率和漏報率較高、響應時間長以及不具備檢測新攻擊類型的能力等諸多問題[1]。例如防火墻技術,防火墻規則只能阻止已經出現過的攻擊,對未出現過的入侵行為則喪失了其防御能力。基于專家系統的預警檢測在進行海量數據處理時執行速度不僅比常用的編譯型語言慢,而且只能檢測到已知的攻擊模式。基于神經網絡的網絡預警檢測系統在具有分布式和超大規模等特點的云環境下容易出現過擬合的情況[2]。基于貝葉斯的網絡預警檢測雖然具有較為穩定的分類效率,對缺失數據也較為遲鈍,但處理連續特征困難,需要知道先驗概率[3]。
基于此,為了提高系統的安全性,該項研究選擇將支持向量機(SVM)應用到目前的研究熱點領域——網絡安全預警中,SVM是基于現代統計學的結構風險最小化和風險向量維數理論形成的一種學習機,它具有很強的非線性處理能力和良好的魯棒性[4,5]。所以將支持向量機引入網絡安全預警不僅可以彌補傳統網絡預警系統出現的諸多不足,提高檢測效率、降低誤報率和漏報率,而且可以增強系統對高速網絡環境的適應能力,進而可以提高網絡預警性能[6]。
網絡安全預警檢測的功能是將數據流中正常與異常數據區分出來從而達到預警的功能。預警檢測根據分析方法的不同通常可以分為2類,一類是特征檢測,另一類是異常檢測[7]。特征檢測將曾經發生過的攻擊行為進行分析與歸納,得到入侵行為的特征規則,形成網絡攻擊特征庫,然后根據特征庫來檢測入侵行為。異常檢測收集網絡環境或系統正常活動的規律,并將其與待檢測的活動進行比較,如果待檢測活動不符合正常活動的規律,就可以判定為網絡入侵行為[8]。一個優秀的預警系統應該能夠通過某種手段對網絡進行實時監控,如檢測到攻擊行為則提前報警,并通過一定手段阻止其入侵行為并且在攻擊發生時阻止攻擊并向管理員發出警報,從而避免對系統的控制和破壞。
支持向量機(SVM)的檢測過程是先從海量的網絡數據中選出能全面描述網絡的特征,然后學習出分類模型,進而發現待檢測數據中隱藏的入侵行為的分類規則[9,10]。安全預警系統可以根據SVM分類模塊學習出的分類模型,對訪問行為進行判斷,將安全的訪問給予放行,檢測到入侵行為禁止訪問并給予預警提示。基于SVM的預警系統檢測準確率高、無需人工設置繁瑣的規則、泛化能力強、對未出現過的入侵行為也有一定的預警能力。
網絡預警系統結構如圖 1 所示,首先對原始網絡流基于統計的方法構建特征,形成原始特征數據集,進行數據預處理,采用決策樹進行特征選擇形成新的數據集,然后使用新數據集進行模型的訓練,訓練過程包括調整懲罰系數、調整核函數和網格參數調優,形成基于支持向量機的網絡預警模型。最后采用新數據集對模型進行測試,檢驗模型預警的性能。

圖1 網絡預警系統結構
SVM是一種最優分類學習機,根據區域中的樣本找到距離兩端支持向量即間隔最大的超平面。
1.2.1線性支持向量機
對于樣本集D={(x1,y1),(x2,y2),...,(xn,yn)},yi∈{-1,1},n表示數據的數量。那么劃分線性超平面可通過線性方程:ωTx+b=0表示,式中ω=(ω1,ω2,ω3,...ωd)T,位移為b,記超平面為(ω,b),那么樣本空間任一點到超平面的距離就有如下公式:
(1)
其中‖ω‖表示ω的二范數,求所有元素的平方和,然后再開方。假設超平面(ω,b)能將樣本集D正確分類,且令:
(2)
距離超平面最近的幾個點滿足公式(2)則等號成立,這幾個點稱為支持向量。那么間隔d就變為:
(3)
從而上述目標函數轉化為:
(4)

(5)
對公式(5)使用拉格朗日乘子法處理該問題的拉格朗日函數:
(6)
對式(6)的ω和b求偏導得:
(7)
令其分別等于0
(8)
將公式(8)代入公式(7),可得
(9)

(10)

解出α后,根據公式(8)求出ω,進而求出b,得到模型:
(11)
但是SVM應用在線性不可分的數據上時,效果會受到影響,使用非線性支持向量機才能獲得很好的分類效果。
1.2.2非線性支持向量機
令φ(x)表示將x映射后形成的特征向量,那么在特征空間中,劃分超平面所對應的模型可表示為:
f(x)=ωTφ(x)+b
(12)
于是有最小化函數:
(13)
這里yi(ωTφ(xi)+b)≥1(i=1,2...,m)對偶問題是:
(14)
k(xi,xj)≤φ(xi),φ(xj)≥φ(xi)Tφ(xj)
(15)
則公式(14)改寫為:
(16)

(17)
數據集通常存在高維問題導致分類器分類精度下降,因此,為了提高分類器訓練速度和檢測精度,必須首先去除冗余特征或不重要特征。即先剔除無用的噪聲屬性,用處理好的數據來訓練支持向量機模型,之后進行預警檢測分類。決策樹的關鍵在于如何選擇出最優的屬性劃分方法,常用的特征選擇指標有信息增益、增益率、基尼指數。
該研究采用基于決策樹的極端隨機樹特征選擇技術識別和選擇有效的特征子集進行模型訓練。極端隨機樹在分類精度和訓練時間上都要優于隨機森林。
數據集有41個屬性和1個標簽,共42列,部分數據如表1所示。

表1 KDD99數據集
該數據集是KDD-CUP競賽所使用的數據集,它最大程度地還原了真實的網絡環境,截至目前KDD99數據集仍然是網絡入侵檢測領域的權威,為基于計算智能的網絡入侵檢測研究奠定基礎。KDD99 數據集無法直接應用于模型訓練和測試。需要首先進行數據預處理,才能進一步建模。該項研究主要做了如下預處理工作:
(1)字符型特征屬性數值化。將所有不能用于分類器的輸入字符型數據轉換為數值型數據。通過將字符型數據讀入列表,再返回其在列表中的下標,用下標代替字符的方式將字符型數據轉換為數值型。
(2)空缺值處理。考慮到缺失的連接記錄占總數據集比例極小甚至可以忽略,直接刪除本條記錄不會對分類結果造成影響,所以該研究通過將含有缺失值的連接記錄刪除的方法,來達到處理缺失值的目的。將處理好的數據寫入Excel避免每次運行都要重新進行處理;為了減少運算時間,在數據逐條寫入Excel的同時對空缺值進行刪除,而不是直接對矩陣進行處理,這樣可以避免對高維矩陣進行復雜運算而耗費時間。
(3)標準化與歸一化處理。KDD99 數據集的屬性沒有統一的量綱,值域范圍有較大差異,有的是0到1的離散數據,有的跨度為0到幾百萬,導致在計算距離時會出現某些數值過小的屬性特征被數值大的屬性特征埋沒。因此,為了消除量綱不統一對分類結果產生的影響,有必要對屬性值進行標準化處理。
求出全部數據的均值和方差,經過計算得到均值為0,方差是1的結果,轉換公式見式 (18):
(18)
圖2為KDD99數據集預處理后經過決策樹特征提取后的結果。

圖2 特征提取結果
KDD99數據集的41種屬性經過特征提取剔除了不相關的特征后剩余36種屬性。
懲罰系數C代表支持向量機對誤差的容忍程度,C值選擇的好壞直接決定模型泛化能力的高低,較大的C值可能會導致模型過擬合,反之C值過小可能會導致模型欠擬合。C默認選擇為1,C越小,越能更好地去正規化估計。
支持向量機之所以對非線性問題有著較好的解決辦法就是因為核函數的存在可以實現將低維空間向高維空間轉換。表2為常見核函數。

表2 常見核函數
線性核函數由于沒有過多的參數設置而運行速度較快,一般作為線性可分問題的優先選擇目標。Poly 核、Sigmoid 核和Rbf核都能夠將低維問題向高維轉化,因此它們都能夠用來解決線性不可分的問題。
參數 estimator:分類器及其部分參數 estimator 主要用來設置需要使用哪種分類器,并且傳入需要進行網格搜索調優的參數,estimator 的設置如圖 3所示。

圖3 estimator代碼塊
(1)class_weight指定樣本各類別的權重,設置為“balanced”用來減少KDD99 數據集不平衡帶來的影響;cache_size是緩存大小,默認是200 MB,cache_size的值越大,訓練速度越快。
(2)param_grid:值為字典或者列表。在本模型中需要優化的參數有kernel、C和γ。通過網格搜索在Linear、Poly、Sigmoid、Rbf 4種核函數中選出最優的核函數以及最優的超參數,其中超參數γ除線性核Linear外都有,超參數degree為多項式核Poly獨有,這里param_grid設置如圖4所示。

圖4 param_grid代碼塊
添加了通過python編程仿真,經過網格搜索得到最終的最佳參數組合如圖5所示。

圖5 最佳參數組合
利用處理完的數據作為數據集進行模型訓練,模型訓練完成后,用訓練完的數據集模擬網絡的訪問然后使用訓練好的模型進行分類,對存在入侵行為的數據作出預測并給予用戶提示,如圖6所示。

圖6 運行結果展示
由于KDD99 數據集存在著嚴重不平衡現象,雖然進行了不平衡數據處理,但無法完全避免其帶來的影響,于是采用F-Measure、ROC曲線、AUC值與訓練模型所用時間等不受數據平衡影響的指標作為評價指標,對模型進行評價。因為評價指標精確率和召回率有時是此消彼長的關系,某些極端情況下會存在矛盾,但是在一些場合下又需要綜合考慮精準率和召回率,于是有了F-Measure,它是精確率和召回率的加權調和平均,計算公式如式(19)。
(19)
ROC以及AUC它們可以很好地消除樣本類別不平衡對指標結果產生的影響。其中ROC 曲線是以 FPR (False Positive Rate)為橫軸,TPR(True Positive Rate) 為縱軸做出的曲線,組成曲線的每一個點都代表著分類器在不同閾值下的性能,得到結果如圖7所示。

圖7 結果評價
FPR 可以代表模型對于負樣本誤判的程度,TPR則剛好相反,它代表的是模型對正樣本召回的程度。一個好的分類器就要求負樣本誤判盡可能越少,正樣本召回盡可能多,即TPR越高,FPR越低,那么模型的性能就越好。AUC(Area Under Curve)是ROC曲線與橫縱坐標軸所包圍的面積,值越大越好。由圖7可以看出,程序對入侵行為可以做出檢測預警,F1-score為0.862 7,有著不錯的性能,由ROC曲線可以看出曲線偏離45°對角線較多,并且AUC值達到了0.97,說明模型分類效果非常好。
為了進一步驗證基于支持向量機算法的預警系統的性能,將其與GBDT和AdBoost算法進行簡要對比,ROC 曲線圖如圖8所示。

圖8 對比結果展示
由圖8的ROC曲線圖可以看出,SVM算法與AdBoost算法形狀基本相同,曲線下面積遠遠大于 GBDT算法曲線下的面積,而SVM則擁有最大的曲線下面積,即 AUC 值最大,這表示著SVM有著較GBDT與AdBoost算法更好的性能。詳細對比結果如表3所示。

表3 分類算法性能對比
由表3的F1值和AUC值可以看出,SVM與AdBoost算法對于區分正常與入侵行為的能力都優于GBDT 算法,而SVM在各評價指標上面還是優于AdBoost算法,AdBoost與 GBDT 算法都需要較長的時間訓練模型。性能對比分析說明,SVM應用于網絡安全預警,相比其他2種算法性能更加優越,并能大大縮短模型訓練時間。
(1)針對目前已有網絡預警檢測技術普遍存在的誤報率和漏報率較高、響應時間長等問題,將支持向量機應用到網絡安全預警,利用Python進行仿真,采用決策樹進行特征選擇,剔除無用的噪聲屬性,降低安全數據的維度,然后用已經處理好的數據來訓練支持向量機模型,進行入侵檢測分類。
(2)根據現在較為火熱的分類算法中常用的評價指標對仿真結果進行評價。實驗結果表明,將支持向量機應用到網絡安全預警中明顯優于傳統入侵檢測技術,該項研究是對網絡安全預警技術研究的有益嘗試和補充。