前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全防护之路丨Suricata联动ELK威胁检测

安全防护之路丨Suricata联动ELK威胁检测

作者头像
FB客服
发布2023-05-19 10:42:17
2.2K1
发布2023-05-19 10:42:17
举报
文章被收录于专栏:FreeBuf

前言

Suricata是一种网络流量识别工具,它使用社区创建的和用户定义的signatures签名集(规则)来检查和处理网络流量,当检测到可疑数据包时,Suricata 可以触发警报。

默认情况下,Suricata会把软件日志存放在/var/log/suricata,以下是基本的介绍:

eve.json:Suricata 最详细和最有用的日志文件之一。eve.json 日志格式为 JSON,记录所有安装的检测引擎和其他模块所生成的事件信息,如警报、HTTP 请求/响应、TLS 握手和 SSH 握手等。每个事件都包含重要的元信息,如时间戳、来自哪个接口的流量、事件类型、源/目标 IP 和端口、协议和应用程序信息等。

eve.log:与eve.json相同,但格式为单行文本格式,而不是 JSON。如果将 Suricata 其他日志聚合系统集成,则该格式可能更方便些。

fast.log:是一个简单的文本格式文件,包含了有关网络流量中服务请求和响应的基本信息,如协议、端口、源/目标地址和事件计数等信息。这使得fast.log不像eve.json一样详细,但可以在大量流量时提供轻量级的性能提升。

stats.log:包含与 Suricata 本身的统计信息相关的数据,如 CPU 利用率、内存使用情况以及处理的数据包数和流量量等信息,通常用于监控 Suricata 本身的性能和健康状况。

本文的目标就是把Suricata产生的eve日志导入到es里,使用kibana进行可视化展示,快速搜索、查询、分析。

基础配置

这次的实际环境中,我们使用双网卡服务器部署 Suricata ,然后配置核心交换机的网络流量端口镜像到Suricata服务器的网卡上,来进行流量检测。

配置需求:检查的流量越多,需要分配给 Suricata 的资源就越多。 这里计划使用4核CPU 和16GB 的内存,硬盘1T。

准备一台双网卡的机器,一块网卡用于提供Web服务和后台管理,一块网卡用于开启混杂模式收集流量进行监测。

配置监听网卡混杂模式

代码语言:javascript
复制
ifconfig//执行查看网卡名称和MAC地址,结合MAC地址确定监听哪块网卡ifconfig ens224 promisc//选择要用于监听的网卡,然再次次执行检查

如上图,这里准备使用ens224网卡进行流量监听。然后,找网络管理运维大哥告诉他网卡Mac地址,让他帮你开启流量镜像到你的监听网卡上。

然后,使用一个小工具测试一下配置结果。

代码语言:javascript
复制
yum install dstat -y//安装dstatdstat -tnf//查看两个网卡的进出流量大小,根据数值评估是否开启成功

如上图,这里看到ens224网卡上每秒接收了大约12MB的流量,这可以证明我们上面的配置有效。

配置Suricata

编辑 Suricata 的配置,更改网卡名称,配置监听我们的流量端口镜像的网卡。/etc/suricata/suricata.yaml详情请查看上一篇文章

代码语言:javascript
复制
# Linux high speed capture supportaf-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内部网络。

代码语言:javascript
复制
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0docker network create elasticdocker pull docker.elastic.co/kibana/kibana:8.7.0(向右滑动,查看更多)

启动es,并将eve.json挂载到docker 容器内部。

代码语言:javascript
复制
代码语言:javascript
复制
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
代码语言:javascript
复制
(向右滑动,查看更多)
代码语言:javascript
复制

启动kibana

代码语言:javascript
复制
代码语言:javascript
复制
docker run --name kib-01 --net elastic -d -p 5601:5601 docker.elastic.co/kibana/kibana:8.7.0
代码语言:javascript
复制
(向右滑动,查看更多)

访问管理网卡的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,将第一步中的一大段配置文件内容修改后复制留存

代码语言:javascript
复制
hosts:      - 'https://127.0.0.1:9200' //修改为[本机:9200]    ssl.ca_trusted_fingerprint: '7****************************3'//这行不动    username: 'elastic'//修改为上面获取的账号    password: 'Gxq*************qeaI' ////修改为上面获取的密码(向右滑动,查看更多)

在宿主机按照要求执行

代码语言:javascript
复制
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.7.0-x86_64.rpmsudo 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备份,将上面复制的配置文件内容全部写入保存。

代码语言:javascript
复制
systemctl restart elastic-agent #重启systemctl status elastic-agent #查看运行状态(向右滑动,查看更多)

然后在kibana搜索suricata查看dashboard

然后就配置完成,如果数据很少可能是网络流量小,agent需要时间传输日志进es等原因。

后续,我们将探讨如何优化 Suricata 规则,添加外围告警,绘制信息密度更高的 dashboard 等内容。

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 基础配置
  • 配置Suricata
  • elastic stack配置
  • Suricata联动es
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档