劉思堯 李斌
摘要:為電力信息系統(tǒng)實現(xiàn)日志審計和日志分析,已經(jīng)成為電力信息化管理部門首先需要解決的問題。本文設(shè)計并實現(xiàn)了一個基于ELK的電力信息監(jiān)控日志審計系統(tǒng)。系統(tǒng)通過logstash、redis、elasticsearch實現(xiàn)對操作行為日志、設(shè)備運行日志、上網(wǎng)行為日志、維護記錄日志的分布式采集存儲,經(jīng)過數(shù)據(jù)格式化、用戶識別、會話識別、路徑補充等于處理后,利用并行化的K-Means聚類算法對日志進行審計分析,發(fā)現(xiàn)和捕獲海量日志中的異常行為和違規(guī)行為。實驗表明,系統(tǒng)可以實現(xiàn)電力企業(yè)信息系統(tǒng)的安全審計功能。
關(guān)鍵詞:日志審計; ELK; 安全監(jiān)控; K-Means; 異常檢測
中圖分類號:TP274 文獻標識碼:A 文章編號:1009-3044(2016)30-0061-04
The Implementation of Electricity Information Monitoring Log Audit System Based ELK
LIU Si-yao,LI Bin
(State Grid Ningxia Electric Power Company, Yinchuan 750001, China)
Abstract: Electric information systems logs audit has become the main issues of information management department. This paper design and implement an electricity information monitoring log audit system based ELK. It applies logstash, redis, elasticsearch to collect and store operational behavior logs, equipment operation logs, Internet behavior log, the maintenance log. After the pre-processing such as data formatting, user identification, session identification, path supplement, the parallel K-Means clustering algorithm is used to discover abnormal behavior and irregularities from massive log. Experimental results show that the system can achieve security audit functions for electric enterprise information system.
Key words:log audit; ELK; security monitoring; K-Means ; anomaly detection
1 概述
電力產(chǎn)業(yè)是典型的技術(shù)密集型和設(shè)備密集型行業(yè)[1],隨著智能電網(wǎng)的建設(shè)和推進,通訊、計算機、自動化等信息化技術(shù)在電網(wǎng)中得到了廣泛深入的應(yīng)用。目前,信息化技術(shù)已經(jīng)在電力行業(yè)的生產(chǎn)、調(diào)度、傳輸、管理等多個業(yè)務(wù)層面上得到了深度應(yīng)用,如電力數(shù)據(jù)采集、系統(tǒng)監(jiān)控、故障管理、能力管理等信息化系統(tǒng)已被廣泛接受。然而,信息化技術(shù)同時也為電力行業(yè)帶來了眾多困擾和問題。信息化系統(tǒng)的開放性會導(dǎo)致越來越多的非法訪問、黑客攻擊等外部入侵問題,以及非法操作、越權(quán)操作、信息泄露等內(nèi)部安全問題。特別是,智能電網(wǎng)更加注重網(wǎng)絡(luò)化、智能化和集約化,各種業(yè)務(wù)均需要在信息系統(tǒng)、互聯(lián)網(wǎng)絡(luò)開展,電力企業(yè)面臨著嚴重的信息安全隱患問題。因此,為電力信息系統(tǒng)實現(xiàn)日志審計和日志分析,通過業(yè)務(wù)系統(tǒng)的運行日志分析系統(tǒng)中存在的安全隱患,已經(jīng)成為電力信息化管理部門首先需要解決的問題。
電力企業(yè)的設(shè)備和信息系統(tǒng)每天都產(chǎn)生海量日志,而且由于設(shè)備眾多產(chǎn)生的日志格式不一、種類多樣,亟需建立統(tǒng)一的日志分析平臺,進行統(tǒng)一維護。根據(jù)電力行業(yè)信息系統(tǒng)和網(wǎng)絡(luò)應(yīng)用的特點,日志主要包含四類:1)操作行為日志,即對電力關(guān)鍵信息系統(tǒng)以及關(guān)鍵業(yè)務(wù)的操作行為日志;2)設(shè)備運行日志,即電力信息化系統(tǒng)所包括的如防火墻、入侵檢測、小型機、業(yè)務(wù)系統(tǒng)的運行日志;3)上網(wǎng)行為日志,即內(nèi)部業(yè)務(wù)人員的網(wǎng)絡(luò)訪問行為及外部的訪問行為;4)維護記錄日志,即對關(guān)鍵設(shè)備的維護過程、違規(guī)操作行為的記錄。本文針對這些異構(gòu)日志,采用ELK技術(shù)搭建實時日志分析平臺,使得電力運維人員從海量的日志信息中準確地監(jiān)控及維護所需的信息,快速定位并解決設(shè)備運行過程中的錯誤。
2 相關(guān)工作
當前,日志管理和審計技術(shù)已經(jīng)成為了保障企業(yè)信息系統(tǒng)和網(wǎng)絡(luò)安全的重要手段,國內(nèi)外已經(jīng)有了很多研究并出現(xiàn)了眾多產(chǎn)品。典型的日志審計系統(tǒng)有NFR-SLR安全日志庫審計系統(tǒng)[2]、思福迪LogBase日志管理綜合審計系統(tǒng)[3]、網(wǎng)神SecFox-LAS日志審計系統(tǒng)[4]和NAR2日志審計系統(tǒng)[5]等。
NFR-SLR安全日志庫審計系統(tǒng)包括日志采集代理、日志管理和日志存儲等三個模塊。其工作流程是首先通過日志采集代理將從設(shè)備采集來的數(shù)據(jù)交給日志存儲模塊進行集中存儲;然后日志管理對日志進行預(yù)處理并對規(guī)范處理后的數(shù)據(jù)進行分析和報表統(tǒng)計生成。該系統(tǒng)的問題是日志采集代理對日志數(shù)據(jù)不做消冗處理,導(dǎo)致存儲空間和傳輸帶寬的浪費。
思福迪LogBase日志管理綜合審計系統(tǒng)采用了智能分析技術(shù)和自動采集技術(shù),將系統(tǒng)、應(yīng)用軟件日志以及操作行為進行規(guī)范化處理,之后對日志進行分析處理,發(fā)現(xiàn)系統(tǒng)中存在的安全隱患和故障定位。但是該系統(tǒng)是直接對日志進行采集,導(dǎo)致整個系統(tǒng)的計算壓力較大。
由上可見,市場上的通用日志管理系統(tǒng)功能基本一致,但應(yīng)用于電力等特定行業(yè),無法滿足行業(yè)的特定功能需求,本文試圖采用ELK建立電力行業(yè)的信息監(jiān)控日志審計系統(tǒng)。ELK是一個開源實時日志分析平臺[6],包括Elasticsearch( 彈性搜索)、Logstash( 日志采集)、Kibana( 統(tǒng)計展示) 等三個開源系統(tǒng)。其中,Elasticsearch建立在Lucene基礎(chǔ)之上,可以提供海量數(shù)據(jù)、分布式的檢索功能,將其應(yīng)用于云平臺中,能夠?qū)崿F(xiàn)快速配置、索引自動分片、實時檢索等功能;Logstash可以提供日志采集、分析的功能;kibana可以為Logstash 和 ElasticSearch提供豐富的網(wǎng)頁交互頁面,能夠?qū)崿F(xiàn)日志數(shù)據(jù)的統(tǒng)計、分析和搜索。
3 日志審計系統(tǒng)
3.1 系統(tǒng)架構(gòu)
基于ELK的電力信息監(jiān)控日志審計系統(tǒng)的體系結(jié)構(gòu)總體上分為日志采集、日志預(yù)處理和日志分析三個部分。
在日志采集模塊,系統(tǒng)采用logstash、redis、elasticsearch等組件構(gòu)成分布式日志收集系統(tǒng)。首先由一級logstash分別收集各個web服務(wù)器產(chǎn)生的日志,并由一級logstash對日志進行簡單的過濾,再傳遞給二級logstash。為了解決收發(fā)速率不一致而導(dǎo)致的丟包問題,在兩級logstash之間安裝redis,它提供緩存作用(redis性能強大在本系統(tǒng)中僅需安裝一個即可滿足要求),最后存入elasticsearch集群。在elasticsearch中,利用本文設(shè)定的數(shù)據(jù)預(yù)處理規(guī)則編寫python程序?qū)eb日志進行數(shù)據(jù)預(yù)處理,將日志轉(zhuǎn)化為可以進行聚類分析的數(shù)據(jù)格式后再存入elasticsearch集群。日志分析模塊從日志收集模塊獲取數(shù)據(jù)存入HDFS,再交由Map和Reduce利用k-means算法進行分布式聚類分析,并得到異常檢測規(guī)則。
3.2 關(guān)鍵技術(shù)實現(xiàn)
3.2.1 日志收集模塊
日志收集模塊主要由logstash、redis、elasticsearch三種開源部件組成。數(shù)據(jù)收集模塊的主要功能是采集所有目標服務(wù)器中實時產(chǎn)生日志并進行日志預(yù)處理和特征提取。本文采用兩級logstash的分布式的數(shù)據(jù)收集模塊,其中一級logstash主要起日志發(fā)送和數(shù)據(jù)清理的作用。通過設(shè)置logstash的配置文件,可實現(xiàn)實時的收集各個服務(wù)器產(chǎn)生的日志,并根據(jù)數(shù)據(jù)清理的規(guī)則,過濾掉無意義日志;二級logstash起到接收日志的作用,它將接收到的web日志傳遞給elasticsearch集群。為了防止發(fā)送和接收速率不一致而導(dǎo)致的數(shù)據(jù)丟失問題,本系統(tǒng)在兩級logstash之間搭建了redis部件,它主要起到緩存作用。當web日志存入elasticsearch集群后,再進行日志預(yù)處理,將web日志轉(zhuǎn)化成會話數(shù)據(jù)集后再存入elasticsearch集群。
Logstash在日志收集模塊中的作用有:日志解析,發(fā)送數(shù)據(jù)和數(shù)據(jù)凈化。在實際生成的數(shù)據(jù)中,尤其是來自不同服務(wù)器的日志中,往往存在大量的字段不完整的、或是含有噪聲的,甚至是數(shù)據(jù)格式不一致的數(shù)據(jù)。如果將這些數(shù)據(jù)直接用于數(shù)據(jù)挖掘,必然不能獲得良好的效果,因此必須進行數(shù)據(jù)的預(yù)處理,使它們達到統(tǒng)一的格式,進而滿足數(shù)據(jù)挖掘的需要。本系統(tǒng)通過logstash的input函數(shù)設(shè)置接收數(shù)據(jù),實現(xiàn)實時監(jiān)聽web服務(wù)器生成的日志文件,并進行接收。再通過自定義logstash的filter函數(shù),對日志文件進行解析,過濾,或者必要的修改等簡單的預(yù)處理。最后通過設(shè)置output函數(shù)選擇logstash的輸出位置,及使用的傳輸協(xié)議。
由于日志的生成速度可能不斷變化和數(shù)據(jù)存儲及分析系統(tǒng)對數(shù)據(jù)處理速度變化等因素的影響,可能導(dǎo)致日志的發(fā)送速度與接收速度不一致,而logstash雖然本身有緩存功能,但是性能較差,工程效果不好,因此本系統(tǒng)采用了redis部件。Redis主要解決了日志收發(fā)速度不一致而導(dǎo)致的日志丟失問題,它在整個系統(tǒng)中主要起到緩存的作用。當日志的發(fā)送速度大于接收速度時,會在redis部件中進行緩存,進而保證日志不會丟失。由于redis性能強大以及綜合本系統(tǒng)的實際情況,搭建一個redis便可保證日志收集系統(tǒng)正常運行??紤]到網(wǎng)絡(luò)環(huán)境的變化,也可以搭建成redis集群。
Elasticsearch集群在本系統(tǒng)中的作用是:日志存儲和備份以及向網(wǎng)絡(luò)管理員提供日志搜索服務(wù)。在日志傳入elasticsearch集群后,利用python編程語言編寫日志處理程序進行數(shù)據(jù)處理。由于此過程需要反復(fù)搜索日志,因此本系統(tǒng)選取提供高速搜索方案的elasticsearch作為數(shù)據(jù)庫。
3.2.2 日志預(yù)處理模塊
由于各種原因,采集的日志數(shù)據(jù)可能存在數(shù)據(jù)遺漏、數(shù)據(jù)冗余、噪聲數(shù)據(jù)等現(xiàn)象,在日志分析前,需要首先進行數(shù)據(jù)預(yù)處理。日志數(shù)據(jù)預(yù)處理的過程主要包括數(shù)據(jù)格式化、用戶識別、會話識別、路徑補充等。
數(shù)據(jù)格式化是指將日志記錄中缺失的字段補充完整,如在web訪問中的Request字段的URL信息不完整,/index.asp是web日志中某一條的Request字段,將其信息補充完整后為www.test.com/index.asp。
用戶識別是指從多條日志中識別出同一用戶。由于局域網(wǎng)以及代理服務(wù)器存在的原因,在日志中準確的辨別每一個用戶是比較困難的,比如可能出現(xiàn)以下多種情況:同一用戶可能通過不同的終端訪問web服務(wù)器;同一用戶在同一終端使用不同的瀏覽器訪問服務(wù)器;多個用戶使用同一代理訪問服務(wù)器。因此在對日志進行數(shù)據(jù)挖掘之前應(yīng)該詳細分析日志記錄,區(qū)分各種情況的用戶。本文采用啟發(fā)式規(guī)則方式進行用戶識別:
規(guī)則1:使用不同IP地址的日志視為不同用戶;
規(guī)則2:對具有相同IP地址的多條日志記錄,如果使用的瀏覽器或者系統(tǒng)不一樣則視為不同用戶;
規(guī)則3:對具有相同IP地址且使用相同的瀏覽器和操作系統(tǒng)的用戶則根據(jù)網(wǎng)絡(luò)拓撲結(jié)構(gòu)進行區(qū)分。例如:用戶訪問的某個頁面不能從已往訪問的任何一個頁面的超級鏈接到達,則認為這是一個新的用戶。
會話識別的主要目的是從大量的雜亂的日志中,重構(gòu)用戶訪問的行為序列。經(jīng)典的會話識別方法有以下幾種,Timeout方法:在用戶識別的基礎(chǔ)上,連續(xù)多個請求的時間間隔超過一定的閾值時便定為會話的邊界,經(jīng)過Pit的實驗證明[7]:比較合理的時間閥值為26分鐘,但在實際商業(yè)應(yīng)用中通常設(shè)置閥值為30分鐘;對網(wǎng)站所有頁面設(shè)置固定的訪問時間閥值,如果超過閥值則將此頁面視為兩段會話的邊界;最大向前序列法:此方法根據(jù)用戶訪問行為進行會話識別,如果用戶后退訪問已經(jīng)瀏覽過的頁面,則視為新的會話的開始。目前,Timeout法是研究和應(yīng)用最多的方法。綜合以上三種方法,本系統(tǒng)采用三條規(guī)則進行會話識別,按優(yōu)先級排序如下:
1)如果在訪問頁面A后訪問頁面B,且頁面B是頁面A中的超級鏈接之一,則視為B屬于A的會話集;
2)在同一頁面上停留的時間不超過10min。如果用戶在某一頁面停留時間超過10分鐘,對訪問下個頁面則視為下一次會話的開始;
3)單個會話時間不超過30min。放入同一會話集A中的所有日志,必須在30分鐘內(nèi),如果時間超過30分鐘,則視為下一次會話。
路徑補充主要是為了補充在日志中沒有記錄的用戶訪問請求,進而獲得完整的有意義的用戶訪問路徑。由于瀏覽器或者代理服務(wù)器的緩存功能,經(jīng)常會導(dǎo)致那些緩存的頁面和訪問對象的丟失。通常先進行會話識別再進行路徑補充。例如,頁面B和C同屬于頁面A的超級鏈接,用戶在訪問頁面A后,A被緩存在本地瀏覽器中,用戶在訪問頁面B后,返回訪問A,再訪問C。A—B—A—C這是用戶實際的訪問順序,但是由于A被緩存在本地,所以第二次訪問A的記錄會丟失,在服務(wù)器的日志中,記錄的用戶訪問順序可能為A—B—C。這就需要進行路徑補充。
例如web服務(wù)器日志經(jīng)會話處理后得到一條會話為A-D-I-M-S-K-P,經(jīng)與web站點結(jié)構(gòu)圖對比,此會話中S頁面無直接到達K頁面的超級鏈接,因此此處需要做會話補充(雖然用戶可以通過輸入URL直接訪問K頁面,但是這種情況非常少,幾乎不影響數(shù)據(jù)挖掘的結(jié)果)。從S頁面處按照用戶訪問路徑倒序查找,直到找到能直接訪問K頁面的D頁面為止,上述會話經(jīng)路徑補充后的結(jié)果為A-D-I-M-S-M-I-D-K-P。路徑補充還可能出現(xiàn)以下情況:B-E-L-D-I-M,顯然通過L頁面不能直接訪問D頁面,而且此會話中L頁面之前的頁面都不能直接訪問D,對此情況本文將其拆分為兩條會話B-E-L和D-I-M。
3.2.3 日志分析模塊
日志分析的目的是從海量日志中挖掘出正常行為和異常行為,因為同類行為有相似的特征,本文采用基于并行化K-Means聚類的日志分析算法,將正常行為和異常行為分別聚類,提取異常檢測規(guī)則。
Map函數(shù)在異常檢測的主要作用是判斷每條數(shù)據(jù)的訪問類型。HDFS將n條數(shù)據(jù)分別與異常檢測規(guī)則(k個質(zhì)心)組成n對
通過combine和reduce函數(shù),將屬于同一訪問類型的數(shù)據(jù)進行合并。Combine將在接收到mapper的輸出后,將具有同樣key值(訪問類型)的數(shù)據(jù)傳入同一reducer。在本系統(tǒng)中只有4種訪問類型,因此只需要固定的4個reducer。每個Reducer將收到的數(shù)據(jù)進行合并后輸出,如reduce2輸出的 4 實驗 實驗環(huán)境由7個云平臺虛擬機(如圖3所示),另外還有3臺筆記本和一臺臺式機。所有電腦都采用Ubuntu系統(tǒng),其中用三臺筆記本電腦模擬web服務(wù)器,一級logstash直接搭建在web服務(wù)器上,在日志收集模塊中起發(fā)送日志的作用。用一臺臺式機搭建redis,它在發(fā)送和接收日志間起到緩存的作用。三臺云平臺虛擬機搭建elasticsearch集群,起到存儲的作用。Hadoop搭建在4臺云平臺虛擬機上,其中一臺做Master節(jié)點,另三臺分別做slaves節(jié)點。主機Master作為HDFS的NameNode節(jié)點以及MapReduce的Task Tracker節(jié)點,主要負責日志分析。 為了測試本文的日志審計系統(tǒng)的性能,采用Web日志安全分析工具v2.0作為對比基準。Web日志安全分析工具v2.0根據(jù)自身的特征庫定義的常見攻擊的攻擊特征,采用正則表達式匹配的方式進行入侵檢測。默認可以檢測XSS攻擊、SQL注入攻擊、CSRF攻擊等多種攻擊類型。 通過上圖測試結(jié)果對比,可以明顯地看到,本系統(tǒng)對跨站腳本攻擊、SQL注入攻擊和跨站請求偽造攻擊的檢測率明顯高于傳統(tǒng)的web日志安全分析工具v2.0。 5 結(jié)論 本文通過利用ELK構(gòu)建電力企業(yè)的信息監(jiān)控日志審計系統(tǒng),采集電力信息系統(tǒng)和設(shè)備的操作行為日志、設(shè)備運行日志、上網(wǎng)行為日志、維護記錄日志,在日志預(yù)處理的基礎(chǔ)上,利用并行化K-Means聚類算法發(fā)現(xiàn)和捕獲海量日志中的異常行為和違規(guī)行為,為保障電力企業(yè)信息安全提供支持。 參考文獻: [1] 段娟.基于Web應(yīng)用的安全日志審計系統(tǒng)研究與設(shè)計[J].信息網(wǎng)絡(luò)安全,2014(10):70-76. [2] 吳志用.日志審計系統(tǒng)中預(yù)處理關(guān)鍵技術(shù)研究[D].杭州:浙江工商大學(xué),2011. [3] 查穹,丁峰,倪曉勤.天融信防火墻日記審計系統(tǒng)的搭建與配置[J].電腦知識與技術(shù),2013,9(23): 5227-5228. [4] 周琪鋒.基于網(wǎng)絡(luò)日志的安全審計系統(tǒng)的研究與設(shè)計[J].計算機技術(shù)與發(fā)展,2009,19(11). [5] 周映,韓曉霞. ELK日志分析平臺在電子商務(wù)系統(tǒng)監(jiān)控服務(wù)中的應(yīng)用[J].信息技術(shù)與標準化 ,2016(7):67-70. [6]趙偉, 何不廉, 陳霞, 等. web日志挖掘中的數(shù)據(jù)預(yù)處理技術(shù)研究[J]. 計算機應(yīng)用,2003, 23(5):62-67. [7]Cooley R, Mobasher B, Srivastava J. Data Preparation for Mining World Wide Web Browsing Patterns[J]. Journal of Knowledge and Information Systems, 1999, 1(1): 5-32.