前言
默认情况下,Suricata会把软件日志存放在/var/log/suricata,以下是基本的介绍:
本文的目标就是把Suricata产生的eve日志导入到es里,使用kibana进行可视化展示,快速搜索、查询、分析。
基础配置
这次的实际环境中,我们使用双网卡服务器部署 Suricata ,然后配置核心交换机的网络流量端口镜像到Suricata服务器的网卡上,来进行流量检测。
配置需求:检查的流量越多,需要分配给 Suricata 的资源就越多。
这里计划使用4核CPU 和16GB 的内存,硬盘1T。
准备一台双网卡的机器,一块网卡用于提供Web服务和后台管理,一块网卡用于开启混杂模式收集流量进行监测。
ifconfig
//执行查看网卡名称和MAC地址,结合MAC地址确定监听哪块网卡
ifconfig ens224 promisc
//选择要用于监听的网卡,然再次次执行检查
如上图,这里准备使用ens224网卡进行流量监听。然后,找网络管理运维大哥告诉他网卡Mac地址,让他帮你开启流量镜像到你的监听网卡上。
然后,使用一个小工具测试一下配置结果。
yum install dstat -y
//安装dstat
dstat -tnf
//查看两个网卡的进出流量大小,根据数值评估是否开启成功
如上图,这里看到ens224网卡上每秒接收了大约12MB的流量,这可以证明我们上面的配置有效。
配置Suricata
编辑 Suricata 的配置,更改网卡名称,配置监听我们的流量端口镜像的网卡。/etc/suricata/suricata.yaml详情请查看上一篇文章
# Linux high speed capture support
af-packet:
- interface: ens224
# Number of receive threads. "auto" uses the number of cores
#threads: auto
# Default clusterid. AF_PACKET will load balance packets based on flow.
cluster-id: 99
(向右滑动,查看更多)
elastic stack配置
为了保证环境一致性和稳定性,这里使用docker部署最新的elastic stack 8.7,首先拉取镜像,创建docker内部网络。
docker
pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0
docker
network create elastic
docker
pull docker.elastic.co/kibana/kibana:8.7.0
(向右滑动,查看更多)
启动es,并将eve.json挂载到docker 容器内部。
docker run --name es-node01 --net elastic -d -v /
var
/log/suricata/eve.json:
/var/
log/suricata/eve.json -p
9200
:
9200
-p
9300
:
9300
-t docker.elastic.co/elasticsearch/elasticsearch:
8.7
.0
(向右滑动,查看更多)
启动kibana
docker
run --name kib-
01
--net elastic -d -p
5601
:
5601
docker.elastic.co/kibana/kibana:
8
.
7
.
0
(向右滑动,查看更多)
访问管理网卡的ipyour_ip:5601(https),这里需要一个安全token。
以前的Elasticsearch 配置没有启用任何身份验证。经常有数据泄露问题。最新的es8.0已经默认开启xpack了,配置起来繁琐一些,但是安全性已经大大提高了。
宿主机执行:docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana,将回显填入,点击configure elastic
然后需要输入一个6位验证码,宿主机执行docker logs kib-01将回显填入。
然后提示账号密码
宿主机执行docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic获得账号密码,这个需要记住。
登录后进入kibana。
Suricata联动es
点击添加数据
搜索Suricata
这里不用改
添加agent,选择Run standalone,将第一步中的一大段配置文件内容修改后复制留存
hosts:
-
'https://127.0.0.1:9200'
//修改为[本机:9200]
ssl.ca_trusted_fingerprint:
'7****************************3'
//这行不动
username:
'elastic'
//修改为上面获取的账号
password:
'Gxq*************qeaI'
////修改为上面获取的密码
(向右滑动,查看更多)
在宿主机按照要求执行
curl
-L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.7.0-x86_64.rpm
sudo
rpm -vi elastic-agent-8.7.0-x86_64.rpm
sudo
systemctl enable elastic-agent
sudo
systemctl start elastic-agent
(向右滑动,查看更多)
将原本的vim /etc/elastic-agent/elastic-agent.yml备份,将上面复制的配置文件内容全部写入保存。
systemctl
restart elastic-agent
#重启
systemctl status elastic-agent
#查看运行状态
(向右滑动,查看更多)
然后在kibana搜索suricata查看dashboard
然后就配置完成,如果数据很少可能是网络流量小,agent需要时间传输日志进es等原因。
后续,我们将探讨如何优化 Suricata 规则,添加外围告警,绘制信息密度更高的 dashboard 等内容。
精彩推荐
原文始发于微信公众号(FreeBuf):安全防护之路丨Suricata联动ELK威胁检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论