张晓 李伟 谷丰强 高明慧 吕超
【摘 要】电力二次系统内网存在大量的安全设备、业务系统,同时伴随着海量的日志数据信息。为了从这些告警的日志数据信息中,发掘现有设备、系统存在的问题,缓解后台数据库的负载压力。本文提出一种日志信息解析归并算法,能够实现告警日志数据归并的快速定位,只对新告警数据进行相应数据库操作,对现有告警数据通过内存中的二叉树维护并定期与后台数据库同步。利用该方式提高了告警数据的入库效率,同时降低了内网安全监视平台数据库负载。
【关键词】syslog MD5 搜索 二叉树
1 引言
随着计算机网络技术的广泛应用,电力生产自动化水平日益提高,远程控制的大量运用,对电力控制系统和数据网络的安全性、可靠性、实时性提出了新的严峻挑战。为防范对电网和电厂计算机监控系统及调度数据网络的攻击侵害,及由此引起的电力系统事故,保障电力系统的安全稳定运行,需要建立和完善电网和电厂计算机监控系统及调度数据网络的安全防护体系。
目前,电力二次系统内网安全监视平台的告警日志多为一个个孤立、没有关联性的信息,对于用户来说多而杂乱,不利于整体上理解电力二次系统安全运行状态及实时掌握告警事件。同时,内网安全监视平台主要实现告警数据汇总功能,并没有对海量告警数据进行二次分析,造成现场告警繁多,信息关联性不强,不仅不利于反映电力二次系统安全风险指标,还造成现场用户疲于解决各类告警,严重影响内网安全监视平台的生命力。
本文提出一种告警日志解析归并算法,能够有效的解决告警日志的解析分类问题,可以实现告警日志数据的快速定位。同时该方法只对新告警数据进行相应数据库操作,对现有告警数据通过内存中的二叉树维护并定期与后台数据库同步。利用该方式大大减少了告警日志数据的写入数据库操作,降低了内网安全监视平台数据库负载压力。
2 背景
电力二次系统安全监视平台[1](以下简称内网安全监视平台)主要用于电力二次系统的安全事件监视、安全事件分析、统计报表、资产管理等。
广域网安全监视部分主要对部署在横、纵向边界的电力专用和通用安全设备运行情况和异常访问情况进行实时监视,通过日志的采集模块采集在网络中存在的异常访问、非法外联等重要的告警数据,同时利用调度数据网实现下级调度中心的日志采集模块和上级的调度中心内网安全监视平台的级联通信功能。
局域网安全监视部分对调度自动化系统内部关键设备和系统监视,通过操作系统的接口,实时获取调度技术支持系统的运行状态,在系统发生异常、非法操作或是外联时,根据预先设定的规则,将告警数据上报到内网安全监视平台,以供用户实行全局的统计分析与综合运用。
3 告警日志解析归并算法设计
为了降低在大数据量告警日志情况下,对内网安全监视平台的数据库运行的压力,避免出现告警信息丢失现象;方便用户定位告警的真实来源,本文提出一种用于电力二次系统内网安全监视平台的告警解析归并方法,具体步骤如下图1所示。
以下对本告警解析归并方法的具体步骤展开详细说明。
步骤1:构建平衡二叉树。
内网安全监视平台的数据库中实时存储电力二次系统的安全设备告警数据。内网安全监视平台启动后,构建空的平衡二叉树;从告警信息表中获取存储的告警数据并逐条计算告警特征值;将这些告警特征值插入空的平衡二叉树中;构建含有告警数据的平衡二叉树。
步骤2:接收告警数据。
内网安全监视平台主要使用Syslog[2]方式采集安全设备的日志信息,并通过Syslog日志信息确定安全设备告警信息。电力系统专用安全设备(横向隔离设备、纵向加密认证装置)使用Syslog方式直接采集日志信息;通用安全设备(防火墙、入侵检测系统、防病毒系统)通过Agent代理将日志转换为符合电力系统标准格式的日志后采集;调度自动化系统内部的关键设备和应用通过Agent代理将日志转换为标准格式发送至内网安全监视平台。Syslog采用用户数据报协议(UDP)作为其底层传输层机制,Syslog日志信息采用标准的UDP数据包向内网安全监视平台发送信息。内网安全监视平台主要采集广域网安全监视部分和局域网安全监视部分传送的告警原始数据。
广域网安全监视部分监视二次系统安全设备(电力专用安全设备和通用安全设备),通过数据采集装置实时采集网络中存在的异常访问,非法外连等重要告警信息。
局域网安全监视部分监视主站调度自动化系统内部主机的安全状态,当系统内部主机发生异常、非法操作或外连时,向内网安全监视平台发出告警。
步骤3:告警数据加入合法告警队列。
内网安全监视平台接收告警日志数据后,先将这些告警数据做数据合法性验证,根据告警数据的合法性,将告警数据加入合法告警队列。如果接收到的告警数据不合法,则将该不合法的告警数据丢弃。如果接收到的告警数据合法,则将该合法的告警数据加入合法告警队列。这里的告警数据合法性校验主要是校验接收到告警数据的内容格式是否符合标准的Syslog格式,并判断告警内容是否符合规范格式。
步骤4:告警数据加入监视范围内告警队列。
内网安全监视平台对告警数据合法性验证后,先将这些告警数据的源IP范围做合法性验证,根据告警数据源IP范围的合法性,将告警数据加入监视范围内告警队列。如果接收到的告警数据的源IP范围不合法,则将该不合法的告警数据丢弃。如果接收到的告警数据的源IP范围合法,则将该合法的告警数据加入合法告警队列。
步骤5:按告警设备类型分类告警队列。
内网安全监视平台对告警数据源的IP范围做合法性验证后,需根据告警数据中的告警信息将告警数据按告警设备类型分类成多个告警队列。例如,防火墙队列、IDS队列、防病毒队列、服务器队列等。
步骤6:按分类告警队列计算告警特征值。
内网安全监视平台读取分类后的告警队列,从这些分类后的告警队列中获取当前发送的报警数据,并通过特征值提取算法计算特征值。
本文中优选采用一种MD5算法[3~4]的优化变形方法计算告警数据的特征值,具体计算过程如下:
(1)去除告警数据中的告警时间。告警内容相同,但是告警时间可能不同,为保持告警数据的一致性所以需要去掉告警时间。
(2)去掉告警数据内容中存在的空格。空格信息本身对于告警内容影响不大,为提高MD5运算效率,将空格信息去掉。
(3)计算处理后告警数据的MD5值并简化计算结果。由于标准md5算法的特征值结果为16个字节,考虑到电力业务特点及告警数据内容有限性,同时为提高平衡二叉树查找、插入效率,将16字节结果前8字节和后8字节进行异或,得到8字节的最终特征值结果。
步骤7:匹配告警特征值在否在平衡二叉树中存在状况并保存告警数据。
内网安全监视平台计算出每条告警日志数据的特征值后,与内网安全监视平台初始化后构建的含有告警数据的平衡二叉树比较。在平衡二叉树中查找是否存在该特征值的节点;若不存在,将该节点插入平衡二叉树和数据库的告警信息表中;若存在,则更新平衡二叉树上该节点的告警次数及告警结束时间。
4 实验结果
电力二次系统安全监控日志格式定义如下:“<告警级别><空格>告警时间<空格>设备名称<空格>设备类型<空格>内容描述”。电力二次系统安全监控日志主要分为告警日志和审计日志。告警日志为紧急和重要级别,一般用于电力二次系统重大安全事件的实时告警;审计日志为次要和通告级别,一般用于电力二次系统运行情况的事后统计分析。
采集的原始日志及MD5值如下表1所示。
5 结语
本文提出一种告警日志解析归并算法,该算法利用日志内容计算MD5哈希,并以该哈希构造平衡二叉树,从而可以实现告警日志数据归并的快速定位,同时定期与后台数据库同步。由于,现在仅对归并后的告警日志信息进行入库,所以大大提高了数据库的操作效率,降低了内网安全监视平台数据库负载。
参考文献:
[1]刘合富.基于syslog技术的防火墙日志数据采集方法的研究.华中师范大学.
[2]黄文,谢冬青.基于Syslog的网络日志管理分析模型.湖南科技学院学报,2006(05).
[3]魏晓玲.MD5.加密算法的研究及应用.信息技术,2010(07):145-151.
[4]R.Rivest.The MD5 Message- Digest Algorithm[R]. RFC1321,1992.
作者简介:张晓(1972—),男,硕士,高级工程师,CISP,中国电机学会高级会员,研究方向:电网调度管理系统、电力二次系统安全防护、数据网络建设。