引言
SIEM ( Security, Information, and Event Management)安全信息和事件管理,它是一种安全解决方案,可提供对事件的实时监控和分析,以及出于合规性或审计目的跟踪和记录安全数据。
SIEM 大多数提供核心的功能,包含日志管理,事件关联和分析,事件监控和安全报警。
-
日志管理:从企业中捕获事件数据,包括网络设备、应用程序、资产、云环境等
-
事件管理和分析:事件关联利用高级分析来识别和理解复杂的数据模式
-
事件监控和安全警报:监控企业中的安全事件,通过关联规则生成图表来实现安全事件监控,并且可以触发警报,从而及时采取措施来避免更加严重的安全问题
基于鸿鹄的SIEM
在实际场景中的,我们着重需要考虑SIEM的安全性、易用性、可扩展性,主要考虑如下方面:
需要是国产的,具有完全的自主知识产权,安全可控
能否提供多种数据导入的方式
能够支持多样的日志格式
具备即时分析的能力,避免在ETL上花费大量时间
具备高效的结构化/半结构化数据存储,可对时间戳自动识别和分析,根据时间对数据分片;对数据进行分词,构建倒排索引
具备强大的搜索功能,搜索快速高效,支持跨库、异构数据关联、即时探索分析的交互式查询
具备灵活多样的图表和交互式的仪表板体验
根据我们的需求,经过综合的比较后,我们选择鸿鹄数据平台。鸿鹄数据平台提供了包括数据导入、数据存储分析和数据可视化等模块。
它的读时建模引擎可以快速导入和存储异构数据,进行灵活的异构数据建模以及关联分析,支持动态调整数据模型和分析参数,无需固化模型和分析流程,当数据源格式或业务模式发生变化后,只需调整SQL查询分析语言,无需重新导入和清洗数据,从而快速响应需求变化。
部署实施
本文是基于鸿鹄数据平台进行SIEM的初步部署,并非完全环境。在已经实现部分设备日志收集的基础上,进行初步的安全分析、关联分析、图表展示。仅供大家参考。
前提
目前我们已经将如下的数据通过syslog的方式发送到鸿鹄数据平台,由鸿鹄平台进行统一的数据存储。主要设备包含:
网络设备:H3C交换机、深信服防火墙、深信服上网行为管理
服务器设备:Dell服务器
存储设备:PowerStore存储
鸿鹄vector配置
Vector作为数据采集器,可以接收设备的syslog日志,并转发鸿鹄平台。Vector配置方法参考下文:
安装Vector
查看安装后vector版本,确认安装成功
vector安装好后,直接执行vector 时,系统首先会去/usr/bin下寻找命令,如果不在这个目录中,就会找不到了。这个时候我们就需要为这些找不到的命令建立一个链接文件,链接到/usr/bin下
登录鸿鹄平台,数据管理>新建数据集
编辑数据源名称,选择数据集范围为上面创建的"switch",此时会启用
创建syslog.toml脚本,需要调整字段
address = "0.0.0.0:514":0.0.0.0表示接收所有主机发送过来的syslog,514表示接收的端口(syslog默认为514)
._target_table = "switch" : 表示上文你创建的数据集名称
mode = "udp":表示接收syslog的协议syslog默认为udp)
address = "172.20.6.111:9092":鸿鹄的IP和相应的端口
运行修改的syslog脚本,注意保持运行状态。此时完成vector配置。
Syslog配置
网络设备配置syslog
H3C交换机syslog配置
需要开启日志,并将日志发送到鸿鹄平台。默认情况下syslog是通过udp514端口发送日志
将 IP 地址为 172.20.6.111的主机用作日志主机,使用 loghost 通道发送信息(可选,系统缺省为
loghost 通道),使用 local5 作为日志主机记录工具。
注意:这里可以指定发送日志的源地址,可以不指定,一般情况下为了方便辨识,建议指定
注意:如果是要通过管理口发送日志,管理口由于配置了VPN-Instance,需要指定VPN-Instance
配置输出规则:允许所有模块、级别高于等于 informational 的日志信息输出到日志主机。
我这里的实际配置命令
Cisco交换机syslog配置
在Cisco网络设备上的配置命令一般为:
在全局模式下<config>
我这里的实际配置命令
配置防火墙syslog
syslog配置>填写鸿鹄IP和端口号>应用
配置服务器syslog
配置系统日志服务器,填写日志系统的IP,端口号默认
开启警报
设置发送到日志平台的警报类型
配置PowerStore syslog
登录到PowerStore存储,Setting>Remote Logging>ADD
Host/IP Address 填写鸿鹄的地址
协议:默认是udp(与上文syslog.toml里一致)
端口号:默认514(与上文syslog.toml里一致)
Audit Type:全选
SEND TEST MASSEGE,发送测试一个日志信息测试下鸿鹄是否收到
在鸿鹄上查询下日志,发现已经收到存储发送的测试日志,至此配置syslog完成
字段抽取
目前我们已经接入了交换机、防火墙、服务器、存储设备,我们需要先对日志字段进行抽取,以便于我们后续进行搜索与图表展示。
防火墙字段抽取
sangfor_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, '日志类型') '日志类型'指的是你要搜索到这个写日志特定的字段,通过'日志类型'可以限定日志里所有包含'日志类型'的日志
sangfor_nat_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, 'NAT') '日志类型'指的是你要搜索到这个写日志特定的字段,通过NAT可以限定日志里所有包含NAT的日志
防火墙日志每个组件的日志格式各不相同,那么我们可能需要根据自己的情况进行多次字段抽取,上文已详述过字段抽取方法,这里只提供抽取字段脚本供参考
交换机字段抽取
switch_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
服务器字段抽取
idrac_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, 'iDRAC') 'iDRAC'指的是你要搜索到这个写日志特定的字段,通过IDRAC可以限定日志里所有包含IDRAC的日志
PowerStore字段抽取
ps_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, 'powerstore') 'powerstore'指的是你要搜索到这个写日志特定的字段,通过powerstore可以限定日志里所有包含powerstore的日志
图表展示
在现有设备日志的情况下,我们需要实现的监控效果如下:
所管理设备的概况,比如管理了哪些设备,这些设备的日志情况
设备的运行情况,比如设备是否有告警
安全事件,包含设备是否被密码暴力破解,密码嗅探;设备的配置变更是否合规
在实际场景中,如果我们查看图表时,想要所有的图表可以根据选择灵活的显示该怎么做,比如我想看1天的,想看7天的,那么这时候我们可以做一个"时间项",方法如下:
时间选择
创建时间选择
编辑
添加输入
输入类型:选择时间
标记名称:time_range(这个用于给图表调用)
显示标签:这个时间项显示的名字
默认标记值:这里根据自己的情况选择,我一般选择相对时间,设置成30天
确定后会生成一个时间选择的项
调用时间选择
选择想要调用的图表,选择编辑查询
将查询时间范围改为时间标记值,标记名称time_range(上文创建的时间选择时填写的标记名称)
保存后就可以在"时间选择"里选择想要查看的时间,点击应用,图表就会根据时间变化了
搜索语句
搜索语句是建立在已经字段抽取的前提下的,如果未抽取字段,那么很多调用了抽取字段的图表将不会显示。
小提示:在生成图表时,记得将图表的"查询时间范围"内标记名称改为time_range,以便调用时间选择
最终效果图
本文受限于对SQL语句只是初学阶段,所以很多分析只是基本的分析,供大家参考。鸿鹄本身SQL搜索功能强大,图表展示功能多样,大家可以自行发挥。