梁猛
?
大數據平臺基于機器學習的安全審計異常檢測
梁猛
中國移動通信集團廣東有限公司網絡管理中心,廣東 廣州 510623
通信運營商的網絡大數據平臺存儲了大量包含用戶敏感信息的數據,必須通過強有力的技術手段確保平臺數據不被泄露。傳統的基于規則的審計方式無法滿足對海量日志下安全審計工作及時性和準確性的要求,而基于機器學習的方法近年在大數據上的應用發展迅速。綜合考慮了安全審計工作在不同的日志類型中的通用性、及時性及準確性等多方面的要求,提出層次聚類與孤立森林相結合的方法,用于數據共享平臺上海量日志的異常檢測。
安全審計;機器學習;層次聚類;孤立森林;異常檢測
隨著網絡大數據平臺應用到各個業務層級,接入的數據量不斷增加,集群規模不斷擴大,系統日志量急速增長。基于傳統以規則為導向的安全審計,存在規則更新成本高、審計范圍大等問題。近年來,機器學習技術在各個傳統領域大放異彩,提供了許多創新性的行業解決方案[1]。一般思路是,把現實世界中遇到的問題建成相應的數學模型,并用歷史數據去訓練模型,最終讓模型得到較為精準的判斷力。與傳統方法相比,機器學習方法具有高自動化、基于數據驅動等特點,其中一個較為顯著的優點是,可結合海量的特征對特定問題(如分類、回歸)進行預測或判斷。
本文提出基于機器學習的安全審計方法,基于系統操作、數據庫操作、組件操作等各類日志,通過層次聚類算法對日志中相似行為進行合并,標記出若干類日志行為,在此基礎上抽象出不同賬號各類日志行為的頻次、密度等特征;把這些特征輸入孤立森林模型,輸出賬號所屬的每個行為的異常得分,并根據得分審計出各個行為的危險等級,最終把功能整合到大數據平臺的審計系統中。此方法提高了審計效率,實現了基于不同賬戶行為的差異化精準審計,解決了傳統審計方式規則維護成本高、審計范圍過于粗放的問題。
異常檢測作為機器學習的一個細分領域,有著許多成熟的應用方法。大致可分為兩種:一種是奇異點檢測,訓練數據中不包含離群數據,而我們對檢測新發現的樣本感興趣;另一種是異常點檢測,訓練的數據中包含了離群數據,我們需要匹配訓練數據中的中心部分,而忽略掉異常點。
安全審計的場景更接近奇異點檢測,因為在安全審計針對的日志中,真正有危及數據安全意圖的操作往往極少,但是一旦發生,后果又是極其嚴重的。我們能獲得的日志數據,即使真實存在異常樣本,在其被發現前,都是無法標記的。在機器學習領域,這種方式被稱為無監督學習,其中典型的無監督學習就是聚類。聚類和異常檢測在原理上有著高度的相似性,而且一定程度上可以互補結合。本文提出的基于層次聚類與孤立森林相結合的異常檢測方法,便是為了解決在安全審計的異常檢測任務中,普遍存在的大量離散特征(如SQL語句、操作命令等)的檢測難點。
在聚類的場景中,我們事先不知道樣本有哪些類型。聚類算法的核心,是根據距離、密度等度量屬性,以類內距離盡可能小、類間距離盡可能大的原則,讓樣本自己形成若干個分群,再基于業務知識,根據各個分群的特點,得到分類標簽。
在聚類算法中,較為知名的是K均值算法,以其較低的復雜度和較高的可解釋性被廣泛應用,通過觀察該算法的邏輯,會發現其有一個應用前提[2]。由于計算過程中需要迭代計算聚類中心,樣本需要具備可以計算均值的特性。然而,在現實情況中,很多場景是無法計算樣本均值的,但是同樣可以得到聚類結果。比如說比較不同文本的相似性,我們可以定義各種度量文本相似性的距離,如漢明距離、編輯距離等,但是我們無法對文本求均值。在這種場景下,層次距離較為適用。顧名思義,層次聚類就是一層一層地進行聚類,可以由上向下把大的類別分割,稱為分裂法;也可以由下向上對小的類別進行聚合,稱為凝聚法;但是一般用得比較多的是由下向上的凝聚方法。這種聚類算法,僅僅要求樣本間兩兩可計算距離即可,本文在安全審計涉及的日志中遇到的離散文本,即是通過該算法進行聚類,進而對聚類結果進行異常檢測。
作為一種工業界常用的異常檢測算法,孤立森林算法對內存要求低,處理速度很快,可以很好地處理高維數據和大數據,并且也可以作為在線異常檢測。孤立森林算法的功能通俗而言,就是在一大堆數據中,找出與其他數據規律不太符合的數據。孤立森林算法的構建方法是在給定的數據中,把總體樣本隨機拆分成若干份,并基于每份樣本通過建立子樹,子樹不斷地往下生長延伸,其延伸的依據就是隨機選定樣本的一個特征,并在多個特征值中隨機選定一個特征值,對樣本進行劃分。隨著樹的生長,不斷地基于分割點把樣本重新劃分到不同的葉子節點上,當樹的深度達到設定的高度,或者葉子節點里所有的樣本所有特征值都完全一樣時,子樹就停止生長。孤立森林算法異常檢測的原理認為,與其他數據規律差異越大的數據,越容易被快速劃分出來,達到子葉的終止生長條件。根據長成的各個子樹到達終止條件時需要的次數、樹的生長高度等指標,就可以計算各個樣本相對于給定樣本總體的異常得分。
在孤立森林中,“異常”被定義為“容易被孤立的離群點”,可以將其理解為分布稀疏且離密度高的群體較遠的點。在特征空間里,分布稀疏的區域表示事件發生在該區域的概率很低,因而可以認為落在這些區域里的數據是異常的。對于查找哪些點容易被孤立,孤立森林使用了一套非常高效的策略。在孤立森林中,遞歸地隨機分割數據集,直到所有的樣本點都是孤立的。孤立森林可以用于網絡安全中的攻擊檢測、金融交易欺詐檢測、疾病偵測和噪聲數據過濾等。
判斷用戶行為是否異常,是基于用戶行為出現的頻次、密度等屬性來判斷的,但是實際獲取到的日志數據中,很多日志之間只是個別參數不一樣,而其他部分都是一樣的。在業務人員的理解中,這屬于一類行為;在統計頻次、密度等時,應計算在一起,而不應算在不同的用戶行為類型下,比如同樣一個模式的SQL語句,可能只是在個別參數有細微差異,我們需要先把這種模式下的所有相似SQL語句合并。因此,我們需要合并這些相似的日志,把合并結果作為行為類型標記。這種合并就需要通過層次聚類來完成。
層次聚類在整個異常檢測流程中,是在數據預處理及特征工程階段起作用的。在完成層次聚類合并后,我們才把得到的日志行為特征輸入孤立森林模型中訓練并檢測。
基于系統操作日志、數據庫操作日志、組件操作日志等各類日志,通過層次聚類算法合并日志中包含的相似行為,標記出若干類日志行為,在此基礎上,抽象出不同賬號各類日志行為的頻次、密度等特征,輸入孤立森林模型,輸出賬號所屬的每個行為的異常得分,并根據得分審計出各個行為的危險等級,最終把功能整合到大數據平臺的審計系統中,提高審計效率的同時,實現了基于不同賬戶行為的差異化精準審計,并在兼容傳統基于規則的審計方式的同時,解決了傳統審計方式規則維護成本高、審計范圍過于粗放的問題[3]。
基于層次聚類與孤立森林相結合的異常檢測方法,從日志數據預處理到審計結果輸出,由三個部分的模塊完成,依次是數據預處理及特征提取模塊、模型訓練模塊以及模型檢測輸出模塊。其中,模型檢測輸出模塊又分成兩個部分,分別是實時異常檢測模塊和批量異常檢測模塊,如圖1所示。

