majiinB/Wazuh-AI-Integration
GitHub: majiinB/Wazuh-AI-Integration
Wazuh AI 集成是一款结合 Wazuh 和 AI 技术的安全警报处理平台,旨在加速安全事件响应。
Stars: 0 | Forks: 0
# Wazuh AI 集成
一个现代的 AI 辅助安全警报关联和分析平台,与 [Wazuh](https://wazuh.com/) 集成。此存储库包含运行和开发 webhook 驱动的、异步警报处理堆栈的代码、容器和脚本,该堆栈结合了确定性关联、IOC 丰富、运行手册的语义检索和可选的 LLM 辅助摘要。
## 概述
Wazuh AI 集成旨在以规模处理 Wazuh 警报,同时最大限度地减少误报并向 SRE 提供可操作上下文。与较旧文档相比,以下是一些重要说明:
- 摄入是 webhook 驱动的:Wazuh Manager(或轻量级转发器/集成器)将警报有效负载 POST 到 Django webhook 端点。系统不依赖于 ES API 轮询进行实时摄入。
- 知识库(KB/运行手册)用于检索以向 SRE 提供参考。KB 内容不会盲目注入到 LLM 提示中——检索点将操作员指向运行手册和片段,而不是将整个 KB 提供给模型。
- MITRE ATT&CK 已集成到关联、去重、攻击会话组装和前向过滤中;之前路线图中的添加 MITRE 映射项被认为是完整的。
关键功能:
- webhook 驱动的摄入,具有快速确认和内联处理
- 处理使用关联回退重试来容忍索引器延迟;长时间运行的 ops(RAG 查询、LLM 调用)目前在内联请求生命周期中运行
- 双重门过滤:前向过滤 + 噪音过滤
- IOC 关联引擎(指标匹配和丰富)
- 在 `logs/utils/log_util.py` 中进行三层 IOC/上下文提取(`extract_iocs`):
- 第一层:直接 Wazuh 规则/代理有效负载字段
- 第二层:MITRE、IP、用户、端口和其他丰富警报字段
- 第三层:解码器特定的命令/进程/上下文字段
- 在任何 LLM/第三方调用之前执行掩码/编辑层
- 可选的 LLM(Google Gemini)用于摘要,具有确定性回退
- 对 SRE Watchtower/外部系统进行签名的 webhook 外发
## 架构(高级)
流程摘要:
-- Wazuh Manager -> Integrator/forwarder -> Django `/webhook/` 摄入端点
-- 摄入处理程序内联处理有效负载;处理管道运行以下按顺序步骤:
1. 前向过滤(摄入门)
2. 三层 IOC/上下文提取
3. IOC 关联引擎
4. 去重 & 攻击会话组装
5. 噪音过滤(上下文抑制)
6. 掩码/编辑(删除 PII/敏感字段)
7. 可选的 LLM 调用(Gemini)。如果 LLM 不可用,则使用模板化摘要和确定性启发式算法
处理后的事件持久化到 PostgreSQL 并在 `pgvector` 中索引以进行语义搜索。结果显示在 Next.js Watchtower 仪表板中,并通过签名的回调 webhook 发送到配置的 SRE 端点。
## 组件
- `services/wazuh-ai/` — Django 后端,公开摄入端点、控制 API、处理管道、IOC 引擎、掩码和外发 webhook 逻辑
- `client/wazuh-test-client/` — SRE 使用的 Next.js Watchtower 仪表板
- `services/wazuh-postgre-database/` — PostgreSQL 容器和 init SQL
- `wazuh-docker/` — 用于测试的参考 Wazuh 单节点和多节点部署
- `scripts/container-util/` — 有用的开发包装器:启动/停止/重建/状态/开发外壳,用于本地开发
- `scripts/simulations/` — canned 攻击场景和小脚本,用于生成测试关联和 IOC 逻辑的警报流量
- 重要系统行为(详细信息)
- 摄入处理:webhook 处理程序验证有效负载并在内联运行管道。代码实现了关联回退重试(请参阅 `logs/services/ingest_service.py`),以在执行关联查询时容忍索引器延迟。
- 双重门过滤:
- 前向过滤:在排队重处理之前,在摄入时进行便宜检查,可以丢弃低价值事件
- 噪音过滤:在关联/组装之后使用的更细粒度的抑制,以减少 SRE 的噪音
- IOC 关联引擎:将警报与已知的 IOC/指标匹配,并使用指标元数据和来源丰富事件
- 掩码/编辑:在 LLM 或外部 POST 之前确定性地删除或编辑 PII 和其他敏感字段。可配置列表位于 `services/wazuh-ai/config/` 下。
- 三层提取作为从警报有效负载中提取 IOC/上下文实现:
- 第一层:规则/代理元数据和原始有效负载字段
- 第二层:MITRE、IP、用户和端口丰富
- 第三层:解码器特定的上下文,例如命令/进程细节
- LLM 回退:如果 Gemini 不可用(错误/速率限制),则系统记录失败并使用模板化摘要和确定性启发式算法,以确保管道输出仍然可用。
## 先决条件
- Docker 20.10+ 和 Docker Compose v2
- Bash(用于辅助脚本)
- 推荐:运行完整堆栈的本地 8GB+ RAM
- (可选)Google Gemini API 密钥用于 LLM 功能
注意:系统以 webhook 为先;您不需要 ES API 轮询进行生产摄入。
## 快速入门
1. 通过交互式设置配置环境:
```
bash setup.sh
```
2. 构建 和 启动 堆栈:
```
docker compose up -d --build
```
3. 验证服务和日志:
```
docker compose ps
docker compose logs -f wazuh-ai-app
docker compose logs -f wazuh-test-client
```
4. 打开仪表板:http://localhost:3000
## 配置(重点)
关键 `.env` 变量(示例):
```
WAZUH_NETWORK_NAME=single-node_default
POSTGRES_DB=wazuh_django_db
POSTGRES_USER=django_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_PORT=5432
AI_APP_PORT=8000
HIGH_SEVERITY_THRESHOLD=10
WATCHTOWER_CALLBACK_URL=https://watchtower.example/callback
CALLBACK_SECRET=supersecret
GEMINI_API_KEY=optional
```
前向过滤/噪音过滤/提取规则存储在 `services/wazuh-ai/config/` 中作为 YAML 文件,以便于针对特定环境进行微调。
## 脚本和开发者工具
- `scripts/container-util/`:用于常见开发任务的便利包装器(启动/停止/重建、状态、开发外壳)。它们包装 `docker compose` 并应用一致的 env 设置,以进行本地迭代。
- `scripts/simulations/`:场景脚本和链(例如,`full_attack_chain.sh`),用于生成针对本地代理或索引器的合成警报流,以测试关联和丰富逻辑。
## 开发说明
- 前端:`client/wazuh-test-client/` — 使用 `pnpm` 或 `npm` 在本地运行 Next.js 应用(请参阅该文件夹中的包清单)。
-- 后端:`services/wazuh-ai/` — Django 项目。在开发中,首选容器化服务以反映生产行为。
常见开发命令:
```
docker compose up -d --build
docker compose exec -it wazuh-ai-app bash
cd client/wazuh-test-client && pnpm install && pnpm dev
```
## 模拟
使用 `scripts/simulations/setup.sh` 和链/单个脚本生成测试数据。这些练习有助于验证 IOC 引擎、关联窗口和过滤规则。
## 服务概述
- `wazuh-ai`(Django):webhook 摄入、处理管道、IOC 引擎、掩码和外发钩子
- `wazuh-test-client`(Next.js):Watchtower 仪表板
- `services/wazuh-postgre-database/`:Postgres + init SQL
## 故障排除
- 容器日志:`docker compose logs -f `
-- 注意:此存储库目前不包括 Celery 任务队列;处理在摄入路径中同步运行。如果您计划迁移到 Celery,请将 `celery` 添加到 `requirements.txt` 中,并引入生产者/工作者和一个代理(Redis/RabbitMQ)。
-- LLM 错误:检查 `wazuh-ai` 日志中的 `LLM fallback` 消息——回退逻辑确保事件仍然得到摘要
- 签名的 webhook 失败:验证 `CALLBACK_SECRET` 和容器到回调 URL 的网络可达性
## 关注的文件
- `services/wazuh-ai/` — 处理管道和配置
- `services/wazuh-ai/config/` — 前向/噪音过滤 YAML 和提取配置
- `scripts/container-util/` — 开发者容器助手
- `scripts/simulations/` — 攻击模拟脚本
- `client/wazuh-test-client/` — 仪表板 UI
## 路线图
- [ ] 高级关联算法(基于 ML)
- [x] MITRE ATT&CK 映射(集成到关联、去重和会话组装中)
- [ ] SOAR 平台集成(Splunk Phantom、Demisto)
- [ ] 多租户支持
- [ ] 高级 RBAC
- [ ] 审计日志
- [ ] Kubernetes 部署模板
## 致谢
使用以下工具构建:
- [Wazuh](https://wazuh.com/)
- [Django](https://www.djangoproject.com/)
- [Next.js](https://nextjs.org/)
- [PostgreSQL](https://www.postgresql.org/) + [pgvector](https://github.com/pgvector/pgvector)
**最后更新时间:2026 年 5 月 31 日**
**版本:1.1.0**
标签:测试用例, 自动化攻击, 请求拦截, 逆向工具