一种基于ELK的安全防护日志管理系统设计与实现
扫描二维码
随时随地手机看文章
引言
作为基础网络维护单位,电信运营商部署了大量网络安全设备,随着网络安全形势的日益严峻,这些设备每天产生的安全防护日志也不断增加,如何有效管理并使用好这些日志,进而提升网络安全感知能力,成为了十分重要的课题。
目前,日志数据大多以文件形式保存在磁盘上,在规模化场景下,grep、awk无法快速发挥作用,虽然部分设备厂商提供了日志查询功能,但通常只能对单一设备日志进行分析及审计,很多场景下需要逐一查询各个设备的日志信息,且查询手段较为简单,无法根据业务需要提供更多维度,不利于问题定位。此外因为日志量较大,或受限于系统功能,很难对重要日志信息进行及时获取,影响问题定位的及时性。如涉及跨厂家或设备类型的场景,由于存储周期、存储形式、日志格式的不同,问题则更为突出。
同时,各类安全设备所配的存储空间不一,一些触发规则之外的事件只能保存较短时间,为事后的溯源分析和审计带来不便。因此,考虑构建一种统一的安全防护日志管理系统,用于实现各类日志的收集、存储、检索、分析及展现。
1系统架构设计
1.1系统要求
本项目建设目标是收集各类安全防护日志,对这些数据解析后进行统一分析呈现。由于安全设备及其配套管理平台形式多样,日志管理系统需要支持不同的目标操作系统、接口类型、日志格式等,并通过合理的架构设计保证采集和使用效率。关键要求如下:
(l)支持从不同类型的客户端上获取日志数据,并做到多并发采集。
(2)提供大规模的存储空间,满足海量日志分析要求。
(3)提供高效的数据查询和分析功能。
(4)具备二次开发能力,可通过配置定制化数据展现形
式,并提供接口将分析结果转发给外系统。
1.2技术架构实现
安全防护日志管理系统采用Logstash+Elasticsearch+Kibana+Filebeat+Redis的架构进行系统搭建,总体包括日志采集、日志分析、日志展示3层架构。系统采用模块化设计,模块之间松耦合。新模块可通过配置直接接入平台,模块之间通过消息队列、接口等方式进行通信。安全防护日志管理系统流程如图1所示。
1.21日志采集模块
日志采集是整个管理平台的基础,负责采集平台运行需要的日志数据。源数据以各种各样的形式,分散或集中存在于很多系统中。本平台使用的Logstash支持各种输入选择,可以在同一时间从多个来源捕捉事件,提供具有实时渠道能力的数据收集引擎,能够以流式方式传输数据,对包括syslog、消息队列、JMx在内的各种日志数据都能较好支持,在整个系统框架中,实现数据搬运功能,将采集的日志数据存入数据库,供上层平台进行分析和展示。同时可以与多种外部应用结合,并且支持弹性扩展。Logstash组件结构如图2所示。
尽管Logstash有全面的日志收集能力,但是占用CPU和内存较多,为了减小对业务系统主机性能的消耗,本项目引入了Filebeat,Filebeat是一个轻量级的日志收集处理工具,占用资源少,适用于在各个服务器上搜集日志后传输给Logstash,从而提高系统可用性。
1.2.2日志分析模块
Elasticsearch是一个开源、分布式、REsTful接口的全文搜索引擎,同时也是一个分布式文档数据库,支持分布式实时文件存储,并将每一个字段都编入索引,具有高可用性、易扩展的特性,能够横向扩展,根据业务需求可实现海量存储并处理PB级数据,可以快速存储、搜索和分析大量数据:允许多客户端调用,支持结构化和非结构化数据源:接口友好,支持JsON格式。
本系统采用的是Elasticsearch6.8版本,为整个系统提供全文搜索、结构化搜索以及实时分析功能。
1.2.3日志缓存模块
为减少日志在服务端的积压,本系统在Logstash和Elasticsearch之间添加一层Redis作为缓存,以减小系统压力。同时,Redis作为一种内存数据库,响应速度快,因此在Redis后添加了多个消费系统(Logstash),用于扩展消费能力,提升处理速度。
1.2.4可视化界面
最上层是B/s架构的日志展示层,是整个平台的统一门户,经过统一用户认证,用户可以通过浏览器访问日志管理平台,查看各类日志、功能模块以及统计数据。Kibana是一个针对Elasticsearch的分析及可视化平台,用来搜索、查看交互存储在索引中的数据,提供分析、查找、数据交互等功能,并生成各种维度的表图,不仅允许用户创建自定义的表视图,还允许以特殊方式查询和过滤数据。
2系统部署
整个系统中,首先在安全设备生成日志的主机上分别部署独立的日志采集agent,并将经过预处理的数据输入分析集群,进行进一步的处理与存储,最终在展示层完成面向用户的日志数据统计、分析与展现。平台采用分布式架构部署,扩展性强,可以根据数据量、计算需求灵活添加或减少硬件资源。
本项目通过集群方式部署,安装过程不再赘述,下面仅说明系统中的重要配置。
(l)Logstash采用的版本为6.6.0,指定日志输入路径和输出路径,在mylogstash.conf中配置如下:
input(
beats(
port=>5044
)
)
output(
elasticsearch(
hosts=>"l27.0.0.l:9200"
index=>"crontest-一(%++++.YY.dd)"
)
)
(2)对于Milebeat,编辑配置文件myfilebeat.yml,内容如下:filebeat.inputs:
-type:logenabled:truepaths:
-/hadoop/rsyslog/l0.40.l06.2l0/Faf.log
tailfiles:true
fields:
logsource:Faf
fieldsunderroot:true
scanfrewuency:60s
closeinactiqe:lh
output.logstash:
hosts:["l27.0.0.l:5044"]
其中,paths配置的是需要读取的日志文件:logsource为自定义,针对日志而言,便于区分不同的日志文件。
(3)若要让其他组件能够从服务器上访问Elasticsearch,需要在elasticsearch.yml进行配置:
netForv.host:0.0.0.0
...Yemory....
bootstrap.memorylocv:false
bootstrap.systemcallfilter:false
(4)Kibana采用的版本为6.5.4,编辑vibana.yml文件,修改如下:
serqer.host:"l72.l6.33.l0l"
elasticsearch.url:"http://l27.0.0.l:9200"
serqer.port:2255l
3系统实现效果
日志管理系统搭建完成后,接入Tomcat、IDs、wAF、交换机等网络类日志数据,实现了对安全事件及设备告警的统一管理和全面分析,运维人员不再需要面对多个视频界面,系统通过统一门户提供对多种安全防护设备的日志集中搜集、展现与分析,支持按照日志格式、日志类型、审计设备等条件查询,可以生成日志趋势图和分析报表,帮助发现安全事件和系统漏洞,并总结其发生的规律:能够保存较长时间范围内的日志信息,实现对整个日志的监控分析与事后审计,运维人员通过对系统的使用,可以对整个安全防护现状有直观了解,随时掌握各类安全系统、设备涉及的性能指标和健康情况,获取实时安全防护状态,大幅提高运维工作的及时性和处理效率。日志分析可视化展示如图3所示。
本项目中日志管理系统主要包括日志汇总监控和对外接口两部分,既能够作为独立分析系统使用,也不断为外系统提供有价值的分析数据,将日志处理后生成的相关数据及分析结果传送给各类业务系统,结合业务系统原有的各类运维和监控告警功能,更大程度地发掘数据价值。
4结语
在大数据时代,信息安全要求不断提高,网络规模飞速扩展,使安全事件的监控和分析变得尤为重要。本文通过构建安全防护日志管理系统,增强了安全监控的实时性,提升了网络安全感知能力。未来还将收集应用系统、服务器日志等信息,通过更多维度的关联分析,结合科学算法,进一步完善分析手段和风险预警能力,为保障运营商网络信息安全提供支持。