基于ELK的电力信息监控日志审计系统实现

2017-03-06 17:06刘思尧李斌
电脑知识与技术 2016年30期
关键词:异常检测安全监控

刘思尧 李斌

摘要:为电力信息系统实现日志审计和日志分析,已经成为电力信息化管理部门首先需要解决的问题。本文设计并实现了一个基于ELK的电力信息监控日志审计系统。系统通过logstash、redis、elasticsearch实现对操作行为日志、设备运行日志、上网行为日志、维护记录日志的分布式采集存储,经过数据格式化、用户识别、会话识别、路径补充等于处理后,利用并行化的K-Means聚类算法对日志进行审计分析,发现和捕获海量日志中的异常行为和违规行为。实验表明,系统可以实现电力企业信息系统的安全审计功能。

关键词:日志审计; ELK; 安全监控; 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 概述

电力产业是典型的技术密集型和设备密集型行业[1],随着智能电网的建设和推进,通讯、计算机、自动化等信息化技术在电网中得到了广泛深入的应用。目前,信息化技术已经在电力行业的生产、调度、传输、管理等多个业务层面上得到了深度应用,如电力数据采集、系统监控、故障管理、能力管理等信息化系统已被广泛接受。然而,信息化技术同时也为电力行业带来了众多困扰和问题。信息化系统的开放性会导致越来越多的非法访问、黑客攻击等外部入侵问题,以及非法操作、越权操作、信息泄露等内部安全问题。特别是,智能电网更加注重网络化、智能化和集约化,各种业务均需要在信息系统、互联网络开展,电力企业面临着严重的信息安全隐患问题。因此,为电力信息系统实现日志审计和日志分析,通过业务系统的运行日志分析系统中存在的安全隐患,已经成为电力信息化管理部门首先需要解决的问题。

电力企业的设备和信息系统每天都产生海量日志,而且由于设备众多产生的日志格式不一、种类多样,亟需建立统一的日志分析平台,进行统一维护。根据电力行业信息系统和网络应用的特点,日志主要包含四类:1)操作行为日志,即对电力关键信息系统以及关键业务的操作行为日志;2)设备运行日志,即电力信息化系统所包括的如防火墙、入侵检测、小型机、业务系统的运行日志;3)上网行为日志,即内部业务人员的网络访问行为及外部的访问行为;4)维护记录日志,即对关键设备的维护过程、违规操作行为的记录。本文针对这些异构日志,采用ELK技术搭建实时日志分析平臺,使得电力运维人员从海量的日志信息中准确地监控及维护所需的信息,快速定位并解决设备运行过程中的错误。

2 相关工作

当前,日志管理和审计技术已经成为了保障企业信息系统和网络安全的重要手段,国内外已经有了很多研究并出现了众多产品。典型的日志审计系统有NFR-SLR安全日志库审计系统[2]、思福迪LogBase日志管理综合审计系统[3]、网神SecFox-LAS日志审计系统[4]和NAR2日志审计系统[5]等。

NFR-SLR安全日志库审计系统包括日志采集代理、日志管理和日志存储等三个模块。其工作流程是首先通过日志采集代理将从设备采集来的数据交给日志存储模块进行集中存储;然后日志管理对日志进行预处理并对规范处理后的数据进行分析和报表统计生成。该系统的问题是日志采集代理对日志数据不做消冗处理,导致存储空间和传输带宽的浪费。

思福迪LogBase日志管理综合审计系统采用了智能分析技术和自动采集技术,将系统、应用软件日志以及操作行为进行规范化处理,之后对日志进行分析处理,发现系统中存在的安全隐患和故障定位。但是该系统是直接对日志进行采集,导致整个系统的计算压力较大。

由上可见,市场上的通用日志管理系统功能基本一致,但应用于电力等特定行业,无法满足行业的特定功能需求,本文试图采用ELK建立电力行业的信息监控日志审计系统。ELK是一个开源实时日志分析平台[6],包括Elasticsearch( 弹性搜索)、Logstash( 日志采集)、Kibana( 统计展示) 等三个开源系统。其中,Elasticsearch建立在Lucene基础之上,可以提供海量数据、分布式的检索功能,将其应用于云平台中,能够实现快速配置、索引自动分片、实时检索等功能;Logstash可以提供日志采集、分析的功能;kibana可以为Logstash 和 ElasticSearch提供丰富的网页交互页面,能够实现日志数据的统计、分析和搜索。

3 日志审计系统

3.1 系统架构

基于ELK的电力信息监控日志审计系统的体系结构总体上分为日志采集、日志预处理和日志分析三个部分。

在日志采集模块,系统采用logstash、redis、elasticsearch等组件构成分布式日志收集系统。首先由一级logstash分别收集各个web服务器产生的日志,并由一级logstash对日志进行简单的过滤,再传递给二级logstash。为了解决收发速率不一致而导致的丢包问题,在两级logstash之间安装redis,它提供缓存作用(redis性能强大在本系统中仅需安装一个即可满足要求),最后存入elasticsearch集群。在elasticsearch中,利用本文设定的数据预处理规则编写python程序对web日志进行数据预处理,将日志转化为可以进行聚类分析的数据格式后再存入elasticsearch集群。日志分析模块从日志收集模块获取数据存入HDFS,再交由Map和Reduce利用k-means算法进行分布式聚类分析,并得到异常检测规则。

