万物上云的时代,如何让开源SIEM落地云环境?
前言
由于笔者所在公司业务环境使用的是华为云,所以就以华为云环境部署开源SIEM落地为例,其他云环境情况也应大致相同。
笔者所采用的开源SIEM系统是由Stamus Networks开发的SELKS,介于Freebuf上已有相关介绍和部署文章,所以安装部署部分的内容就不再赘述了(话说还是我留言给作者介绍简洁干练的SELKS系统,自己却一直拖着没写文章分享出来)。
云上创建SELKS镜像
首先,从Stamus Networks官网下载对应ISO镜像文件到本地,推荐第一次部署使用桌面版,图像化界面更容易熟悉基本操作。
我们需要将ISO文件部署到云ECS上,所以下面进行:
进入华为云控制台,参考其帮助文档,将本地的SELKS-6.0-desktop.iso镜像文件导入至镜像服务IMS私有镜像中,操作流程图如下:
具体操作
先把iso镜像文件上传到云OBS桶中:
然后从控制台中进入镜像服务IMS页面,点击“创建私有镜像”,进入创建私有镜像页面,选择之前上传到指定OBS桶的ISO镜像文件。
系统配置参照如下即可,点击创建便会开始创建私有镜像。
将SELKS的iso文件注册成云平台的私有镜像后,就可以使用该镜像创建新的云服务器,或对已有云服务器的系统进行重装和更换,推荐基础配置为2核CPU+8GB内存。
完善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等工控协议,提高服务器性能。
云上流量镜像
我们知道SELKS系统的核心就是Suricata,而我们一般部署在本地的话都是以旁路方式,利用交换机的流量镜像功能,将业务往来流量导入到Suricata中,再根据其规则进行威胁告警。
然而,笔者并未在华为云控制台中找到有关流量镜像的功能,Googel搜索一番,似乎大部分云平台都还未支持这一功能,仅看到AWS提供VPC Traffic Mirroring功能。
如果不能将云业务流量导入到Suricata中,那SELKS所依托Suricata告警规则的核心告警功能就基本废了。
解决方案:
经过不断的搜索相关解决方案,终于,在Github中找到一位大牛的开源项目Netis Packet Agent。
Netis Packet Agent是一个用于解决如下问题的开源项目:设备A上抓取的数据包,之后在设备B上使用分析。
在很多时候,当你希望监控网络的流量,但是并没有可用的设备,例如:
虚拟环境中,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: 补丁君
请登录后发表评论
注册