本發(fā)明屬于機器學習技術領域,具體涉及多種統(tǒng)計學算法與機器學習算法,本算法采用了新的特征提取方式,對統(tǒng)計學與機器學習算法進行創(chuàng)新性融合,實現(xiàn)對web異常流量的監(jiān)測。
背景技術:
1、信息時代的網(wǎng)絡安全問題
在信息大爆炸的今天,計算機網(wǎng)絡的規(guī)模與互聯(lián)網(wǎng)使用人數(shù)都達到了空前規(guī)模,而接踵而至的,是網(wǎng)絡安全問題的愈加凸顯。作為抵御網(wǎng)絡攻擊的最主要手段,異常流量監(jiān)測的研發(fā)與升級迫在眉睫。經(jīng)過二十多年的發(fā)展,流量監(jiān)測的研究進化出了多個分支,然而在實際應用中,效果卻并不盡如人意,其難點主要集中在下面幾個方面:
1)將違規(guī)行為模式用固定規(guī)則進行實時監(jiān)測導致誤報率過高;
2)運用特征匹配時,特征庫需要手動更新,無法檢測未知攻擊方式;
3)龐大的規(guī)則數(shù)量使得系統(tǒng)檢測性能受到了很大的影響,規(guī)則庫的維護變得難以維護;
4)具有阻斷功能的異常流量檢測系統(tǒng)在誤檢正常通信行為時,正常通信會被阻斷;
5)在監(jiān)測系統(tǒng)數(shù)據(jù)存儲能力存在瓶頸時,易遭受拒絕服務攻擊,通信將被阻斷。
基于異常流量檢測系統(tǒng)存在以上問題,當前關于該系統(tǒng)的研究主要集中在三個方向上:特征匹配、規(guī)則推理與機器學習。
2、機器學習
近年來,機器學習的方法越來越多的應用到異常流量檢測的算法設計中來。不需要太多人工干預解決了特征匹配中特征庫的更新與規(guī)則庫的人力維護問題,大大提高了自動化程度;對不同的輸入數(shù)據(jù)的適應性強,打破了規(guī)則推理的高誤報率僵局,面對未知攻擊能得到較高的準確率。
然而,單一的機器學習并不能完美的解決問題。其中的統(tǒng)計方法認為所有事件皆由統(tǒng)計模型產(chǎn)生,這種方法忽略了參數(shù)方法中事先設定的分布模型可能與真實數(shù)據(jù)不符的風險,從而與預期結果產(chǎn)生很大偏差。另外統(tǒng)計模型構成的系統(tǒng)大多在離線狀態(tài)下工作,無法滿足實時監(jiān)測的要求,因而要到達高準確率需要非常高效的性能;且統(tǒng)計方法對于閾值的確定非常困難,閾值過高、過低都會引起會引起漏報率的上升。
而機器學習算法盡管能將先驗后驗知識無縫結合,克服框架不夠直觀的缺點,然而單純的分類、聚類算法由于噪聲數(shù)據(jù)干擾、抽樣方法錯誤、建模變量過多等問題會導致過擬合,并不能達到很好的監(jiān)測效果。且模型的精確性需依賴一定的假設,這些假設是體現(xiàn)在目標系統(tǒng)、網(wǎng)絡的行為模式上的,與假設違背將會造成準確率的大幅度下降。
技術實現(xiàn)要素:
本發(fā)明旨在解決以上現(xiàn)有技術的問題。提出了一種有效提升了原機器學習方法對異常流量監(jiān)測的準確率的基于集成學習的web異常流量監(jiān)測方法方法。本發(fā)明的技術方案如下:
一種基于集成學習的web異常流量監(jiān)測方法,其包括以下步驟:
1)數(shù)據(jù)預處理:獲取統(tǒng)一資源定位符url記錄,并對統(tǒng)一資源定位符url記錄進行切割分離,提取有效信息;
2)構建特征工程:運用統(tǒng)計學方法對常見的指令攻擊、數(shù)據(jù)庫攻擊、跨站腳本攻擊與本地文件包含攻擊以及正常網(wǎng)絡訪問的統(tǒng)一資源定位符url分別進行特征的提??;
3)數(shù)據(jù)集重構:針對五種訪問性質,分別根據(jù)各自特征對總數(shù)據(jù)集進行整理,將標簽調整為該訪問性質及其他;
4)模型建立:對五種訪問性質所對應的數(shù)據(jù)集,分別運用xgboost(極端梯度提升)、lightgbm(輕量級梯度提升機)、rf(隨機森林)、lr(邏輯回歸)四種機器學習算法對數(shù)據(jù)進行有監(jiān)督學習,運用bagging框架集成學習器,得到針對這五種訪問性質各自的識別模型;
5)模型測試:對步驟4中提前預留的部分數(shù)據(jù)集進行測試,檢驗模型準確率。
進一步的,所述步驟1)url有效信息的抽取包括步驟:對于一條未處理的url:首先去除“#”后的無效數(shù)據(jù);將剩余片段按“?”進行切割;分理出文件路徑片段,以“/”與“=”劃分;查詢部分以“&”與“=”劃分;劃分所得的參數(shù)與值分別放入處理函數(shù)中進行正則匹配。
進一步的,所述處理函數(shù)會將數(shù)字用日期與時間代替,亂符更換為“$0”,長度小于10的小寫字母組成的字符串改為“s”,長度大于2的“ox”開頭的字符串改為“ox1234”,多個空格縮為一個空格,處理完畢后的片段即為模型需要的url信息片段。
進一步的,所述步驟2)構建特征工程具體包括:url參數(shù)值的長度,利用統(tǒng)計學中的切比雪夫不等式,以及長度的均值與方差計算出長度的異常值p:字符分布,利用統(tǒng)計學中的卡方檢驗計算字符分布的異常值α;枚舉類型,計算屬性值的輸入所屬枚舉異常類型中的情況;關鍵詞抽取,尋找相同訪問性質的url共同特征,在掃描所有url數(shù)據(jù)后,對所有物理位置相鄰的字符串進行頻次記錄,篩除頻次過低的字符串后對剩余字符串做互信息計算。
進一步的,所述url參數(shù)值的長度異常值,利用統(tǒng)計學中的切比雪夫不等式以及長度的均值與方差可以計算出長度的異常值p,計算公式包括:
其中x表示url參數(shù)值的長度,μ為長度均值,σ2為長度方差,k表示標準差個數(shù);
進一步的,所述字符分布利用統(tǒng)計學中的卡方檢驗計算字符分布的異常值α具體包括:對于字符串{s1,s2,…,sn},cd(s)i表示cd(s)中的第i個概率值,icdi表示icd中的第i個概率值,則
進一步的,所述枚舉類型,計算屬性值的輸入所屬枚舉異常類型中的情況,所述定義函數(shù)f和g,函數(shù)f是線性遞增函數(shù),g(x)表示樣本函數(shù),當依次輸入訓練樣本時,倘若遇到新樣本則g加1,否則g減1,
f(x)=x
當所有樣本都學習結束后得到的函數(shù)f和g的相關系數(shù)ρ可由下面的公式定義:
其中var(f)和var(g)分別是函數(shù)f和g的方差,covar(f,g)是函數(shù)f和g的協(xié)方差。
進一步的,所述關鍵詞抽取互信息體現(xiàn)了字符串內部結合方式是否緊密,其計算公式如下:
其中,p(s1s2s3)表示字符串s1s2s3出現(xiàn)的概率,p(s1s2)、p(s2s3)含義相仿。
進一步的,還包括計算字符串鄰字的左右鄰字豐富程度的步驟,其左右鄰字的豐富程度可以使用信息熵獲得
進一步的,所述bagging是從訓練集中進行子抽樣組成每個基模型所需要的子訓練集,對所有基模型預測的結果進行綜合產(chǎn)生最終的預測結果的集成學習框架,在學習器的基礎上,從原始數(shù)據(jù)集上重新選取數(shù)據(jù)集進行分類預測,以多數(shù)投票的方式敲定標簽,同時,檢驗模型準確率。
本發(fā)明的優(yōu)點及有益效果如下:
本發(fā)明運用統(tǒng)計學方法,對url進行切片、特征提取,保證了特征提取的完整性與可靠性。同時集成多種機器學習算法,包括準確率極高的xgboost(極端梯度提升)、rf(隨機森林)等,保證了模型進行流量異常監(jiān)測時的高精度,在監(jiān)測過程中將來訪url輸入五個模型中進行預測來鑒定是否為已知異常,同時還能對未知異常進行識別。
附圖說明
圖1是本發(fā)明提供優(yōu)選實施例的方法整體流程圖;
圖2為本方法中對url的切割提取示例圖;
圖3為本方法bagging框架集成過程圖;
圖4為本模型下異常流量監(jiān)測流程圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、詳細地描述。所描述的實施例僅僅是本發(fā)明的一部分實施例。
本發(fā)明解決上述技術問題的技術方案是:
本發(fā)明提出了一個用于解決異常流量監(jiān)測的模型。圖1所示為整個模型的流程圖。對數(shù)據(jù)集進行預處理,如對“&”、“=”等符號進行分割,提取url中的有效信息,來提高處理效率。圖2為url切割示例。處理后的數(shù)據(jù)通過互信息、信息熵等統(tǒng)計學方法進行特征提取。特征工程構造完畢后,根據(jù)訪問性質的不同,分別構造不同特征的數(shù)據(jù)集,更換標簽為兩類:當前訪問性質及其他。與此同時,抽取部分數(shù)據(jù)作為測試集。對重構后的五個數(shù)據(jù)集分別進行機器學習。引入extremegradientboosting、lightgradientboostingmachine、randomforest、logisticregression四種機器學習算法對數(shù)據(jù)集進行有監(jiān)督學習,并通過bagging框架集成學習器,得到針對不同訪問性質的相互獨立的識別模型。圖3為bagging框架集成過程。將預留的測試集分別帶入識別模型中進行測試,檢驗模型準確性。
整個改進的異常流量監(jiān)測模型的重要過程包括:url的信息抽取,特征工程的構造,多算法學習器的訓練,bagging框架集成。
一、url的信息抽取
為了提高模型的處理效率,對url的有效信息抽取至關重要。對于一條未處理的url:
1)首先需去除“#”后的無效數(shù)據(jù);
2)將剩余片段按“?”進行切割
3)分理出文件路徑片段,以“/”與“=”劃分;
4)查詢部分以“&”與“=”劃分;
將3)、4)劃分所得的參數(shù)與值分別放入處理函數(shù)中進行正則匹配。處理函數(shù)會將數(shù)字用日期與時間代替,亂符更換為“$0”,長度小于10的小寫字母組成的字符串改為“s”,長度大于2的“ox”開頭的字符串改為“ox1234”,多個空格縮為一個空格。處理完畢后的片段即為模型需要的url信息片段。
二、特征工程的構造
眾所周知,特征工程的構造嚴重影響著模型的有效性與準確率。
1)url參數(shù)值的長度:利用統(tǒng)計學中的切比雪夫不等式以及長度的均值與方差可以計算出長度的異常值p,
其中μ為長度均值,σ2為長度方差,k表示標準差個數(shù);
2)字符分布:利用統(tǒng)計學中的卡方檢驗計算字符分布的異常值α。對于字符串{s1,s2,…,sn},cd(s)i表示cd(s)中的第i個概率值,icdi表示icd中的第i個概率值,則
3)枚舉類型:某個屬性值的合法輸入屬于枚舉類型的情況非常普遍,例如“gender”屬性的合法參數(shù)是“{male,female}”,任何不屬于這兩種情況的輸入都應該屬于異常情況。定義函數(shù)f和g,函數(shù)f是線性遞增函數(shù),當依次輸入訓練樣本時,倘若遇到新樣本則g加1,否則g減1。
f(x)=x
當所有樣本都學習結束后得到的函數(shù)f和g的相關系數(shù)ρ可由下面的公式定義:
其中var(f)和var(g)分別是函數(shù)f和g的方差,covar(f,g)是函數(shù)f和g的協(xié)方差;
4)關鍵詞抽?。簽榱藢ふ蚁嗤L問性質的url共同特征,對同訪問類型的url做關鍵詞抽取顯得尤為重要。在掃描所有url數(shù)據(jù)后,對所有物理位置相鄰的字符串進行頻次記錄。篩除頻次過低的字符串后對剩余字符串做互信息計算?;バ畔Ⅲw現(xiàn)了字符串內部結合方式是否緊密,其計算公式如下:
其中,p(s1s2s3)表示字符串s1s2s3出現(xiàn)的概率,p(s1s2)、p(s2s3)含義相仿。
此外,還需要計算字符串鄰字的左右鄰字豐富程度,左右鄰字越豐富,該字符串在數(shù)據(jù)集中就越靈活,是該種url關鍵詞的可能性就越大。其左右鄰字的豐富程度可以使用信息熵獲得
三、多算法學習器的訓練
在訓練數(shù)據(jù)前,需要對數(shù)據(jù)做少許改動。針對每種訪問性質的url特征擴展到整個數(shù)據(jù)集中,形成五個不同的數(shù)據(jù)集。同時改變原標簽,僅保留該訪問性質的標簽,剩余訪問性質的url數(shù)據(jù)的標簽皆用其他代替。
算法上所選取上的xgboost、lightgbm、rf、lr,經(jīng)過測試,是準確率較高、與問題貼合性最強的機器學習算法。
1)xgboost:xgboost是在adaboost和gbdt等提升算法基礎上進行了優(yōu)化的算法,可用于線性分類,可看做帶有l(wèi)1和l2正則化的線性回歸算法;相比于傳統(tǒng)gbdt多了正則化函數(shù)所以在防止過擬合方面提升很多、在分布式算法方面,xgboost會把每一維度的特征在一臺機器內進行排序,并保存在block結構內。所以多個特征計算可以分布在不同機器內執(zhí)行,最后結果匯總。這樣使得xgboost具有了分布計算的能力;因為特征值最后只是用在了排序,所以異常特征值對xgboost模型學習影響較少;每次的計算只是選擇梯度減少最大的特征所以特征相關性選擇問題也解決了;
2)lightgbm:lightgbm是一個實現(xiàn)gbdt算法的框架,支持高效率的并行訓練,并且擁有更快的速度、更低的內存消耗、更好的準確率、更好的分布式支持,可以快速處理海量數(shù)據(jù)。
3)randomforest:randomforest尤為適合做多分類問題,訓練和預測速度快,在數(shù)據(jù)集上表現(xiàn)良好;對訓練數(shù)據(jù)的容錯能力強;能夠處理很高維度的數(shù)據(jù),并且不用做特征選擇,即:可以處理沒有刪減的成千上萬的變量,在處理用關鍵提取出的大量特征時發(fā)揮了很好的效用;能夠在分類的過程中可以生成一個泛化誤差的內部無偏估計;能夠在訓練過程中檢測到特征之間的相互影響以及特征的重要性程度;不會出現(xiàn)過度擬合;
4)logisticregression:邏輯回歸的思想是用一個超平面將數(shù)據(jù)集分為兩部分,這兩部分分別位于超平面的兩邊,且屬于兩個不同類別,剛好切合在處理數(shù)據(jù)集時將每種訪問性質的url數(shù)據(jù)集重新打標簽的數(shù)據(jù)。圖4為logisticregression兩分類原理示意圖。此外,其分類時計算量非常小,速度很快,存儲資源極低,且便于觀測樣本概率分數(shù)。
四、bagging框架集成
bagging是一種從訓練集從進行子抽樣組成每個基模型所需要的子訓練集,對所有基模型預測的結果進行綜合產(chǎn)生最終的預測結果的集成學習框架。在學習器的基礎上,從原始數(shù)據(jù)集上重新選取數(shù)據(jù)集進行分類預測,以多數(shù)投票的方式敲定標簽,同時,檢驗模型準確率。由于該框架的整體模型期望近似于基模型的期望,這也就意味著整體模型的偏差與基模型的偏差近似,同時整體模型的方差會隨著基模型數(shù)的增多而減少,防止了過擬合能力的增強,模型準確率會顯著提高。表1為各機器學習算法與bagging集成后實驗準確率對照表;
表1模型準確率對照表
以上這些實施例應理解為僅用于說明本發(fā)明而不用于限制本發(fā)明的保護范圍。在閱讀了本發(fā)明的記載的內容之后,技術人員可以對本發(fā)明作各種改動或修改,這些等效變化和修飾同樣落入本發(fā)明權利要求所限定的范圍。