余 錚 馮 浩 查志勇
(國網湖北省電力有限公司信息通信公司 武漢 430077)
隨著信息系統在國家電網中的廣泛運用,信息系統安全平穩地運行支撐壓力越來越大,導致信息系統以及大量支撐服務器的運維難度也逐漸加大。這些設備不斷產生出海量日志,通過對日志進行分析,其結果對于網絡安全起著重要的作用[1~2]。
在大數據情況下,傳統的日志分析方法容易導致網絡安全人員工作強度大。此外,新的攻擊方法層出不窮。這些情況的出現,使得傳統的日志分析不再有效,缺乏對網絡信息安全的全局認識,從而不能幫助信息系統做到提前防御、預測攻擊[3~6]。
如何幫助網絡信息安全人員高效地進行海量日志分析,就成為信息安全領域中一個急需解決的問題。
張驍[7]等利用分布式收集策略,對信息系統日志進行收集,并向用戶提供日志數據查詢服務。倪震[8]等人提出了面向電力大數據基于時間序列的日志分析算法,以及基于該算法的評價體系。王建民[9]則提出了結合特定領域需求開發的一體化平臺,該平臺在大數據生命周期內,提供給用戶實時分析的功能。
本文基于K-最近鄰算法(K-Nearest Neighbor,KNN),提出了未知攻擊識別算法。該算法能夠實時收集物理蜜罐系統的日志信息。這些日志信息可以用于判斷是否存在增刪賬號,關鍵文件是否被修改以及異常外聯等行為,從而判斷出信息系統的端口、進程、服務是否啟動或者異常。
目前,國家電網公司內部各領域及各專業在信息系統的支撐下高效運轉,信息系統運行支撐壓力越來越大,面對多套信息系統以及多臺服務器的運行維護工作量,運維人員少,工作任務艱巨。為此,本文擬開展信息系統運行態勢感知和全息智能預警技術的研究,通過總結經驗,利用信息化工具拓展基礎信息收集及分析方式,豐富運維管理手段,建立智慧運維體系雛形。
本文研究國家電網中的信息系統在多個場景中出現故障,在技術骨干人數有限,網絡和業務更新變化快的情況下,快速發現、定位和處理故障的難題,初步實現信息系統運行態勢感知[10]及智慧處理。為了實現信息系統的異常快速檢測和定位,本文首要研究目標是在電力大數據[8,11~15]情況下信息系統的日志快速分析。
在信息系統的總體架構設計過程中,規劃設計遵循“功能驅動”的原則,采用由應用架構到技術架構逐層驅動的方法,采用由應用架構到技術架構逐層驅動的方法。應用架構是從全息智能處置(業務應急保障)平臺系統功能需求的角度去清晰準確定義應用范圍、功能及模塊等;技術架構是基于應用架構,根據信息技術發展趨勢以及相應的實踐經驗,從系統具體實現角度提出系統總體的技術實現方案和軟硬件物理部署方式;各架構域在設計過程中是多次迭代。通過對應用架構和技術架構的規劃設計,為全息智能處置(業務應急保障)平臺系統的建設提供了有形、科學的方法,為技術方案的編制提供了依據和指導。
本文首要研究目標是在電力大數據[8,11~15]情況下,信息系統的日志快速分析。其日志分析模塊包括集中的管理中心、可支持分布式部署的日志采集引擎和代理程序三個部件。日志采集引擎和代理程序實現對數據源(操作系統、網絡設備、中間件、數據庫和信息系統等)的日志信息統一收集、格式化、過濾、聚合,然后上傳給管理中心進行集中化存儲[16]、分析、審計和展示。
1)管理中心
管理中心是日志分析模塊的核心部件,實現了對日志信息的集中化存儲、分析、審計、查詢、關聯、告警,以及出具報表報告。管理中心支持三權分立,不同權限人員可通過瀏覽器登錄管理中心,進行相關操作。
2)采集引擎
日志采集引擎可以和管理中心部署在同一臺硬件設備上,也可以探針模式獨立運行,實現對異構數據源的日志采集,且具有分布式采集能力。
日志采集引擎可通過syslog、SNMP、ssh、telnet、WMI、jdbc 等方式遠程收集各類數據源的原始日志信息,經過格式化、過濾、聚合后轉發給管理中心。
3)代理程序
代理程序用于安裝并運行在審計對象上,實現對審計對象的日志信息源采集和轉發。代理程序可支持Windows、Linux 操作系統,可用于采集操作系統日志以及特殊應用系統的純文本型日志。同時代理程序還可實現文件完整性檢查、Windows 注冊表監控、rootkit檢測等功能。
日志分析模塊采用B/S 架構,管理員通過HTTPS 方式對系統進行管理。系統架構包括審計數據源層、日志采集引擎、核心層和應用層。如圖1所示。
1)數據源層
數據源層包括各類型的網絡設備、數據庫、應用系統、主機等,本模塊從以上數據源獲取原始日志信息。
2)采集引擎
該層利用syslog、SNMP、ssh、telnet、WMI、jdbc、文件等多種協議方式,從數據源獲取日志信息,并對原始日志信息進行范式化、分類、過濾、歸并,統一推送到核心層進行分析、存儲。
3)核心層
通過日志流聚合引擎實現日志抽取;利用基于CMDB(配置管理數據庫)的關聯分析引擎對采集的安全信息進行分析、觸發規則、生成告警記錄;通過高性能海量數據存儲代理將異常事件或告警信息進行快速存儲;通過分布式查詢引擎實現日志查詢。
4)應用層
面向系統的使用者,提供一個圖形化的顯示界面,展現本系統的各功能模塊,提供綜合展示、資產管理、日志審計、基線監控、拓撲展示、規則管理、告警管理、報表管理、態勢展示、系統管理等功能。

