使用说明
🛡️ Wazuh MCP 服务器
一个强大的模型上下文协议(MCP)服务器,它将Wazuh SIEM与Claude Desktop等AI助手连接起来
利用AI驱动的洞察力,升级您的安全监控
📋 目录
- 🎯 这是什么?
- ✨ 特点
- 🏗️ 建筑学
- 📁 仓库结构
- 🚀 快速入门
- 🔧 先决条件
- 🔐 配置
- 🐳 Docker 设置
- Claude 桌面集成
- 🧪 测试
- 💡 使用示例
- 🆘 故障排除
- 📸 截图
- 📄 许可证
- 👨💻 作者
🎯 这是什么?
这个(或:那个) Wazuh MCP 服务器 这是一个专门的模型上下文协议服务器,能够将Wazuh SIEM(安全信息和事件管理)功能与AI助手无缝集成。它通过简洁、标准化的界面,提供实时访问安全警报、代理状态和威胁情报的功能。
🎪 核心能力
- 🔍 实时警报监控 - 访问来自所有Wazuh模块的警报
- 🤖 原生AI集成 - 专为Claude Desktop及其他MCP客户端设计
- 🔐 安全认证 - 基于JWT的令牌管理,支持自动刷新
- 📊 多模块支持 - FIM(文件完整性监控)、恶意软件检测、威胁狩猎、漏洞评估等
- 🐳 准备就绪,可容器化部署 - 完全容器化,支持Docker
- ⚡ 高性能 - 优化用于实时安全操作
✨ 特点/功能
🔐 安全与认证
- JWT Token 管理 - 使用Wazuh API进行自动身份验证
- 令牌缓存 高效复用令牌以最小化API调用
- 安全秘密 - Docker MCP 密钥集成用于生产环境部署
📊 监控与警报
- 文件完整性监控(FIM) - 跟踪文件的变化和修改
- 恶意软件检测 - 识别潜在威胁和可疑活动
- 威胁狩猎 - 高级威胁检测与分析
- 漏洞评估 - 安全漏洞追踪
- IT卫生(或IT良好实践) - 系统配置和合规性监控
- Docker 监控 - 容器安全与活动追踪
- MITRE ATT&CK 映射 - 战术、技术和程序分析
🛠️ 技术特性
- 多索引器支持 - Elasticsearch 与 OpenSearch 的兼容性
- 智能回退方案 - 管理员记录索引器不可用时的日志
- 错误处理 - 全面的错误管理和报告
- 增强表情符号的输出 - 易于阅读、视觉上吸引人的回复
- 非Root执行 - 安全容器操作
🏗️ 建筑学
graph TB
A[Claude Desktop] --> B[MCP Gateway]
B --> C[Wazuh MCP Server]
C --> D[Wazuh API]
C --> E[Wazuh Indexer]
D --> F[JWT Authentication]
E --> G[Alert Data]
C --> H[AI Tools]
H --> I[FIM Alerts]
H --> J[Malware Detection]
H --> K[Threat Hunting]
H --> L[Vulnerability Assessment]
📁 仓库结构
wazuh-mcp-server/
├── 🐳 Dockerfile # Container configuration
├── 📦 requirements.txt # Python dependencies
├── 🐍 wazuh_mcp_server.py # Main MCP server implementation
├── 📋 setup.sh # Setup and configuration script
├── 📖 README.md # This documentation
├── 📝 CHANGELOG.md # Version history
├── 📄 LICENSE # MIT License
├── 🔧 custom.yaml # MCP catalog configuration
├── 📁 assets/ # Screenshots and images
│ ├── claude-fim-alerts.png
│ └── obsidian-fim-alerts.png
└── 📚 docs/ # Additional documentation
🚀 快速入门
1️⃣ 克隆仓库
git clone https://github.com/your-username/wazuh-mcp-server.git
cd wazuh-mcp-server
2️⃣ 构建Docker镜像
docker build -t wazuh-mcp-server .
3️⃣ 配置密钥
# Set up Docker MCP secrets
docker mcp secret set WAZUH_API_USER="wazuh"
docker mcp secret set WAZUH_API_PASS="your-api-password"
docker mcp secret set INDEXER_USER="admin"
docker mcp secret set INDEXER_PASS="your-indexer-password"
docker mcp secret set WAZUH_API_URLS="https://your-wazuh-manager:55000"
docker mcp secret set INDEXER_URLS="https://your-indexer:9200"
4️⃣ 测试连接
# Test imports and connectivity
docker run --network host --rm \
-e WAZUH_PASSWORD="your-password" \
-e WAZUH_INDEXER_USERNAME="admin" \
-e WAZUH_INDEXER_PASSWORD="your-indexer-password" \
wazuh-mcp-server python3 -c "
import sys
sys.path.append('.')
from wazuh_mcp_server import search_wazuh_alerts_index, WAZUH_MODULES
print('✅ All imports successful')
print(f'Configured modules: {len(WAZUH_MODULES)}')
"
🔧 前提条件
系统要求
- 🐳 Docker Desktop(中文可译为“Docker 桌面版”) (支持MCP工具包)
- 🐍 Python 3.11+(Python 3.11或更高版本) (用于本地开发)
- 🌐 网络访问 到 Wazuh 管理器(端口 55000)和索引器(端口 9200)
Wazuh 要求
- Wazuh 管理器 4.13+ 已启用API
- Wazuh 索引器 (Elasticsearch/OpenSearch) 正在运行
- 有效的API凭证 在获得适当权限后
🔐 配置
环境变量
创建一个 .env 用于本地开发的文件:
# Wazuh API Configuration
WAZUH_API_USER=wazuh
WAZUH_API_PASS=your-api-password
WAZUH_API_URLS=https://192.168.1.100:55000,https://127.0.0.1:55000
# Indexer Configuration
INDEXER_USER=admin
INDEXER_PASS=your-indexer-password
INDEXER_URLS=https://192.168.1.100:9200,https://127.0.0.1:9200
Docker MCP 密钥(推荐)
对于生产环境部署,请使用Docker MCP密钥:
# Set all required secrets
docker mcp secret set WAZUH_API_USER="wazuh"
docker mcp secret set WAZUH_API_PASS="your-secure-password"
docker mcp secret set INDEXER_USER="admin"
docker mcp secret set INDEXER_PASS="your-indexer-password"
docker mcp secret set WAZUH_API_URLS="https://your-wazuh:55000"
docker mcp secret set INDEXER_URLS="https://your-indexer:9200"
# Verify secrets are set
docker mcp secret list
🐳 Docker 设置
构建镜像
# Build the Docker image
docker build -t wazuh-mcp-server .
# Tag for registry (optional)
docker tag wazuh-mcp-server:latest your-registry/wazuh-mcp-server:latest
本地运行
# Quick test run
docker run --rm -i \
-e WAZUH_API_USER="wazuh" \
-e WAZUH_API_PASS="your-password" \
-e WAZUH_API_URLS="https://192.168.1.100:55000" \
-e INDEXER_USER="admin" \
-e INDEXER_PASS="your-indexer-password" \
-e INDEXER_URLS="https://192.168.1.100:9200" \
wazuh-mcp-server
Claude 桌面集成
1️⃣ 配置MCP目录
创建 ~/.docker/mcp/catalogs/custom.yaml:
version: 2
name: custom
displayName: Custom MCP Servers
registry:
wazuh_mcp:
description: "Security monitoring and alert management via Wazuh SIEM platform"
title: "Wazuh Security Monitor"
type: server
dateAdded: "2025-09-23T00:00:00Z"
image: wazuh-mcp-server:latest
ref: ""
tools:
- name: get_wazuh_agents
- name: get_wazuh_running_agents
- name: test_wazuh_indexer_connection
- name: get_file_integrity_monitoring_alerts
- name: get_malware_detection_alerts
- name: get_threat_hunting_alerts
- name: get_vulnerability_detection_alerts
- name: get_it_hygiene_alerts
- name: get_docker_alerts
- name: get_mitre_attack_alerts
secrets:
- name: WAZUH_API_USER
env: WAZUH_API_USER
example: "wazuh"
- name: WAZUH_API_PASS
env: WAZUH_API_PASS
example: "your-password"
- name: INDEXER_USER
env: INDEXER_USER
example: "admin"
- name: INDEXER_PASS
env: INDEXER_PASS
example: "your-indexer-password"
- name: WAZUH_API_URLS
env: WAZUH_API_URLS
example: "https://192.168.1.100:55000"
- name: INDEXER_URLS
env: INDEXER_URLS
example: "https://192.168.1.100:9200"
metadata:
category: security
license: MIT
owner: local
2️⃣ 更新注册表
创建 ~/.docker/mcp/registry.yaml:
registry:
wazuh_mcp:
ref: ""
3️⃣ 配置Claude桌面版
更新您的Claude桌面配置~/.config/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mcp-toolkit-gateway": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/var/run/docker.sock:/var/run/docker.sock",
"-v", "/home/your_username/.docker/mcp:/mcp",
"docker/mcp-gateway",
"--catalog=/mcp/catalogs/docker-mcp.yaml",
"--catalog=/mcp/catalogs/custom.yaml",
"--config=/mcp/config.yaml",
"--registry=/mcp/registry.yaml",
"--tools-config=/mcp/tools.yaml",
"--transport=stdio"
]
}
}
}
4️⃣ 重启Claude桌面版
重启Claude桌面以加载新的MCP服务器配置。
🧪 测试
测试服务器功能
# Test basic connectivity
docker run --network host --rm \
-e WAZUH_PASSWORD="your-password" \
-e WAZUH_INDEXER_USERNAME="admin" \
-e WAZUH_INDEXER_PASSWORD="your-indexer-password" \
wazuh-mcp-server python3 -c "
import asyncio
import sys
sys.path.append('.')
from wazuh_mcp_server import search_wazuh_alerts_index
async def test():
data, error = await search_wazuh_alerts_index({'query': {'match_all': {}}, 'size': 3})
if error:
print(f'❌ Indexer Error: {error}')
else:
hits = data.get('hits', {}).get('hits', [])
total = data.get('hits', {}).get('total', 0)
if isinstance(total, dict):
total = total.get('value', 0)
print(f'✅ Found {len(hits)} alerts out of {total} total!')
for hit in hits:
rule = hit.get('_source', {}).get('rule', {})
agent = hit.get('_source', {}).get('agent', {})
print(f' - Rule {rule.get(\"id\")}: {rule.get(\"description\", \"No description\")[:60]}... (Agent: {agent.get(\"name\", \"Unknown\")})')
asyncio.run(test())
"
测试MCP协议
# Test MCP server directly
python wazuh_mcp_server.py
💡 使用示例
一旦与Claude Desktop集成,您就可以提出诸如以下问题:
🔍 代理管理
- “显示所有正在运行的Wazuh代理”
- “列出代理及其最后签到时间”
- “哪些代理处于离线状态?”
🚨 警报分析
- “给我显示最新的文件完整性监控警报”
- “显示过去24小时内的恶意软件检测警报”
- “查找高严重性威胁狩猎警报”
- “显示代理-123的漏洞检测警报”
📊 安全洞察
- “给我总结一下今天所有安全事件的情况”
- “显示映射到MITRE ATT&CK框架的警报”
- “最常见的违规行为是什么?”
- “分析Docker容器安全事件”
🛠️ 故障排除
- “测试Wazuh索引器连接”
- 检查Wazuh API是否正在响应
- “显示所有认证错误”
🆘 故障排除
❌ 常见问题
🔌 连接被拒绝(索引器)
# Test indexer connectivity
curl -k -u "admin:your-password" "https://your-indexer:9200/_cluster/health"
解决方案:
- 确保Wazuh索引器正在运行:
sudo systemctl status wazuh-indexer - 检查9200端口的防火墙设置
- 验证容器之间的网络连接
🔑 认证错误
# Test Wazuh API authentication
curl -k -u "wazuh:your-password" -X POST "https://your-wazuh:55000/security/user/authenticate?raw=true"
解决方案:
- 在密钥中验证API凭据
- 检查Wazuh API用户的权限
- 确保Wazuh管理器上已启用API
Claude中未显示的工具
检查清单:
- ✅(勾选标记,通常表示正确、确认或完成)
custom.yaml存在于~/.docker/mcp/catalogs/custom.yaml - ✅
registry.yaml包括wazuh_mcp条目;入口;入场 - ✅ Claude Desktop配置指向自定义目录
- ✅ Docker 镜像构建成功
- ✅ 配置完成后,Claude Desktop 已重启
🔧 调试命令
# Check MCP server list
docker mcp server list
# Verify secrets
docker mcp secret list
# Test Docker image
docker run --rm wazuh-mcp-server python3 -c "print('✅ Image working')"
# Check file permissions
ls -la ~/.docker/mcp/catalogs/
📸 截图
Claude 桌面集成
Claude Desktop 显示通过 MCP 服务器检索到的最近 Wazuh FIM 警报:
Obsidian 集成
由相同FIM警报(通过工具存储)生成的Obsidian保险库笔记:
📄 许可证
这个项目采用MIT许可证授权——详见 许可证 详情请见文件。
👨💻 作者
PK先生 - 安全工程师与开发人员
- 环境Ubuntu 24.04,Wazuh 4.13,带有MCP工具包的Docker Desktop
- 特别感谢感谢NetworkChuck的启发和指导🙌
⭐ 如果你觉得这个仓库有帮助,请给它点个星吧!
为安全社区倾心打造
