duaa-adnan/Suricata-Wazuh-IDS-Lab
GitHub: duaa-adnan/Suricata-Wazuh-IDS-Lab
一个蓝队 SOC 实验室项目,记录了 Suricata IDS 与 Wazuh SIEM 平台的集成、自定义检测规则编写测试、网络与主机告警关联,以及基于 GeoIP 的 iptables 防火墙阻断的完整实践过程。
Stars: 0 | Forks: 0
Suricata IDS 与 Wazuh 的集成
作者:Duaa Bint E Adnan
## 概述
本仓库记录了我在 Cyberster 蓝队实习期间担任网络安全分析师实习生的工作。此次实习的目标是通过直接使用真实 SOC 环境中常用的工具和工作流程,培养实用的、符合行业需求的防御性网络安全技能。
本 README 涵盖了第 3 周的内容,在此期间,我通过添加基于网络的监控扩展了现有的基于主机的 SOC 实验室:将 Suricata 安装并配置为网络入侵检测系统 (IDS),编写并测试了三条自定义检测规则,将 Suricata 的告警集成到 Wazuh 面板中,将基于网络的告警与基于主机的文件完整性监控 (FIM) 告警进行关联,并使用 ipset 和 iptables 实现了基于 GeoIP 的防火墙阻断。
## 目录
- 第 3 周 – 任务简报
- 目标
- 实验室环境
- 实施内容
- 挑战与故障排除
- 工具与技术
- 展现的技能
- 经验教训
- 成果
- 文档
- 未来改进
## 目标
通过安装和配置 Suricata 作为网络入侵检测系统 (IDS) 来扩展现有的基于主机的 SOC 实验室,编写并测试自定义检测规则,将 Suricata 的告警与 Wazuh 面板集成,以便同时查看网络和主机事件,演示基于网络和基于主机的检测之间的告警关联,并实施基于 GeoIP 的防火墙过滤。
## 实验室环境
| 组件 | 详情 |
|---|---|
| 宿主机 | Windows 11 |
| Hypervisor | VMware Workstation |
| IDS 主机 | Kali Linux (Suricata 8.0.5) |
| 监控接口 | eth1 (仅主机模式, Kali ↔ Ubuntu Server) |
| 目标 / 被监控服务器 | Ubuntu Server, 192.168.50.10 |
| SIEM 平台 | Wazuh (Manager, Agent) |
| 防火墙过滤 | ipset + iptables (GeoIP 阻断) |
## 实施内容
- 在 Kali 虚拟机上安装 Suricata 并验证安装的版本
- 识别正确的网络接口 (eth1) 并配置 suricata.yaml 的 af-packet 部分对其进行监控
- 启用并启动 Suricata 服务,确认其处于活动和运行状态
- 使用 suricata-update 更新 Suricata 的默认规则集 (Emerging Threats Open)
- 编写了三条自定义检测规则:Nmap SYN 扫描检测器、HTTP 目录遍历检测器和 ICMP 泛洪检测器
- 验证了这三条规则是否正确加载,并通过从 Kali 虚拟机生成匹配流量对每条规则进行了测试
- 配置 Kali 上的 Wazuh agent 以监控 Suricata 的 eve.json 日志文件
- 诊断并修复了由早期网络重新配置遗留的过期 Manager IP 地址导致的 Wazuh agent 断开连接问题
- 确认 Wazuh 内置的 JSON 解析器与已发布的 Suricata 规则文件足以满足集成需求,无需额外的解码器
- 验证了所有三个自定义 Suricata 告警均正确显示在 Wazuh 面板中
- 执行了一项关联练习,将 Suricata 网络告警 (Nmap 扫描) 与来自同一活动的 Wazuh 文件完整性监控 (FIM) 告警进行关联
- 安装了 ipset、iptables、curl 和 whois,并使用公开的国家/地区 IP 黑名单实现了基于 GeoIP 的防火墙阻断
- 使用已知的被阻断和允许的 IP 地址测试了 GeoIP 规则,并实施了特定于域名的阻断规则
- 调查了 GeoIP 防火墙丢弃的数据包未在 Wazuh 面板中显示的原因,并记录了调查结果
## 挑战与故障排除
**挑战 1 — 配置 eve.json 监控后 Wazuh agent 显示断开连接**
原因:Agent 配置的 Manager IP 地址 (192.168.134.10) 是实验室网络重新配置之前遗留下来的;Manager 随后已移动到 192.168.50.10。
解决方法:通过 ping 测试确认网络连接良好,然后在 ossec.conf 中更正了 Manager IP 并重启了 agent。
结果:Agent 成功重新连接,并在面板中显示为活动状态。
**挑战 2 — 为 HTTP 遍历测试设置目标时 Apache 安装失败**
原因:Ubuntu Server 没有互联网连接,因此 apt 无法连接到软件包存储库。
解决方法:使用 Python 内置的 HTTP 服务器 (python3 -m http.server 80) 作为轻量级的替代目标,而不是花更多时间恢复互联网访问。
结果:目录遍历测试请求成功到达服务器,测试继续进行,没有进一步的延迟。
**挑战 3 — 关联练习期间未出现文件完整性监控 (FIM) 告警**
原因:Wazuh agent 的 syscheck 扫描间隔仍设置为默认的 12 小时,因此未能及时检测到新创建的测试文件。
解决方法:暂时将 syscheck 频率降低到 60 秒并重启了 agent。
结果:FIM 告警按预期出现,确认延迟是由扫描间隔引起的,而不是配置故障。
**挑战 4 — HTTP 目录遍历规则在测试期间未生成告警**
原因:未知。该规则已确认存在于 local.rules 中且加载时没有任何语法错误,并且测试请求成功到达了目标服务器,但 fast.log 或 Wazuh 面板中没有出现匹配的告警。
解决方法:在本次实验室范围内未解决。作为待进一步调查的未决事项记录在案,而不是作为已生效的内容呈现。
结果:Nmap SYN 扫描和 ICMP 泛洪规则均已确认有效;HTTP 遍历规则仍未验证。
**挑战 5 — GeoIP 防火墙阻断在 Wazuh 面板中不可见**
原因:iptables 直接丢弃匹配的数据包,其本身不生成日志条目,因此 Wazuh agent 没有任何内容可以转发。
解决方法:针对已知的被阻断和允许的 IP 地址使用 ipset 测试,确认防火墙规则本身工作正常。启用 iptables 日志记录(例如通过 LOG target 或 syslog)被确定为下一步操作,但这超出了本次实验室的范围。
结果:确认防火墙阻断在网络层面发挥作用;这些特定丢弃事件的 SIEM 可见性仍然是一项后续跟进事项。
## 工具与技术
- Suricata (网络入侵检测系统 / IDS)
- Wazuh (Agent, Manager, Dashboard)
- ipset / iptables (基于 GeoIP 的防火墙过滤)
- nmap, curl, ping (用于规则测试的流量生成)
- Python 内置的 HTTP 服务器 (临时测试目标)
- whois (验证 GeoIP 阻断范围)
- scp (在 Windows 和 Kali 之间传输包含特殊字符的规则文件,以避免终端输入问题)
## 展现的技能
- 安装、配置和验证网络入侵检测系统 (IDS)
- 正确识别和配置被监控的网络接口,并理解配置错误的静默故障风险
- 使用 flags、thresholds 和 content/URI 匹配编写自定义 Suricata 检测规则,以减少误报
- 将基于网络的检测工具与现有 SIEM 集成,包括了解何时需要或不需要内置解码器
- 通过按顺序检查配置、日志和基本网络连接来诊断断开连接的 agent,而不是盲目猜测
- 在单个 SIEM 视图中关联基于网络和基于主机的安全事件
- 使用 ipset 和 iptables 实施和测试基于国家和基于域名的网络过滤
- 认识到安全控制正常工作与该控制对监控平台可见之间的区别
## 经验教训
- 正在运行的服务并不等同于配置正确的服务——Suricata 可能处于“活动”状态,但却在完全错误的接口上进行监控,并且没有任何错误指示问题所在。
- 配置漂移是导致故障的一个真实且反复出现的原因;Agent 断开连接的问题之所以存在,仅仅是因为在一次较早的、不相关的网络更改之后没有更新 Manager IP 地址。
- 并非每一个正常工作的安全控制都会自动在 SIEM 中可见——GeoIP 防火墙丢弃的数据包完全按照预期运行,但没有产生任何可供 Wazuh 查看的内容,因为可见性依赖于明确配置的日志记录。
- 有些问题在可用时间内无法完全解决,诚实地记录这些问题(如 HTTP 遍历规则)比将其忽略或声称其有效更有用。
- 实际限制(目标服务器没有互联网访问权限、终端输入弄乱了特殊字符)通常需要务实的替代方案,而不是“正确”的修复,并且值得记录下选择该替代方案的原因。
## 成果
在此任务结束时,Suricata 已经在正确的接口上主动监控网络流量,三条自定义检测规则中的两条已被确认从头到尾完全生效(从流量生成到 Wazuh 面板均可查看),并且完整的关联练习在同一 SIEM 视图中将网络告警与基于主机的 FIM 告警联系起来。基于 GeoIP 的防火墙过滤已实施并在网络层面得到验证,而这些特定事件的 SIEM 可见性被明确列为下一步操作,而不是将其置之不理或无人解释。
## 文档
- 完整技术报告
- LinkedIn 帖子:
## 未来改进
- 调查为什么 HTTP 目录遍历规则尽管正确加载并且测试流量已到达其目标,却没有生成告警
- 启用 iptables 日志记录,以便在 Wazuh 面板中可以看到基于 GeoIP 的防火墙阻断
- 恢复 Ubuntu Server 上的互联网连接,这样安装工具就不需要替代方案
- 既然关联测试已经完成,将 syscheck 扫描间隔恢复为实际的生产环境数值
- 扩展自定义 Suricata 规则,以涵盖本周构建的三条规则之外的其他攻击模式
Duaa Bint E Adnan · 网络安全分析师实习生 @ Cyberster
标签:DNS 反向解析, iptables, IP 地址批量处理, Metaprompt, PB级数据处理, Suricata, Wazuh, x64dbg, 安全运维, 现代安全运营, 逆向工具, 防御蓝队