企业安全建设之云上落地开源SIEM初级实践指南 – 作者:补丁君

万物上云的时代,如何让开源SIEM落地云环境?

前言

由于笔者所在公司业务环境使用的是华为云,所以就以华为云环境部署开源SIEM落地为例,其他云环境情况也应大致相同。

笔者所采用的开源SIEM系统是由Stamus Networks开发的SELKS,介于Freebuf上已有相关介绍和部署文章,所以安装部署部分的内容就不再赘述了(话说还是我留言给作者介绍简洁干练的SELKS系统,自己却一直拖着没写文章分享出来)。

云上创建SELKS镜像

首先,从Stamus Networks官网下载对应ISO镜像文件到本地,推荐第一次部署使用桌面版,图像化界面更容易熟悉基本操作。

我们需要将ISO文件部署到云ECS上,所以下面进行:

进入华为云控制台,参考其帮助文档,将本地的SELKS-6.0-desktop.iso镜像文件导入至镜像服务IMS私有镜像中,操作流程图如下:

1603181486_5f8e9baeb67061f33c877.png!small?1603181486721

1603181524_5f8e9bd4a369702bb1efc.png!small?1603181524595

具体操作

先把iso镜像文件上传到云OBS桶中:

1603181552_5f8e9bf0c51ce41786efe.png!small?1603181552738

然后从控制台中进入镜像服务IMS页面,点击“创建私有镜像”,进入创建私有镜像页面,选择之前上传到指定OBS桶的ISO镜像文件。

1603181601_5f8e9c21aafd7d696ab7c.png!small?1603181601781

系统配置参照如下即可,点击创建便会开始创建私有镜像。

1603181632_5f8e9c4013666090a7ec5.png!small?1603181631979

将SELKS的iso文件注册成云平台的私有镜像后,就可以使用该镜像创建新的云服务器,或对已有云服务器的系统进行重装和更换,推荐基础配置为2核CPU+8GB内存。

1603181647_5f8e9c4fc81a4a8103da0.png!small?1603181647710

完善SELKS基本配置

查看SELKS各个服务运行情况

selks-health-check_stamus
或者
systemctl status suricata elasticsearch logstash kibana evebox molochviewer-selks molochpcapread-selks

配置ElasticSearch服务

systemctl stop elasticsearch # 停止服务

sudo cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch-bak.yml # 备份配置文件
sudo vi /etc/elasticsearch/elasticsearch.yml # 编辑配置文件

参照如下内容修改:
cluster.name: sec_es # 集群名称,用于定义哪些elasticsearch节点属同一个集群。
node.name: node-1 # 节点名称,用于唯一标识节点,不可重名
node.master: true # 让节点成为主节点,且存储数据
node.data: true

network.host: 0.0.0.0 # 可改为内网ip
http.port: 9200
discovery.seed_hosts: ["127.0.0.1", "[::1]"]

systemctl start elasticsearch #修改完配置再启动服务

配置Kibana服务

systemctl stop kibana # 停止服务

sudo cp /etc/kibana/kibana.yml /etc/kibana/kibana-bak.yml # 备份配置文件
sudo vi /etc/kibana/kibana.yml # 编辑配置文件

参照如下内容修改:
server.port: 5601
server.host: "0.0.0.0" # 可改为内网ip
server.name: "Kibana"
elasticsearch.hosts: ["http://127.0.0.1:9200"] # 根据实际修改ip
i18n.locale: "zh-CN" # 使用kibana自带汉化


systemctl start kibana #修改完配置再启动服务

配置Suricata服务

systemctl stop suricata # 停止服务

sudo cp /etc/suricata/selks6-interfaces-config.yaml /etc/suricata/selks6-interfaces-config-bak.yaml # 备份配置文件
sudo vi /etc/suricata/selks6-interfaces-config.yaml

将不需要解析的协议关闭,比如modbus、dnp3、enip等工控协议,提高服务器性能。

1603181827_5f8e9d0339a8a9242585f.png!small

云上流量镜像

我们知道SELKS系统的核心就是Suricata,而我们一般部署在本地的话都是以旁路方式,利用交换机的流量镜像功能,将业务往来流量导入到Suricata中,再根据其规则进行威胁告警。

然而,笔者并未在华为云控制台中找到有关流量镜像的功能,Googel搜索一番,似乎大部分云平台都还未支持这一功能,仅看到AWS提供VPC Traffic Mirroring功能。

1603181679_5f8e9c6fa3671f371e7a2.png!small?1603181680208

如果不能将云业务流量导入到Suricata中,那SELKS所依托Suricata告警规则的核心告警功能就基本废了。

解决方案:

经过不断的搜索相关解决方案,终于,在Github中找到一位大牛的开源项目Netis Packet Agent。

Netis Packet Agent是一个用于解决如下问题的开源项目:设备A上抓取的数据包,之后在设备B上使用分析。

在很多时候,当你希望监控网络的流量,但是并没有可用的设备,例如:

  • 物理环境中不存在TAPSPAN设备。

  • 虚拟环境中,Virtual Switch Flow Table不支持SPAN功能。

因此,该项目提供一套低开销但是高性能的抓包工具,用于应对上述困难。

  • pktminerg是第一个发布的工具。该工具可以轻松地在网卡上抓数据包,用GRE头进行封装并发送到远端的设备,来进行数据包监控和分析。

由于笔者所在公司基本都是用CentOS系统,所以仅以此为例来介绍实践部署方式。

sudo yum install libpcap #为系统安装libpcap

wget https://github.com/Netis/packet-agent/releases/download/v0.3.6/netis-packet-agent-0.3.6.el6.x86_64.rpm # 下载rpm安装包

sudo rpm -ivh netis-packet-agent-0.3.6.el6.x86_64.rpm # 安装packet agent

cd ~

ifconfig # 查看网卡,默认eth0流量转发到SIEM系统

sudo nohup /usr/local/bin/pktminerg -i eth0 -r SIEM系统IP > /dev/null

来源:freebuf.com 2020-10-20 16:30:36 by: 补丁君

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论