AdityaBhatt3010/Suricata-Integration-with-Wazuh
GitHub: AdityaBhatt3010/Suricata-Integration-with-Wazuh
该项目演示了如何将 Suricata 的网络入侵检测能力接入 Wazuh 平台,实现集中化的安全告警采集、关联分析与可视化监控。
Stars: 1 | Forks: 0
# Suricata 与 Wazuh 集成
## 概述
此概念验证展示了 **Suricata IDS** 与 **Wazuh** 的集成,以提供网络入侵检测和集中化安全监控。
在此设置中,Suricata 运行在 Wazuh Agent 机器上,并监控网络流量以发现可疑活动。生成的警报存储在 Suricata 的 `eve.json` 日志文件中,随后由 Wazuh 提取,以通过 Wazuh Dashboard 进行分析、关联和可视化。
## 架构
```
Attacker Machine
│
▼
Nmap Scan Traffic
│
▼
Suricata IDS (Agent Machine)
│
▼
eve.json Logs
│
▼
Wazuh Agent
│
▼
Wazuh Manager & Dashboard
```
# 步骤 1:在 Agent 机器上安装 Suricata
Suricata 是一个开源的入侵检测和防御系统 (IDS/IPS),可检查网络流量并在检测到可疑或恶意活动时生成警报。
### 命令
```
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata -y
```

# 步骤 2:下载并配置检测规则
默认情况下,Suricata 包含的规则有限。为了提高检测能力,我们下载了 Emerging Threats 规则集,其中包含数千条由社区维护的特征码,用于识别扫描、漏洞利用、恶意软件活动、命令与控制流量以及其他可疑行为。
### 命令
```
cd /tmp/ && curl -LO https://rules.emergingthreats.net/open/suricata-6.0.8/emerging.rules.tar.gz
sudo tar -xvzf emerging.rules.tar.gz
sudo mv rules/*.rules /etc/suricata/rules/
sudo chmod 640 /etc/suricata/rules/*.rules
```

下图显示了导入 Emerging Threats 规则后,原始规则集与扩展后规则库之间的差异。
# 步骤 3:修改 Suricata 配置
打开 Suricata 配置文件:
```
nano /etc/suricata/suricata.yaml
```
必须调整几个设置,以便 Suricata 能够正确监控本地网络并加载导入的规则。
## 更改 1:配置 HOME_NET
`HOME_NET` 变量代表 Suricata 应该保护的网络或主机。
更改:
```
HOME_NET: "[...]"
```
为:
```
HOME_NET: "[Current IP]"
```
这确保了生成的警报与受监控的机器相关。
## 更改 2:配置 EXTERNAL_NET
默认情况下,源自 `HOME_NET` 的流量可能会被排除在某些检测之外。
更改:
```
EXTERNAL_NET: "!$HOME_NET"
#EXTERNAL_NET: "any"
```
为:
```
#EXTERNAL_NET: "!$HOME_NET"
EXTERNAL_NET: "any"
```
这允许 Suricata 检查所有的流量源和目的地。
## 更改 3:设置规则目录
更改:
```
default-rule-path: ...
```
为:
```
default-rule-path: /etc/suricata/rules
```
这告诉 Suricata 下载的规则存储在哪里。
## 更改 4:加载所有规则
设置:
```
rule-files:
- "*.rules"
```
这将自动加载规则目录中存在的每个规则文件。
## 更改 5:启用统计
如果被禁用,请启用统计信息收集。
设置:
```
stats:
enabled: yes
```
这为 Suricata 的运行和事件生成提供了额外的可见性。
## 更改 6:验证网络接口
如果您的接口不同,请相应地替换它。
设置:
```
af-packet:
- interface: eth0
```
这确保 Suricata 在正确的网络适配器上进行监听。
# 步骤 4:配置 Wazuh 以读取 Suricata 日志
Suricata 将警报存储在 `eve.json` 文件中。必须指示 Wazuh 监控此文件,以便生成的警报出现在仪表板中。
打开:
```
nano /var/ossec/etc/ossec.conf
```
在闭合标签 `` 之前紧接着添加以下配置块:
### 配置
```
json
/var/log/suricata/eve.json
```
此配置告诉 Wazuh 持续解析 Suricata 的 JSON 格式警报,并将其转发以进行分析。
# 步骤 5:重启服务
完成所有配置更改后,重启这两个服务以应用更新。
### 命令
```
systemctl restart suricata.service
systemctl restart wazuh-agent.service
```
# 步骤 6:生成检测事件
为了验证集成,请针对 Agent 机器执行一次 SYN 扫描。
### Payload
```
nmap -sS
```
SYN 扫描会发送 TCP SYN 数据包以发现开放端口,同时避免完整的 TCP 握手。Suricata 包含能够检测各种侦察活动的特征码,使其成为一种简单而有效的验证测试。

# 步骤 7:在 Wazuh 中查看警报
一旦检测到扫描,请导航至:
```
Wazuh Dashboard
└── Agents
└── Threat Hunting
```
仪表板提供了由 Suricata 生成并由 Wazuh 处理的事件的高级概述。

# 步骤 8:调查事件
**Events** 选项卡包含有关每个警报的详细信息,包括:
* 规则 ID
* 警报严重性
* 源 IP
* 目标 IP
* 协议信息
* 事件时间戳
* 完整的 Suricata 警报详情
这使得分析师能够调查检测到的活动,并准确了解触发事件的原因。

# 结果
通过使用 Nmap 生成网络侦察流量,该集成得到了成功验证。Suricata 检测到了该活动,将事件记录到 `eve.json`,Wazuh 成功提取并在 Threat Hunting 仪表板中显示了该警报。
这演示了 Wazuh 如何利用 Suricata 作为基于网络的检测源,以提供对可疑网络活动的集中可见性和监控。
# 总结
此 PoC 演示了 Suricata 和 Wazuh 如何协同工作,以提供网络级检测和集中化的安全监控。
虽然本实验室侧重于检测简单的 Nmap SYN 扫描,但相同的集成可用于识别各种威胁,包括端口扫描、漏洞利用尝试、恶意软件通信、暴力破解活动、命令与控制流量以及其他入侵指标。
通过将 Suricata 的数据包检查功能与 Wazuh 的日志分析、关联和可视化功能相结合,安全团队能够对其环境获得更大的可见性,并能够更有效地调查威胁。
这种基础设置非常贴近真实的 SOC 环境,在这些环境中,多种安全工具持续生成遥测数据,这些数据随后被聚合、分析并转化为可执行的安全洞察。
# 结语
如果这篇指南对您有帮助,请随时与我联系:
**GitHub:** https://github.com/AdityaBhatt3010
**LinkedIn:** https://www.linkedin.com/in/adityabhatt3010/
**Medium:** https://medium.com/@adityabhatt3010
后续还会有更多文章。更简洁、更深入,诞生于无数个深夜的实验室之中。 如果您觉得这很有用,请考虑为该仓库点赞,并关注我的网络安全之旅。
**LinkedIn:** https://www.linkedin.com/in/adityabhatt3010/
**Medium:** https://medium.com/@adityabhatt3010
后续还会有更多文章。更简洁、更深入,诞生于无数个深夜的实验室之中。 如果您觉得这很有用,请考虑为该仓库点赞,并关注我的网络安全之旅。
标签:CTI, FOFA, Metaprompt, PB级数据处理, PoC, Suricata, Wazuh, 安全运维, 插件系统, 暴力破解, 现代安全运营