張曉 李偉 谷豐強 高明慧 呂超
【摘 要】電力二次系統(tǒng)內(nèi)網(wǎng)存在大量的安全設(shè)備、業(yè)務(wù)系統(tǒng),同時伴隨著海量的日志數(shù)據(jù)信息。為了從這些告警的日志數(shù)據(jù)信息中,發(fā)掘現(xiàn)有設(shè)備、系統(tǒng)存在的問題,緩解后臺數(shù)據(jù)庫的負(fù)載壓力。本文提出一種日志信息解析歸并算法,能夠?qū)崿F(xiàn)告警日志數(shù)據(jù)歸并的快速定位,只對新告警數(shù)據(jù)進行相應(yīng)數(shù)據(jù)庫操作,對現(xiàn)有告警數(shù)據(jù)通過內(nèi)存中的二叉樹維護并定期與后臺數(shù)據(jù)庫同步。利用該方式提高了告警數(shù)據(jù)的入庫效率,同時降低了內(nèi)網(wǎng)安全監(jiān)視平臺數(shù)據(jù)庫負(fù)載。
【關(guān)鍵詞】syslog MD5 搜索 二叉樹
1 引言
隨著計算機網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,電力生產(chǎn)自動化水平日益提高,遠(yuǎn)程控制的大量運用,對電力控制系統(tǒng)和數(shù)據(jù)網(wǎng)絡(luò)的安全性、可靠性、實時性提出了新的嚴(yán)峻挑戰(zhàn)。為防范對電網(wǎng)和電廠計算機監(jiān)控系統(tǒng)及調(diào)度數(shù)據(jù)網(wǎng)絡(luò)的攻擊侵害,及由此引起的電力系統(tǒng)事故,保障電力系統(tǒng)的安全穩(wěn)定運行,需要建立和完善電網(wǎng)和電廠計算機監(jiān)控系統(tǒng)及調(diào)度數(shù)據(jù)網(wǎng)絡(luò)的安全防護體系。
目前,電力二次系統(tǒng)內(nèi)網(wǎng)安全監(jiān)視平臺的告警日志多為一個個孤立、沒有關(guān)聯(lián)性的信息,對于用戶來說多而雜亂,不利于整體上理解電力二次系統(tǒng)安全運行狀態(tài)及實時掌握告警事件。同時,內(nèi)網(wǎng)安全監(jiān)視平臺主要實現(xiàn)告警數(shù)據(jù)匯總功能,并沒有對海量告警數(shù)據(jù)進行二次分析,造成現(xiàn)場告警繁多,信息關(guān)聯(lián)性不強,不僅不利于反映電力二次系統(tǒng)安全風(fēng)險指標(biāo),還造成現(xiàn)場用戶疲于解決各類告警,嚴(yán)重影響內(nèi)網(wǎng)安全監(jiān)視平臺的生命力。
本文提出一種告警日志解析歸并算法,能夠有效的解決告警日志的解析分類問題,可以實現(xiàn)告警日志數(shù)據(jù)的快速定位。同時該方法只對新告警數(shù)據(jù)進行相應(yīng)數(shù)據(jù)庫操作,對現(xiàn)有告警數(shù)據(jù)通過內(nèi)存中的二叉樹維護并定期與后臺數(shù)據(jù)庫同步。利用該方式大大減少了告警日志數(shù)據(jù)的寫入數(shù)據(jù)庫操作,降低了內(nèi)網(wǎng)安全監(jiān)視平臺數(shù)據(jù)庫負(fù)載壓力。
2 背景
電力二次系統(tǒng)安全監(jiān)視平臺[1](以下簡稱內(nèi)網(wǎng)安全監(jiān)視平臺)主要用于電力二次系統(tǒng)的安全事件監(jiān)視、安全事件分析、統(tǒng)計報表、資產(chǎn)管理等。
廣域網(wǎng)安全監(jiān)視部分主要對部署在橫、縱向邊界的電力專用和通用安全設(shè)備運行情況和異常訪問情況進行實時監(jiān)視,通過日志的采集模塊采集在網(wǎng)絡(luò)中存在的異常訪問、非法外聯(lián)等重要的告警數(shù)據(jù),同時利用調(diào)度數(shù)據(jù)網(wǎng)實現(xiàn)下級調(diào)度中心的日志采集模塊和上級的調(diào)度中心內(nèi)網(wǎng)安全監(jiān)視平臺的級聯(lián)通信功能。
局域網(wǎng)安全監(jiān)視部分對調(diào)度自動化系統(tǒng)內(nèi)部關(guān)鍵設(shè)備和系統(tǒng)監(jiān)視,通過操作系統(tǒng)的接口,實時獲取調(diào)度技術(shù)支持系統(tǒng)的運行狀態(tài),在系統(tǒng)發(fā)生異常、非法操作或是外聯(lián)時,根據(jù)預(yù)先設(shè)定的規(guī)則,將告警數(shù)據(jù)上報到內(nèi)網(wǎng)安全監(jiān)視平臺,以供用戶實行全局的統(tǒng)計分析與綜合運用。
3 告警日志解析歸并算法設(shè)計
為了降低在大數(shù)據(jù)量告警日志情況下,對內(nèi)網(wǎng)安全監(jiān)視平臺的數(shù)據(jù)庫運行的壓力,避免出現(xiàn)告警信息丟失現(xiàn)象;方便用戶定位告警的真實來源,本文提出一種用于電力二次系統(tǒng)內(nèi)網(wǎng)安全監(jiān)視平臺的告警解析歸并方法,具體步驟如下圖1所示。
以下對本告警解析歸并方法的具體步驟展開詳細(xì)說明。
步驟1:構(gòu)建平衡二叉樹。
內(nèi)網(wǎng)安全監(jiān)視平臺的數(shù)據(jù)庫中實時存儲電力二次系統(tǒng)的安全設(shè)備告警數(shù)據(jù)。內(nèi)網(wǎng)安全監(jiān)視平臺啟動后,構(gòu)建空的平衡二叉樹;從告警信息表中獲取存儲的告警數(shù)據(jù)并逐條計算告警特征值;將這些告警特征值插入空的平衡二叉樹中;構(gòu)建含有告警數(shù)據(jù)的平衡二叉樹。
步驟2:接收告警數(shù)據(jù)。
內(nèi)網(wǎng)安全監(jiān)視平臺主要使用Syslog[2]方式采集安全設(shè)備的日志信息,并通過Syslog日志信息確定安全設(shè)備告警信息。電力系統(tǒng)專用安全設(shè)備(橫向隔離設(shè)備、縱向加密認(rèn)證裝置)使用Syslog方式直接采集日志信息;通用安全設(shè)備(防火墻、入侵檢測系統(tǒng)、防病毒系統(tǒng))通過Agent代理將日志轉(zhuǎn)換為符合電力系統(tǒng)標(biāo)準(zhǔn)格式的日志后采集;調(diào)度自動化系統(tǒng)內(nèi)部的關(guān)鍵設(shè)備和應(yīng)用通過Agent代理將日志轉(zhuǎn)換為標(biāo)準(zhǔn)格式發(fā)送至內(nèi)網(wǎng)安全監(jiān)視平臺。Syslog采用用戶數(shù)據(jù)報協(xié)議(UDP)作為其底層傳輸層機制,Syslog日志信息采用標(biāo)準(zhǔn)的UDP數(shù)據(jù)包向內(nèi)網(wǎng)安全監(jiān)視平臺發(fā)送信息。內(nèi)網(wǎng)安全監(jiān)視平臺主要采集廣域網(wǎng)安全監(jiān)視部分和局域網(wǎng)安全監(jiān)視部分傳送的告警原始數(shù)據(jù)。
廣域網(wǎng)安全監(jiān)視部分監(jiān)視二次系統(tǒng)安全設(shè)備(電力專用安全設(shè)備和通用安全設(shè)備),通過數(shù)據(jù)采集裝置實時采集網(wǎng)絡(luò)中存在的異常訪問,非法外連等重要告警信息。
局域網(wǎng)安全監(jiān)視部分監(jiān)視主站調(diào)度自動化系統(tǒng)內(nèi)部主機的安全狀態(tài),當(dāng)系統(tǒng)內(nèi)部主機發(fā)生異常、非法操作或外連時,向內(nèi)網(wǎng)安全監(jiān)視平臺發(fā)出告警。
步驟3:告警數(shù)據(jù)加入合法告警隊列。
內(nèi)網(wǎng)安全監(jiān)視平臺接收告警日志數(shù)據(jù)后,先將這些告警數(shù)據(jù)做數(shù)據(jù)合法性驗證,根據(jù)告警數(shù)據(jù)的合法性,將告警數(shù)據(jù)加入合法告警隊列。如果接收到的告警數(shù)據(jù)不合法,則將該不合法的告警數(shù)據(jù)丟棄。如果接收到的告警數(shù)據(jù)合法,則將該合法的告警數(shù)據(jù)加入合法告警隊列。這里的告警數(shù)據(jù)合法性校驗主要是校驗接收到告警數(shù)據(jù)的內(nèi)容格式是否符合標(biāo)準(zhǔn)的Syslog格式,并判斷告警內(nèi)容是否符合規(guī)范格式。
步驟4:告警數(shù)據(jù)加入監(jiān)視范圍內(nèi)告警隊列。
內(nèi)網(wǎng)安全監(jiān)視平臺對告警數(shù)據(jù)合法性驗證后,先將這些告警數(shù)據(jù)的源IP范圍做合法性驗證,根據(jù)告警數(shù)據(jù)源IP范圍的合法性,將告警數(shù)據(jù)加入監(jiān)視范圍內(nèi)告警隊列。如果接收到的告警數(shù)據(jù)的源IP范圍不合法,則將該不合法的告警數(shù)據(jù)丟棄。如果接收到的告警數(shù)據(jù)的源IP范圍合法,則將該合法的告警數(shù)據(jù)加入合法告警隊列。
步驟5:按告警設(shè)備類型分類告警隊列。
內(nèi)網(wǎng)安全監(jiān)視平臺對告警數(shù)據(jù)源的IP范圍做合法性驗證后,需根據(jù)告警數(shù)據(jù)中的告警信息將告警數(shù)據(jù)按告警設(shè)備類型分類成多個告警隊列。例如,防火墻隊列、IDS隊列、防病毒隊列、服務(wù)器隊列等。
步驟6:按分類告警隊列計算告警特征值。
內(nèi)網(wǎng)安全監(jiān)視平臺讀取分類后的告警隊列,從這些分類后的告警隊列中獲取當(dāng)前發(fā)送的報警數(shù)據(jù),并通過特征值提取算法計算特征值。
本文中優(yōu)選采用一種MD5算法[3~4]的優(yōu)化變形方法計算告警數(shù)據(jù)的特征值,具體計算過程如下:
(1)去除告警數(shù)據(jù)中的告警時間。告警內(nèi)容相同,但是告警時間可能不同,為保持告警數(shù)據(jù)的一致性所以需要去掉告警時間。
(2)去掉告警數(shù)據(jù)內(nèi)容中存在的空格??崭裥畔⒈旧韺τ诟婢瘍?nèi)容影響不大,為提高MD5運算效率,將空格信息去掉。
(3)計算處理后告警數(shù)據(jù)的MD5值并簡化計算結(jié)果。由于標(biāo)準(zhǔn)md5算法的特征值結(jié)果為16個字節(jié),考慮到電力業(yè)務(wù)特點及告警數(shù)據(jù)內(nèi)容有限性,同時為提高平衡二叉樹查找、插入效率,將16字節(jié)結(jié)果前8字節(jié)和后8字節(jié)進行異或,得到8字節(jié)的最終特征值結(jié)果。
步驟7:匹配告警特征值在否在平衡二叉樹中存在狀況并保存告警數(shù)據(jù)。
內(nèi)網(wǎng)安全監(jiān)視平臺計算出每條告警日志數(shù)據(jù)的特征值后,與內(nèi)網(wǎng)安全監(jiān)視平臺初始化后構(gòu)建的含有告警數(shù)據(jù)的平衡二叉樹比較。在平衡二叉樹中查找是否存在該特征值的節(jié)點;若不存在,將該節(jié)點插入平衡二叉樹和數(shù)據(jù)庫的告警信息表中;若存在,則更新平衡二叉樹上該節(jié)點的告警次數(shù)及告警結(jié)束時間。
4 實驗結(jié)果
電力二次系統(tǒng)安全監(jiān)控日志格式定義如下:“<告警級別><空格>告警時間<空格>設(shè)備名稱<空格>設(shè)備類型<空格>內(nèi)容描述”。電力二次系統(tǒng)安全監(jiān)控日志主要分為告警日志和審計日志。告警日志為緊急和重要級別,一般用于電力二次系統(tǒng)重大安全事件的實時告警;審計日志為次要和通告級別,一般用于電力二次系統(tǒng)運行情況的事后統(tǒng)計分析。
采集的原始日志及MD5值如下表1所示。
5 結(jié)語
本文提出一種告警日志解析歸并算法,該算法利用日志內(nèi)容計算MD5哈希,并以該哈希構(gòu)造平衡二叉樹,從而可以實現(xiàn)告警日志數(shù)據(jù)歸并的快速定位,同時定期與后臺數(shù)據(jù)庫同步。由于,現(xiàn)在僅對歸并后的告警日志信息進行入庫,所以大大提高了數(shù)據(jù)庫的操作效率,降低了內(nèi)網(wǎng)安全監(jiān)視平臺數(shù)據(jù)庫負(fù)載。
參考文獻:
[1]劉合富.基于syslog技術(shù)的防火墻日志數(shù)據(jù)采集方法的研究.華中師范大學(xué).
[2]黃文,謝冬青.基于Syslog的網(wǎng)絡(luò)日志管理分析模型.湖南科技學(xué)院學(xué)報,2006(05).
[3]魏曉玲.MD5.加密算法的研究及應(yīng)用.信息技術(shù),2010(07):145-151.
[4]R.Rivest.The MD5 Message- Digest Algorithm[R]. RFC1321,1992.
作者簡介:張曉(1972—),男,碩士,高級工程師,CISP,中國電機學(xué)會高級會員,研究方向:電網(wǎng)調(diào)度管理系統(tǒng)、電力二次系統(tǒng)安全防護、數(shù)據(jù)網(wǎng)絡(luò)建設(shè)。