圖1 日志分析模塊技術架構
K-最近鄰算法(KNN 算法)是一種機器學習(Machine Learning,ML)算法,其原理是用一組預先定義的已知模式,來分類識別未知模式。
在日志分析模塊中,首先從日志中實時收集、分析的結果中提取未知攻擊的模式,然后與所有預定義的攻擊模式(已知模式)進行距離(Distance)進行計算,并將未知攻擊歸類為距離最近的已知攻擊。
在日志分析模塊中,對已知攻擊模式[13,17]及其特征預定義如表1 所示(只給出部分攻擊模式示例)。

表1 部分攻擊模式示例
要實現最近鄰距離計算,除了要預定義各種攻擊模式及其特征外,還要為各特征定義基線閾值,才能為距離計算提供一組標準度量。
下面以過多的出站流量(EOT)為例進行說明。日志分析模塊通過一段時間(4 周~6 周)的基線學習,來采集數據信息。一旦采集到足夠的數據信息后,就可以確定EOT 這個攻擊特征的基線閾值。其計算基線閾值的步驟如下:
1)獲取平均值
首先使用均值法,找出各數據信息采集點的平均值μ:

2)獲取標準偏差
使用標準差公式,該方法用于測量數據中的變異量。具體公式如下:

3)計算標準誤差
標準誤差S用于確定置信區間。在日志分析模塊中,用標準誤差S來表示未來可能落入的區間。其具體公式如下:

4)95 %的置信區間
按照統計學原理,將標準誤差S乘以1.96(基于95%的置信區間)
5)求基線閾值范圍,該范圍X為

在日志分析模塊中,使用公式來比較未來的數據點。如果未來的數值落入這個范圍,那么和基線不一定有太大的差異;如果未來的數值落入這個區間外,則與基線有差異,觸動閾值。
在獲得了每個已知攻擊模式的特征,以及特征的基線閾值后,可基于KNN 算法進行最近鄰距離計算。一般使用歐幾里德距離D公式:

其中:p和q是兩個數據向量。p為一段時間內(5 分鐘、10 分鐘、1小時、甚至一個月)針對某一IP 地址(源或目的IP 地址)的未知攻擊模式的特征集合;q為已知攻擊模式的特征集合;i為未知攻擊模式的特征數量。
當i在每組向量和每個攻擊模式的特征中循環時,計算未知攻擊模式特征集合與每個已知攻擊模式的特征集合之間的距離。其中最近鄰,就是該未知攻擊所屬的已知攻擊分類。
下面以基于日志分析提取的攻擊特征,通過KNN算法,來實現對未知攻擊的識別。如表2所示(只給出部分未知攻擊模式示例):

表2 部分未知攻擊模式示例
本文主要研究了電力大數據在日志分析中的應用。設計了基于KNN 算法的未知攻擊識別算法,并將該算法應用于電力大數據的信息系統中。經實驗表明,該信息系統中的日志分析模塊,通過合理的架構,優化了計算效率,在運行效率和運行時間上都優于傳統的日志分析平臺。
該日志分析模塊,可以實時收集物理蜜罐系統的日志信息;能夠準確判斷是否存在增刪帳號;端口、進程、服務啟動或者異常;關鍵文件是否修改以及異常外聯等行為。同時,該日志分析模塊,可以通過sebek 收集非授權用戶的鍵盤操作日志;還可以收集網絡邊界安全防護設備(如:防火墻、IDS、IPS、WAP、流量清洗設備等)的告警日志。