3.2 关键技术实现

3.2.1 日志收集模块

日志收集模块主要由logstash、redis、elasticsearch三种开源部件组成。数据收集模块的主要功能是采集所有目标服务器中实时产生日志并进行日志预处理和特征提取。本文采用两级logstash的分布式的数据收集模块,其中一级logstash主要起日志发送和数据清理的作用。通过设置logstash的配置文件,可实现实时的收集各个服务器产生的日志,并根据数据清理的规则,过滤掉无意义日志;二级logstash起到接收日志的作用,它将接收到的web日志传递给elasticsearch集群。为了防止发送和接收速率不一致而导致的数据丢失问题,本系统在两级logstash之间搭建了redis部件,它主要起到缓存作用。当web日志存入elasticsearch集群后,再进行日志预处理,将web日志转化成会话数据集后再存入elasticsearch集群。

Logstash在日志收集模块中的作用有:日志解析,发送数据和数据净化。在实际生成的数据中,尤其是来自不同服务器的日志中,往往存在大量的字段不完整的、或是含有噪声的,甚至是数据格式不一致的数据。如果将这些数据直接用于数据挖掘,必然不能获得良好的效果,因此必须进行数据的预处理,使它们达到统一的格式,进而满足数据挖掘的需要。本系统通过logstash的input函数设置接收数据,实现实时监听web服务器生成的日志文件,并进行接收。再通过自定义logstash的filter函数,对日志文件进行解析,过滤,或者必要的修改等简单的预处理。最后通过设置output函数选择logstash的输出位置,及使用的传输协议。

由于日志的生成速度可能不断变化和数据存储及分析系统对数据处理速度变化等因素的影响,可能导致日志的发送速度与接收速度不一致,而logstash虽然本身有缓存功能,但是性能较差,工程效果不好,因此本系统采用了redis部件。Redis主要解决了日志收发速度不一致而导致的日志丢失问题,它在整个系统中主要起到缓存的作用。当日志的发送速度大于接收速度时,会在redis部件中进行缓存,进而保证日志不会丢失。由于redis性能强大以及综合本系统的实际情况,搭建一个redis便可保证日志收集系统正常运行。考虑到网络环境的变化,也可以搭建成redis集群。

Elasticsearch集群在本系统中的作用是:日志存储和备份以及向网络管理员提供日志搜索服务。在日志传入elasticsearch集群后,利用python编程语言编写日志处理程序进行数据处理。由于此过程需要反复搜索日志,因此本系统选取提供高速搜索方案的elasticsearch作为数据库。

3.2.2 日志預处理模块

由于各种原因,采集的日志数据可能存在数据遗漏、数据冗余、噪声数据等现象,在日志分析前,需要首先进行数据预处理。日志数据预处理的过程主要包括数据格式化、用户识别、会话识别、路径补充等。

数据格式化是指将日志记录中缺失的字段补充完整,如在web访问中的Request字段的URL信息不完整,/index.asp是web日志中某一条的Request字段,将其信息补充完整后为www.test.com/index.asp。

用户识别是指从多条日志中识别出同一用户。由于局域网以及代理服务器存在的原因,在日志中准确的辨别每一个用户是比较困难的,比如可能出现以下多种情况:同一用户可能通过不同的终端访问web服务器;同一用户在同一终端使用不同的浏览器访问服务器;多个用户使用同一代理访问服务器。因此在对日志进行数据挖掘之前应该详细分析日志记录,区分各种情况的用户。本文采用启发式规则方式进行用户识别:

规则1:使用不同IP地址的日志视为不同用户;

规则2:对具有相同IP地址的多条日志记录,如果使用的浏览器或者系统不一样则视为不同用户;

规则3:对具有相同IP地址且使用相同的浏览器和操作系统的用户则根据网络拓扑结构进行区分。例如:用户访问的某个页面不能从已往访问的任何一个页面的超级链接到达,则认为这是一个新的用户。

会话识别的主要目的是从大量的杂乱的日志中,重构用户访问的行为序列。经典的会话识别方法有以下几种,Timeout方法:在用户识别的基础上,连续多个请求的时间间隔超过一定的阈值时便定为会话的边界,经过Pit的实验证明[7]:比较合理的时间阀值为26分钟,但在实际商业应用中通常设置阀值为30分钟;对网站所有页面设置固定的访问时间阀值,如果超过阀值则将此页面视为两段会话的边界;最大向前序列法:此方法根据用户访问行为进行会话识别,如果用户后退访问已经浏览过的页面,则视为新的会话的开始。目前,Timeout法是研究和应用最多的方法。综合以上三种方法,本系统采用三条规则进行会话识别,按优先级排序如下:

1)如果在访问页面A后访问页面B,且页面B是页面A中的超级链接之一,则视为B属于A的会话集;

2)在同一页面上停留的时间不超过10min。如果用户在某一页面停留时间超过10分钟,对访问下个页面则视为下一次会话的开始;

