FabulaNox/wazuh-suricata-soc

GitHub: FabulaNox/wazuh-suricata-soc

基于 Wazuh 和 Suricata 的家庭实验室检测栈,通过分层规则模型和精准噪音抑制解决 SIEM 误报泛滥的问题,只推送真正值得关注的告警。

Stars: 0 | Forks: 0

# 由 Wazuh 和 Suricata 驱动的 SOC **一个为捕捉真实信号而非噪音而生的家庭实验室检测栈 - 包含 Wazuh + Suricata、自定义 MITRE 对齐规则以及分级告警模型。** [架构](#architecture) · [规则模型](#the-rule-model-three-tiers) · [部署](#set-up) · [NoxLab 的一部分 ↗](https://github.com/FabulaNox/NoxLab) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
一个为捕捉真实信号而非噪音而构建的家庭实验室**检测栈**:**Wazuh** (SIEM) + **Suricata** (网络 IDS),包含自定义 MITRE 对齐规则、漏洞源调优、 威胁情报丰富化,以及一个保证实时频道可信度的**分级告警**模型。 它为通宵的 [agentic-soc-triage](https://github.com/FabulaNox/agentic-soc-triage) 摘要提供数据源。 整个设计都向一个事实妥协:开箱即用的家庭实验室 SIEM 简直就是一面*误报 之墙*。一个总是“狼来了”的频道最终会被你遗弃——因此,这里的核心工作是 进行规则工程,以决定哪些事情才真正值得人类关注。 ## 目录 - [架构](#architecture) - [规则模型(三层)](#the-rule-model-three-tiers) - [在不致盲的前提下去除 CVE 噪音](#cutting-cve-noise-without-going-blind) - [告警层级](#alerting-tiers) - [部署](#set-up) - [维护](#maintain) - [避坑指南](#gotchas) - [截图](#screenshots) ## 架构 ``` endpoint agents (Sysmon + Wazuh) ┐ edge-router syslog ├─► Wazuh SIEM ──► ranked alerts (level) Suricata IDS (eve.json) ┘ ▲ │ abuse.ch threat-intel ──(CDB lists)─────────┘ ├─ level 7+ ─► Telegram (real time) └─ overnight ─► daily report ─► L1 agent ``` - **数据源:** endpoint agent(身份验证、进程、文件完整性、Sysmon),边界 路由器的 syslog(自定义解码器),以及 Suricata 网络告警——将主机、网络 和边界检测汇聚在同一时间线上。 - **丰富化:** 定时将公共 IOC 源(abuse.ch)拉取到 Wazuh CDB 列表中, 因此任何触及已知恶意 IP/域名/哈希的告警都会被打上标签。 - **浮现的内容:** 告警**级别**是过滤器;自定义规则会将已知的良性噪音降级 至通知阈值*以下*,并将关键事件提升*至*阈值之上。 ![Wazuh SOC 概览仪表板:六个面板显示活跃 agent 数量、分为通知(level 7+)区和索引/静默区的告警量、随时间变化的告警量、顶级规则组以及 MITRE ATT&CK 技术细分——全都是聚合计数,无主机或 agent 标识。](https://static.pigsec.cn/wp-content/uploads/repos/cas/6a/6aa60645b428ca4c5446f4f3921c4620748d83a348571ccf0e1dea2d1f033d88.png) *实时 SOC 概览,仅由聚合计数构建(无 agent / 主机 / IP 字段)。通知区只是庞大且静默的索引基线上方的一小条——这正是调优在发挥作用的体现。* ## 规则模型(三层) 匿名化规则集请参见 [`rules/local_rules.xml`](rules/local_rules.xml)。 | 层级 | 级别 | 目的 | |---|---|---| | **基线可见性** | 3 | 将进程/网络/DNS/驱动事件捕获为可搜索的数据——不触发通知 | | **抑制** | 0 | 屏蔽已知良好的单主机噪音(范围严格限定于具体机器) | | **检测** | 7-12 | 真正重要的告警——在 level 7+ 时触发实时频道通知 | 检测内容包括 CreateRemoteThread(进程注入)、未签名驱动加载、 注册表持久化(`Run`/`RunOnce`/`Services`)、备用数据流写入, 以及从可疑路径(`Temp`、`Public`)执行的操作。它们均映射至 MITRE ATT&CK 技术。 ![local_rules.xml 节选,展示了三个层级:级别 3 的基线可见性规则、范围限定为完整安装路径的级别 0 抑制规则,以及映射到 MITRE 技术 ID 的级别 7-12 检测规则(CreateRemoteThread、未签名驱动加载、ADS 写入)。](https://static.pigsec.cn/wp-content/uploads/repos/cas/92/92f79aa904fa94975a7fdd951e9a7986684850ec6892cd4526055740f5a8959d.png) *`local_rules.xml` 中的三个层级:基线可见性 (3)、锚定路径的抑制 (0) 以及映射 MITRE 的检测 (7-12)。* ### 在不致盲的前提下去除 CVE 噪音 这是最大的收获。该机器运行着前沿内核,这每天会生成 **约 1,815 条漏洞告警**——几乎全是 `Package default status`(尚无上游 修复方案,因此无法操作)。全盘抑制它们会隐藏*真正*可修复的漏洞。修复方案 非常精准: | 自定义规则 | 效果 | |---|---| | 抑制未评分的 CVE(尚无 CVSS) | 消除约 637 条/天 | | 中等严重性 -> level 3 | 已索引,静默 | | 高 / 严重级别 **带有** `Package default status` -> level 4(低于通知阈值) | 安静:暂无需处理 | | 高 / 严重级别 **不带** 该条件 -> 保留原始 level 9 / 13 | **触发通知**——存在真实的修复方案 | 判别依据是 `vulnerability.package.condition` 字段:可修复的漏洞 依然会通知我;不可修复的漏洞则被索引并保持安静。噪音减少约 95%, 同时对*可操作*漏洞的覆盖保持不变。 ## 告警层级 | 级别 | 处理方式 | |---|---| | 0-5 | 已索引且可搜索,但静默 | | 7+ | 实时推送(Telegram)——扫描、暴力破解、威胁情报命中 | | 12+ | 紧急——始终推送 | 将门槛保持在 7 是让该频道值得阅读的关键:自定义规则将已知良性 事件推至其*以下*,并将关键事件提升*至*该门槛。 ![按规则级别统计的告警计数(对数刻度,30 天内),分为索引/静默(低于 7 级)和通知(7 级及以上)。低级别区带达到数十万,而通知区带保持在数千的低水平。](https://static.pigsec.cn/wp-content/uploads/repos/cas/5c/5c16c4edc0b893630ebb807f3b02bee3e1a4d76a35408b47b1eda835aafc6358.png) *按级别划分的告警量(对数刻度,30 天)。低于 7 级的区带在数量级上远超通知区带——SIEM 看到的大部分内容都被刻意保持在寻呼阈值以下。* ![来自告警机器人的 Telegram 推送:规则 533 级别 7,“Listened ports status (netstat) changed”,包含 agent、来源、组和时间戳字段。](https://static.pigsec.cn/wp-content/uploads/repos/cas/2b/2b1c1c6ef1246b8e8cc28eabc8972e24e97fe7306715f3cfd4e485b29c600111.png) *达到门槛的样子:实时推送到 Telegram 的 level 7 告警。只有 level 7+ 才会到达此频道——其他所有低级别内容均被索引且静默。* ## 部署 该检测栈的精简部署方案(已抽象——请填入你自己的主机/地址): **1. 管理端栈(专用虚拟机)。** 安装 `wazuh-manager`、`wazuh-indexer`、 `wazuh-dashboard`。**按顺序**启动它们——先是 indexer,然后是 manager,最后 是 dashboard: ``` sudo systemctl restart wazuh-indexer sudo systemctl restart wazuh-manager sudo systemctl restart wazuh-dashboard sudo systemctl is-active wazuh-indexer wazuh-manager wazuh-dashboard ``` **2. 网络 IDS。** 在核心主机上运行 Suricata,嗅探 LAN 接口, 写入 `eve.json`,并让 Wazuh agent 摄取它,以便将网络检测与 主机检测并列处理。如果在负载下发现内核丢包,请将 AF-PACKET 的 `ring-size` 提高到默认值以上。 **3. Endpoint agent。** 在每个端点上安装 Wazuh agent;在 Windows 上,添加 Sysmon 并转发其 EventChannel。将 agent 注册到 manager。 **4. 自定义规则。** 将 [`rules/local_rules.xml`](rules/local_rules.xml) 拖入 manager 上的 `/var/ossec/etc/rules/local_rules.xml` 并重启。使用 `win.system.computer` 来限定单主机抑制范围(见避坑指南)。 **5. 威胁情报。** 定时将公共 IOC 源拉取到 Wazuh CDB 列表中;添加 一条规则,为触及已列明指标的任何告警打上标签。 **6. 实时告警。** 连接一个自定义集成(`ossec.conf` 集成块), 将 level-N+ 的告警推送到聊天机器人,其阈值设置为确保 只有 tier-3 检测才会触发通知。 ## 维护 - **更新,按顺序进行:** 先更新 manager 栈(indexer -> manager -> dashboard), 然后是 agent。agent **不会**自动更新;Wazuh 支持 N-1 兼容性, 因此短暂的 manager/agent 版本差距是安全的,但应尽快完成 agent 的升级。 - **根据模式目录进行调优:** 每一个反复出现的误报在编写抑制规则之前, 都会有明确的文档化决策(见避坑指南—— 抑制规则是你自身检测能力中的一个漏洞)。 ## 避坑指南 构建过程中遇到的真实检测工程陷阱: - **`agent.name` 在规则评估中不起作用。** Agent 元数据在规则评估时 并不是一个已解码的字段。请改用 `win.system.computer` 来限定规则范围, 并对照实时告警确认该值(它是操作系统主机名,而不是 Wazuh agent 名称)。 - **悄然失效数月的字段名称。** 一条规则匹配了 `vulnerability.condition` 并因此从未触发——解码后的路径是 `vulnerability.package.condition`(Wazuh 会去掉 `data.` 前缀,因此 `` 匹配的是 `data.X.Y.Z`)。一条永远无法匹配的规则 是不可见的:务必在 `alerts.json` 中交叉检查真实的 JSON 路径。 - **Windows 进程名中 PCRE2 的过度转义。** Wazuh 会对 Windows 路径进行二次解码, 因此进程名前的 `\\` 会破坏匹配。请使用 `(?i)(name)\.exe`,而不是 `(?i)\\(name)\.exe`。 - **演变成盲点的抑制规则。** 一条抑制规则仅匹配了进程 *文件名*,因此攻击者如果将载荷命名为一个嘈杂的合法二进制文件名称, 并将其丢入 `%TEMP%` 中,就会继承该抑制规则。将每个抑制规则锚定到 二进制文件的**完整安装路径**——追求精准,而非泛化。 - **“外部扫描”其实是我自己的路由器。** SIEM 将边界 路由器自身的上游 DNS 响应(命中 WAN 且无 NAT 状态的 UDP 源端口) 评分为入站扫描。将路由器指向内部解析器即可消除 这个幽灵。并非所有的边界告警都是攻击者发起的——请将其追溯到真实的网络流。 ## 截图 以上嵌入了所有四张截图:SOC 概览仪表板、 告警级别分布、三层 `local_rules.xml`,以及一次实时的 Telegram 推送。每一项在构建时都保持了防泄密安全——仅聚合的 面板、匿名化的规则文件,以及不含主机/IP/域名的推送——因为 文本清理门无法扫描图像像素。捕获说明请参见 [`assets/README.md`](assets/README.md)。 *自托管安全家庭实验室的一部分。规则 ID 为本地规则 ID;主机、* *地址和 agent 名称均已作抽象化处理。* ## License [MIT](LICENSE) - 配置、脚本和文档均可免费改编。
标签:DNS 反向解析, Metaprompt, Suricata, Wazuh, 入侵检测系统, 威胁情报, 安全告警, 安全数据湖, 安全运营中心, 开发者工具, 现代安全运营, 网络映射