圖1 基于機器學習的安全審計異常檢測架構圖
考慮到日志數據的可拓展性,預處理及特征提取模塊對日志數據的讀取方式抽象成三類,分別是從文件系統讀取(包括HDFS及本地文件)、從關系型數據庫讀取及從ElasticSearch讀取。讀取到的日志數據經過預處理后,由關系型數據庫表保存,存儲結果如表1。
表1 安全審計的數據預處理及特征提取結果存儲結構

在對大數據共享平臺上各日志類型的特征進行抽象后,我們形成了如下幾種類型的特征,包括源地址、目的地址、非法時段操作次數、單位時間內數據量訪問大小、命令操作頻次等。選擇這些特征是由審計的業務層面決定的。從數據的安全性考慮,只要與數據安全有關的行為特征,都應被審計。
不同的特征還需要進行不同二次處理。二次處理包括以相似特征值合并、特征值數值化處理兩個操作為核心的若干處理過程,如表2所示。
2.2.1 相似特征值合并
判斷用戶行為是否異常,是基于用戶行為出現的頻次、密度等屬性來判斷的,但是實際獲取到的日志數據中,很多日志之間,只是個別參數不一樣,而其他部分都是一樣的。在業務人員的理解中,這屬于一類行為。統計頻次、密度等應計算在一起,而不應算在不同的用戶行為類型下,比如同樣一個模式的SQL語句,可能只是在個別參數有細微差異,我們需要先把這種模式下的所有相似SQL語句合并。因此,我們需要合并這些相似的日志,把合并結果作為行為類型標記。這種合并就需要通過層次聚類來完成[4]。
表2 安全審計的特征分類及二次處理方式