3)单个会话时间不超过30min。放入同一会话集A中的所有日志,必须在30分钟内,如果时间超过30分钟,则视为下一次会话。

路径补充主要是为了补充在日志中没有记录的用户访问请求,进而获得完整的有意义的用户访问路径。由于浏览器或者代理服务器的缓存功能,经常会导致那些缓存的页面和访问对象的丢失。通常先进行会话识别再进行路径补充。例如,页面B和C同属于页面A的超级链接,用户在访问页面A后,A被缓存在本地浏览器中,用户在访问页面B后,返回访问A,再访问C。A—B—A—C这是用户实际的访问顺序,但是由于A被缓存在本地,所以第二次访问A的记录会丢失,在服务器的日志中,记录的用户访问顺序可能为A—B—C。这就需要进行路径补充。

例如web服务器日志经会话处理后得到一条会话为A-D-I-M-S-K-P,经与web站点结构图对比,此会话中S页面无直接到达K页面的超级链接,因此此处需要做会话补充(虽然用户可以通过输入URL直接访问K页面,但是这种情况非常少,几乎不影响数据挖掘的结果)。从S页面处按照用户访问路径倒序查找,直到找到能直接访问K页面的D页面为止,上述会话经路径补充后的结果为A-D-I-M-S-M-I-D-K-P。路径补充还可能出现以下情况:B-E-L-D-I-M,显然通过L页面不能直接访问D页面,而且此会话中L页面之前的页面都不能直接访问D,对此情况本文将其拆分为两条会话B-E-L和D-I-M。

3.2.3 日志分析模块

日志分析的目的是从海量日志中挖掘出正常行为和异常行为,因为同类行为有相似的特征,本文采用基于并行化K-Means聚类的日志分析算法,将正常行为和异常行为分别聚类,提取异常检测规则。

Map函数在异常检测的主要作用是判断每条数据的访问类型。HDFS将n条数据分别与异常检测规则(k个质心)组成n对传给n个map,每个map输入数据为<单条数据,k个质心及其代表的访问类型的集合},对每一条数据在五维空间中计算其与k个质心的距离,判断找到其中最小的距离,再将此条数据划归为此质心所代表的访问类型。每个Mapper的输出数据为<访问类型,此条数据}。

通过combine和reduce函数,将属于同一访问类型的数据进行合并。Combine将在接收到mapper的输出后,将具有同样key值(访问类型)的数据传入同一reducer。在本系统中只有4种访问类型,因此只需要固定的4个reducer。每个Reducer将收到的数据进行合并后输出,如reduce2输出的

4 实验

实验环境由7个云平台虚拟机(如图3所示),另外还有3台笔记本和一台台式机。所有电脑都采用Ubuntu系统,其中用三台笔记本电脑模拟web服务器,一级logstash直接搭建在web服务器上,在日志收集模块中起发送日志的作用。用一台台式机搭建redis,它在发送和接收日志间起到缓存的作用。三台云平台虚拟机搭建elasticsearch集群,起到存储的作用。Hadoop搭建在4台云平台虚拟机上,其中一台做Master节点,另三台分别做slaves节点。主机Master作为HDFS的NameNode节点以及MapReduce的Task Tracker节点,主要负责日志分析。

为了测试本文的日志审计系统的性能,采用Web日志安全分析工具v2.0作为对比基准。Web日志安全分析工具v2.0根据自身的特征库定义的常见攻击的攻击特征,采用正则表达式匹配的方式进行入侵检测。默认可以检测XSS攻击、SQL注入攻击、CSRF攻击等多种攻击类型。

通过上图测试结果对比,可以明显地看到,本系统对跨站脚本攻击、SQL注入攻击和跨站请求伪造攻击的检测率明显高于传统的web日志安全分析工具v2.0。

5 结论

本文通过利用ELK构建电力企业的信息监控日志审计系统,采集电力信息系统和设备的操作行为日志、设备运行日志、上网行为日志、维护记录日志,在日志预处理的基础上,利用并行化K-Means聚类算法发现和捕获海量日志中的异常行为和违规行為,为保障电力企业信息安全提供支持。

参考文献:

[1] 段娟.基于Web应用的安全日志审计系统研究与设计[J].信息网络安全,2014(10):70-76.

[2] 吴志用.日志审计系统中预处理关键技术研究[D].杭州:浙江工商大学,2011.

[3] 查穹,丁峰,倪晓勤.天融信防火墙日记审计系统的搭建与配置[J].电脑知识与技术,2013,9(23): 5227-5228.

[4] 周琪锋.基于网络日志的安全审计系统的研究与设计[J].计算机技术与发展,2009,19(11).

[5] 周映,韩晓霞. ELK日志分析平台在电子商务系统监控服务中的应用[J].信息技术与标准化 ,2016(7):67-70.

[6]赵伟, 何不廉, 陈霞, 等. web日志挖掘中的数据预处理技术研究[J]. 计算机应用,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.

猜你喜欢
异常检测安全监控
城市公共安全系统可靠性研究
电力信息机房环境安全监控系统的架设