KellyCalvin23/SOC-Automation
GitHub: KellyCalvin23/SOC-Automation
一个基于 Wazuh、n8n、AbuseIPDB 和 Ollama 的自托管 SOC 告警分诊自动化流水线,通过本地 AI 分析安全告警并将结果推送至 Discord 供人工审查。
Stars: 1 | Forks: 0
# SOC 自动化
[](LICENSE)
一个 AI 辅助、自托管的 SOC 分诊 pipeline:**Wazuh** 负责检测,**n8n** 负责编排,**AbuseIPDB** + 自托管的 **Ollama** LLM 进行 enrichment 和总结,**Discord** 负责通知。完全只读——此 pipeline 中的任何操作都不会对你的基础设施采取自动执行动作。每个告警都是供人工审查的建议。
```
flowchart LR
W[Wazuh Manager] -- "alert JSON
(level ≥ threshold)" --> N1[n8n Webhook] subgraph n8n N1 --> N2[Normalize Alert] N2 --> N3{Severity gate} N3 -- below threshold --> X[dropped] N3 -- pass --> N4{Has source IP?} N4 -- no --> N6[Build AI Prompt] N4 -- yes --> N5[AbuseIPDB Lookup] N5 --> N6 N6 --> N7[AI Analysis] N7 --> N8[Suggested Response] N8 --> N9[Discord Notify] end N5 -.-> AB[(AbuseIPDB API)] N7 -.-> OL[(Ollama)] N9 --> D[Discord] ``` ## 它的功能 1. **接收** — Wazuh 的 `wazuh-integratord` 通过自定义集成脚本,将每个达到或超过配置严重级别阈值的告警转发到 n8n webhook。 2. **标准化** — 将 Wazuh 嵌套的告警 JSON 展平为可预测的结构。 3. **严重级别过滤** — 丢弃任何低于阈值的告警(默认为级别 7)。 4. **Enrichment (AbuseIPDB)** — 查询源 IP 的滥用置信度得分、国家、ISP 和报告次数。如果没有源 IP(例如本地身份验证事件),则会优雅地跳过。 5. **AI 分诊 (Ollama)** — 自托管的 LLM(默认:`llama3.1:8b`)读取告警及 AbuseIPDB 上下文,并生成简短的分诊摘要和优先级判断。无需 API 密钥,无单次请求成本,数据不会离开您的网络。 6. **建议响应** — 基于规则的分类器会根据 Wazuh 规则的分组(身份验证失败、Web、恶意软件/rootkit、防火墙/IDS),添加一条通俗易懂的“下一步检查内容”提示,如果 AbuseIPDB 置信度较高,则会自动升级优先级。 7. **通知** — 针对每个告警发布一条包含上述所有信息的格式化 Discord embed。 ## 仓库内容 ``` SOC-Automation/ ├── n8n-workflow-wazuh-soc.json # Importable n8n workflow (placeholders — see DEPLOYMENT.md) ├── wazuh-integration/ │ ├── custom-n8n # Shell wrapper Wazuh invokes │ ├── custom-n8n.py # Forwards the alert JSON to n8n's webhook │ └── ossec-conf-snippet.xml # block to add to ossec.conf
├── screenshots/ # See screenshots/README.md
├── DEPLOYMENT.md # Full step-by-step setup guide
└── README.md
```
## 截图
**n8n workflow 画布**

**Discord 告警示例**

**Wazuh 中对应的原始告警**

## 快速开始
请参阅 **[DEPLOYMENT.md](DEPLOYMENT.md)** 获取完整的操作指南。简而言之,您需要:
- 一个运行中的 Wazuh manager (v4.x)
- 一台主机上安装了 Docker 以运行 n8n
- 一台主机上安装了 Docker(或裸机)以运行 Ollama — 纯 CPU 也可以运行,只是速度较慢
- 一个免费的 [AbuseIPDB](https://www.abuseipdb.com/) API 密钥
- 一个 Discord webhook URL
## 已知限制
- **Ollama 延迟**:在 CPU 上对 8B 模型进行推理,每个告警需要 30-90 秒或更长时间。对于周期性的安全告警尚可接受,但不适合实时场景。可以使用更小的模型或基于 GPU 的硬件来加快速度。
- **AbuseIPDB 免费版**:每天 1,000 次查询,每个带有源 IP 的告警消耗一次查询。
- **根据设计,不包含自动响应。** “建议响应”步骤仅输出文本。将此 pipeline 扩展为实际执行封禁 IP、终止会话等操作,将涉及更大范围的风险决策,这不在本项目的范围内。
## 安全说明
- 本 pipeline 专为**您自己的基础设施设计,且需经过适当授权**。请勿将其指向您不拥有或管理的系统。
- 此处提交的 `n8n-workflow-wazuh-soc.json` 包含**占位符**凭据 — 切勿提交您真实的 Discord webhook URL 或 AbuseIPDB 密钥。请参阅 `.gitignore`。
- Wazuh manager、n8n 和 Ollama 都应位于私有/受信任的网络中(例如类似 Tailscale 的 VPN mesh)— 它们均不适合直接暴露在互联网上。
## 许可证
[MIT](LICENSE) — 可自由使用、修改和分发,包括商业用途,但需注明出处。
(level ≥ threshold)" --> N1[n8n Webhook] subgraph n8n N1 --> N2[Normalize Alert] N2 --> N3{Severity gate} N3 -- below threshold --> X[dropped] N3 -- pass --> N4{Has source IP?} N4 -- no --> N6[Build AI Prompt] N4 -- yes --> N5[AbuseIPDB Lookup] N5 --> N6 N6 --> N7[AI Analysis] N7 --> N8[Suggested Response] N8 --> N9[Discord Notify] end N5 -.-> AB[(AbuseIPDB API)] N7 -.-> OL[(Ollama)] N9 --> D[Discord] ``` ## 它的功能 1. **接收** — Wazuh 的 `wazuh-integratord` 通过自定义集成脚本,将每个达到或超过配置严重级别阈值的告警转发到 n8n webhook。 2. **标准化** — 将 Wazuh 嵌套的告警 JSON 展平为可预测的结构。 3. **严重级别过滤** — 丢弃任何低于阈值的告警(默认为级别 7)。 4. **Enrichment (AbuseIPDB)** — 查询源 IP 的滥用置信度得分、国家、ISP 和报告次数。如果没有源 IP(例如本地身份验证事件),则会优雅地跳过。 5. **AI 分诊 (Ollama)** — 自托管的 LLM(默认:`llama3.1:8b`)读取告警及 AbuseIPDB 上下文,并生成简短的分诊摘要和优先级判断。无需 API 密钥,无单次请求成本,数据不会离开您的网络。 6. **建议响应** — 基于规则的分类器会根据 Wazuh 规则的分组(身份验证失败、Web、恶意软件/rootkit、防火墙/IDS),添加一条通俗易懂的“下一步检查内容”提示,如果 AbuseIPDB 置信度较高,则会自动升级优先级。 7. **通知** — 针对每个告警发布一条包含上述所有信息的格式化 Discord embed。 ## 仓库内容 ``` SOC-Automation/ ├── n8n-workflow-wazuh-soc.json # Importable n8n workflow (placeholders — see DEPLOYMENT.md) ├── wazuh-integration/ │ ├── custom-n8n # Shell wrapper Wazuh invokes │ ├── custom-n8n.py # Forwards the alert JSON to n8n's webhook │ └── ossec-conf-snippet.xml #
标签:AI风险缓解, LLM评估, n8n, Ollama, Wazuh, 安全运营, 扫描框架, 自动化分类, 请求拦截, 逆向工具