2.2.2 特征值數值化處理
在合并完成后,我們得到了每個特征字段包含的若干類行為。每類行為我們賦予一個數值ID,同屬一個行為ID的不同日志。對于行為頻次等特征,我們以合并后的行為ID來統計,而不是以原始日志特征值來統計;對于無法合并的,如源地址、目的地址等特征,我們則對給每個特征賦予一個數值ID,由此就完成了數值化處理的過程。之所以要進行數值化處理過程,是因為孤立森林算法要求輸入數據必須是數值形式。
以賬號最近三個月的行為特征為訓練數據,通過孤立森林算法,可以學習到賬號的正常行為輪廓,對于每個賬號輸入的行為特征,輸出其對應的異常得分,進而根據異常得分判斷用戶行為是否異常。
由于機器學習輸出的異常只是基于算法本身考慮,在安全審計中,常常有一些基于規則的要求。這要求模型輸出結果具備可調整性。此外,訓練模型的存儲和檢測效率問題也需要考慮。孤立森林模型輸出結果是以樹的形式保存的,不便于建模語言以外的編程語言調用[5]。
綜合上述因素,該階段輸出的模型訓練結果將以規則的形式存儲在數據庫內,并定時更新。人工調用的規則可以通過前端配置的方式干預。如對于特定賬號的源地址異常檢測,機器學習輸出結果考慮了該賬號的過去訪問習慣而返回的異常得分;而在安全審計場景中,可能對于特定賬號特定源地址,需要直接給出正常或異常的判斷。這種時候就可以通過修改規則數據,修正機器學習算法給出的判斷。
由于在訓練階段中,模型的訓練結果是以關系型數據庫保存的,因此在檢測階段,只需要考慮與關系型數據庫對接即可,不需要直接調用模型。預處理及特征提取模塊實時采集日志數據并對其進行特征提取;模型訓練模塊定時根據存儲的歷史數據進行模型更新;模型檢測輸出模塊根據訓練模塊的結果,輸出實時的檢測結果,檢測結果以異常得分體現。對于異常得分的閥值,模型本身有默認值,但作為一個檢測參數,該值可以通過前端配置的方式進行修改[6]。
在模型結果輸出階段,需要加載兩個模塊:一個是預處理及特征提取模塊;另一個是訓練好的模型。
對于實時檢測場景,當獲取到一條新日志時,數據采集模塊會首先把該日志推送到預處理及特征提取模塊,由于我們在歷史數據預處理及特征提取階段已經把用戶可能出現的日志行為進行了合并分類,所以這時候只需要獲取到當前新日志對于所屬分類及數值化ID,即可輸入歷史保存的模型中,得到異常檢測得分,并根據異常得分,映射到其風險等級,再匹配到不同級別的告警輸出[7]。
對于批量檢測場景,即事后定期審計場景,與實施檢測場景的不同地方只在于輸入及輸出的數據量大小,而其他流程是完全一致的。
表3 審計方案的實際應用場景

