安装Suricata
”SURICATA是一个开源的网络入侵检测系统(IDS)和入侵防御系统(IPS)。它可以捕获通讯流量并对其做协议解析,识别或防御通讯流量中可疑或恶意的行为。国内大部分厂商基于流量的IDS的数据包捕获、协议解析、检测引擎等关键模块都是在此基础上做修改和扩展优化的。“
访问官网进行下载 https://suricata.io/download/
我这里以ubuntu举例,采用订阅源的方式进行安装 https://docs.suricata.io/en/suricata-7.0.3/install.html#ubuntu-from-personal-package-archives-ppa
#获取源
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
#安装suricata
sudo apt-get install suricata
#如果需要更新suricata,则运行以下命令
sudo apt-get update
sudo apt-get upgrade suricata
安装好suricata,下面开始修改配置文件,这里主要修改的是用来监听的网卡名称以及一些需要检测的流量网段
首先查看当前网卡名称ifconfig
或者ip -p -j route show default
这里我的网卡名称是eth0
,IP为192.168.124.46
,修改suricata配置文件
sudo nano /etc/suricata/suricata.yaml
配置文件为yaml
格式,简单易读。将HOME_NET
修改为你要监测的网段,比如我这里业务系统在192.168.124.0/24
段,vars
代表变量,比如EXTERNAL_NET
为!$HOME_NET
,则代表排除的网段为非192.168.124.0/24
网段的IP
第二部分要修改网卡信息,全局搜索af-packet
,将interface
修改为你需要捕获的网卡即可,这里支持同时捕获多张网卡,按照yaml格式插入到interface: default
之前即可
suricata 支持实时规则重新加载,这样无需重新启动正在运行的 suricata 进程,就可以生效。
要启用实时重新加载选项,在配置文件的底部并添加以下行:
detect-engine:
- rule-reload: true
suricata 包含一个名为suricata-update
的工具,可以从外部获取规则集。运行sudo suricata-update
为 suricata 服务器下载最新的规则集
红框标记的是suricata所订阅的规则,在/usr/share/suricata/rules/
下,最后测试一下suricata的配置文件,检查有无错误
sudo suricata -T -c /etc/suricata/suricata.yaml -v
如果没有错误的话则可以进行下一步。重启suricata
sudo systemctl restart suricata
查看启动日志
sudo tail /var/log/suricata/suricata.log
检查运行状态
sudo systemctl status suricata
OK,至此suricata启动成功,下面开始检测规则有没有成功加载并生效
suricata的告警以及事件日志都在/var/log/suricata/
下,默认suricata 配置启用了两个日志。第一个是在/var/log/suricata/fast.log
,第二个是json的/var/log/suricata/eve.log
初次查看fast.log
应该为空,因为里面主要记录告警日志,下面我们手工来触发一次告警,在主机上运行curl http://testmynids.org/uid/index.html
该请求将会返回一个匹配suricata 警报规则的响应:
Outputuid=0(root) gid=0(root) groups=0(root)
此示例响应数据会触发告警:“假装返回通过 webshell 在受感染的远程系统上运行id
命令的输出”。现在可以检查 suricata 的日志,查看/var/log/suricata/fast.log
成功产生2条告警
03/08/2024-14:54:52.942329 [**] [1:2013028:7] ET POLICY curl User-Agent Outbound [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 192.168.124.46:35650 -> 18.155.192.22:80
03/08/2024-14:54:53.107184 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 18.155.192.22:80 -> 192.168.124.46:35650
suricata 还使用JSON记录更为详细的信息/var/log/suricata/eve.log
,并且suricata文档建议使用该jq
实用程序来读取和过滤eve.log,没有的话可以安装
sudo apt install jq
输入jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json
检查,输出将类似于以下内容
{
"timestamp": "2024-03-08T14:54:53.107184+0000",
"flow_id": 1219566567138253,
"in_iface": "eth0",
"event_type": "alert",
"src_ip": "18.155.192.22",
"src_port": 80,
"dest_ip": "192.168.124.46",
"dest_port": 35650,
"proto": "TCP",
"pkt_src": "wire/pcap",
"alert": {
"action": "allowed",
"gid": 1,
"signature_id": 2100498,
"rev": 7,
"signature": "GPL ATTACK_RESPONSE id check returned root",
"category": "Potentially Bad Traffic",
"severity": 2,
"metadata": {
"created_at": [
"2010_09_23"
],
"updated_at": [
"2019_07_26"
]
}
},
"http": {
"hostname": "testmynids.org",
"url": "/uid/index.html",
"http_user_agent": "curl/7.68.0",
"http_content_type": "text/html",
"http_method": "GET",
"protocol": "HTTP/1.1",
"status": 200,
"length": 39
},
"files": [
{
"filename": "/uid/index.html",
"gaps": false,
"state": "CLOSED",
"stored": false,
"size": 39,
"tx_id": 0
}
],
"app_proto": "http",
"direction": "to_client",
"flow": {
"pkts_toserver": 6,
"pkts_toclient": 5,
"bytes_toserver": 496,
"bytes_toclient": 875,
"start": "2024-03-08T14:54:52.611632+0000",
"src_ip": "192.168.124.46",
"dest_ip": "18.155.192.22",
"src_port": 35650,
"dest_port": 80
}
}
如果有以上的回显,代表suricata检查到了威胁数据包,并且生成了一条记录。完成以上操作则代表suricata正常运行并且成功利用规则捕获到了攻击请求。
Suricata 接入 Splunk
splunk介绍
”Splunk是⼀个托管的⼀体化的⽇志⽂件管理⼯具。通过对⽇志进⾏⾼效索引,让管理员可以对⽇志各种情况进⾏搜索,并通过友好视图展现出来。统计关注时间段整体交易延时和交易量,依据来源、类型等多维度统计交易。制作成仪表板等网络监控平台,并可设置攻击告警、系统告警、应⽤告警。“
去官网下载安装包,访问https://www.splunk.com/en_us/download/splunk-enterprise.html
首先需要注册一个账户,注册成功后会收到一封邮箱,点击激活链接激活即可,这里要注意的是尽量使用企业邮箱去注册,如果使用个人邮箱会导致注册需要最后不成功,我用的outlook注册好像是不行
下载.rpm或者.deb都可以
运行以下命令进行安装
rpm -ivh splunk-8.0.2-a7f645ddaf91-linux-2.6-x86_64.rpm --nodeps --force
cd /opt/splunk
./splunk start
按照提示下一步
根据提示输⼊完成后可以看到安装成功,并提示你splunk的端⼝。检查是否成功运行
ps -ewwf| grep splunk
输入安装时候创建的账户密码进行登录,登录之后开始添加suricata的日志数据。
splunk支持3种数据导入,分别为
1、本地日志文件上传
2、文件或目录监控
3、splunk数据转发器
通过文件或目录监视
因为我们suricata是和splunk安装在一台主机上,所以先使用本地文件监控的方法来实现导入suricata日志
选择suricata的事件日志
来源类型自动识别_json
,点击下一步
这里选择新建索引
索引名称自定义即可,这里我配置的是suricata_eve_overview
二次确认没问题之后点击提交
之后点击导航栏->设置->索引
,来到索引控制面板
可以看到我们刚刚创建多索引已经有了日志(如果没有可以多等等)
输入index=suricata_eve_overview
查看suricata的数据,可以看到数据信息包含很多字段,包括源地址
、目的地址IP端口
,协议类型
,时间戳
,命中的规则名称及ID
这里我添加了用来展示的字段,alert
主要为告警字段
http
主要为http的一些信息
最后筛选后的字段展示如下
来模仿一下命令执行攻击来查看splunk是否正常展示告警信息
使用过滤规则来查看告警名称包含root
的告警信息: index=suricata_eve_overview "alert.signature"="*root*"
可以看到攻击被正常捕获并展示
通过Forwarder转发数据
示例图
安装转发器(fordwarder)
https://www.splunk.com/zh_cn/download/universal-forwarder.html, 根据架构选择不同的安装包,我这里选择的为.rpm
将安装包上传到需要转发的主机上,运行命令
#创建splunkforwarder文件夹
export SPLUNK_HOME="/opt/splunkforwarder"
mkdir $SPLUNK_HOME
#解压安装包
tar xvzf splunkforwarder_package_name.tgz
#安装splunkforwarder.rpm
rpm -ivh splunkforwarder_package_name.rpm --nodeps --force
#启动splunkforwarder
cd $SPLUNK_HOME/bin/
./splunk start
启动splunkforwarder会提示输入账户密码,这个账户是splunkforwarder专属的账户密码,后面会用到
接下来去到splunk配置用来接受splunkforwarder
的索引以及要接收转发器数据的监听端口
在splunk开启转发器要接收的端口
点击新增
输入9997点击保存即可
之后回到要转发数据的机器,也就是安装splunkforwarder的机器
执行以下命令
#配置转发器以连接到splunk部署服务器
./splunk add forward-server 192.168.124.46:9997
#配置转发器以连接到splunk部署服务器
./splunk set deploy-poll 192.168.124.46:8089
以上2个端口都是默认的,不需要额外修改,如要查看请在splunk服务器执行以下命令
./splunk show splunkd-port
接下来在splunkforwarder添加一个suricata的日志监控项
给到splunk
./splunk add monitor /var/log/suricata/eve.json -index suricata_forwarder_test
执行以下命令查看监控的目录
./splunk list monitor
以上命令执行完后,重启splunk
和splunkforwarder
服务器
回到系统,可以看到suricata日志被成功监控,索引也同样有数据
配置完成,输入index="suricata_forwarder_test"就可以看到我们远程转发器发过来的日志
总结
通过安装suricta和splunk来实现对告警信息做到统一查看,实现了一个简易版的SIEM,虽然没有商业化的产品那么易用易读,但胜在扩展性强,上限高。后续会继续围绕suricata展开规则优化和规则管理的一些文章分享。
Reference
1、https://docs.splunk.com/Documentation/Splunk
2、https://cloud.tencent.com/developer/article/1903171
3、https://www.jianshu.com/p/5cbf4ee6ad2e
4、https://blog.csdn.net/qq_23936389/article/details/121347559
5、https://mp.weixin.qq.com/s/2Z4TgvhxjIY7QXRJUCya8Q
原文始发于微信公众号(Evilc0de 安全团队):安全运营-Suricata+Splunk构建入侵检测系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论