對于異常登錄檢測、敏感操作檢測等場景,傳統的審計由于方法的局限性,很多問題無法得到有效的審計和告警;而基于機器學習異常檢測算法,可以解決很多傳統審計方法無法解決的問題,如表3所示。
基于機器學習的安全審計異常檢測,可以在兼容傳統基于規則的審計方式的同時,解決傳統審計方式規則維護成本高、審計范圍過于粗放的問題。通過定期基于歷史數據對異常檢測模型進行訓練,實現了規則自動更新和維護;通過對每個賬號進行單獨的模型構建及預測,實現了以賬號為中心的精準化審計;通過對各個時間點的各種日志行為輸出異常得分,讓安全審計可以對各賬號的行為異常程度進行量化,進而通過控制異常得分的閥值控制安全審計的范圍。
[1]Kiss I,Genge B,Haller P,et al. Data clustering-based anomaly detection in industrial control systems[C]//IEEE International Conference on Intelligent Computer Communication and Processing. IEEE,2014:275-281.
[2]Liu F T,Kai M T,Zhou Z H. Isolation Forest[J]. 2008:413-422.
[3]Wang K,Wang Y,Yin B. A Density-Based Anomaly Detection Method for MapReduce[C]//IEEE International Symposium on Network Computing and Applications. IEEE,2012:159-162.
[4]Liu J,Deng H F. Outlier detection on uncertain data based on local information[J]. Knowledge-Based Systems,2013,51(1):60-71.
[5]Babnik T,Aggarwal R K,Moore P J. Principal Component and Hierarchical Cluster Analyses as Applied to Transformer Partial Discharge Data With Particular Reference to Transformer Condition Monitoring[J]. IEEE Transactions on Power Delivery,2008,23(4):2008-2016.
[6]Shiravi H,Shiravi A,Ghorbani A A. A Survey of Visualization Systems for Network Security[J]. IEEE Transactions on Visualization & Computer Graphics,2012,18(18):1313-1329.
[7]VarunChandola,Arindam Banerjee,Vipin Kumar. Anomaly detection:A survey[J]. ACM Computing Surveys (CSUR),2009,41(3):1-58.
Big Data Platform Based on Machine Learning Security Audit Anomaly Detection
Liang Meng
China Mobile Communications Group Guangdong Co., Ltd., Network Management Center, Guangdong Guangzhou 510623
The network big data platform of the communication operator stores a large amount of data containing sensitive information of the user, and must ensure that the platform data is not leaked through strong technical means. The traditional rule-based auditing method can not meet the timeliness and accuracy requirements of the security audit work under the massive log, and the application based on machine learning has been developing rapidly in big data in recent years. The paper comprehensively considers the requirements of the versatility, timeliness and accuracy of security audit work in different log types, and proposes a combination of hierarchical clustering and isolated forest for the abnormality detection of the large amount of data on the data sharing platform.
security audit; machine learning; hierarchical clustering; isolated forest; anomaly detection
TP393.0
A
梁猛,男,工程師,本科畢業于哈爾濱工業大學電子信息專業,現就職于中國移動廣東公司省網絡管理中心,主要研究方向為大數據架構設計及優化、機器學習。