基于Rust的服务器,旨在弥合Wazuh安全信息和事件管理系统与需要上下文安全数据的应用程序之间的差距,特别针对Claude桌面集成使用模型上下文协议(MCP)。
现代AI助手如Claude可以从关于用户安全环境的实时上下文中受益匪浅。Wazuh MCP Server通过提供通过自然语言交互访问Wazuh SIEM数据的全面途径来填补这一空白。
该服务器将复杂的Wazuh API响应转换为MCP兼容格式,使AI助手能够访问:
安全团队现在可以通过自然语言问题,例如“显示Web服务器上的关键漏洞”,“代理001上运行哪些进程?”或“我们是否符合PCI-DSS日志记录要求?”来查询,而无需手动调用API或复杂查询,即可获得结构化且可操作的数据。
这种方法对于需要快速评估安全态势、识别监控覆盖缺口、验证规则有效性并生成分布式基础设施审计要求证据的合规团队尤其有价值。

Wazuh MCP Server通过自然语言交互提供了对Wazuh安全数据的直接访问,支持多种实用案例:
get_wazuh_alert_summary查询最近的安全警报,以快速识别并优先处理需要立即关注的威胁。get_wazuh_vulnerability_summary和get_wazuh_critical_vulnerabilities评估特定代理的安全态势,并优先考虑修补工作。get_wazuh_agent_processes调查代理上的运行进程,用于威胁狩猎和系统分析。get_wazuh_agent_ports监控开放端口和服务,以识别潜在攻击向量。get_wazuh_running_agents跟踪代理状态和连接性,确保全面的安全覆盖。get_wazuh_rules_summary审查和分析安全检测规则,以优化检测能力。get_wazuh_weekly_stats、get_wazuh_remoted_stats和get_wazuh_log_collector_stats跟踪系统性能和统计数据。get_wazuh_cluster_health和get_wazuh_cluster_nodes监控Wazuh集群状态,以确保操作可靠性。search_wazuh_manager_logs和get_wazuh_manager_error_logs搜索和分析管理器日志,用于事件调查。为了增强威胁情报能力,Wazuh MCP Server可以与**Cortex MCP Server**结合使用,创建一个强大的安全分析生态系统。
与Cortex集成的增强功能:
示例工作流程:
mcp-server-wazuhGitHub存储库的发布页面。mcp-server-wazuh-linux-amd64,mcp-server-wazuh-macos-amd64,mcp-server-wazuh-windows-amd64.exe)。chmod +x mcp-server-wazuh-linux-amd64)。mcp-server-wazuh,并移动到系统PATH目录中以便于访问。docker pull ghcr.io/gbrigandi/mcp-server-wazuh:latest
前置条件:
构建:
git clone https://github.com/gbrigandi/mcp-server-wazuh.git
cd mcp-server-wazuh
cargo build --release
二进制文件将在target/release/mcp-server-wazuh处可用。
配置您的LLM客户端的方法将根据客户端本身而有所不同。对于支持MCP(模型上下文协议)的客户端,通常需要将客户端指向mcp-server-wazuh可执行文件的路径。
示例对于Claude桌面:
配置您的claude_desktop_config.json文件:
{
"mcpServers": {
"wazuh": {
"command": "/path/to/mcp-server-wazuh",
"args": [],
"env": {
"WAZUH_API_HOST": "your_wazuh_manager_api_host",
"WAZUH_API_PORT": "55000",
"WAZUH_API_USERNAME": "your_wazuh_api_user",
"WAZUH_API_PASSWORD": "your_wazuh_api_password",
"WAZUH_INDEXER_HOST": "your_wazuh_indexer_host",
"WAZUH_INDEXER_PORT": "9200",
"WAZUH_INDEXER_USERNAME": "your_wazuh_indexer_user",
"WAZUH_INDEXER_PASSWORD": "your_wazuh_indexer_password",
"WAZUH_VERIFY_SSL": "false",
"WAZUH_TEST_PROTOCOL": "https",
"RUST_LOG": "info"
}
}
}
}
替换/path/to/mcp-server-wazuh为实际的二进制文件路径,并按照配置部分的详细说明配置环境变量。
一旦配置完成,您的LLM客户端应该能够启动并与mcp-server-wazuh通信,以访问Wazuh安全数据。
如果使用Docker,请创建一个.env文件,其中包含您的Wazuh配置:
WAZUH_API_HOST=your_wazuh_manager_api_host
WAZUH_API_PORT=55000
WAZUH_API_USERNAME=your_wazuh_api_user
WAZUH_API_PASSWORD=your_wazuh_api_password
WAZUH_INDEXER_HOST=your_wazuh_indexer_host
WAZUH_INDEXER_PORT=9200
WAZUH_INDEXER_USERNAME=your_wazuh_indexer_user
WAZUH_INDEXER_PASSWORD=your_wazuh_indexer_password
WAZUH_VERIFY_SSL=false
WAZUH_TEST_PROTOCOL=https
RUST_LOG=info
配置您的claude_desktop_config.json文件:
{
"mcpServers": {
"wazuh": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--env-file", "/path/to/your/.env",
"ghcr.io/gbrigandi/mcp-server-wazuh:latest"
]
}
}
}
配置通过环境变量管理。可以在项目根目录放置一个.env文件用于本地开发。
| 变量 | 描述 | 默认值 | 必需 |
|---|---|---|---|
WAZUH_API_HOST | Wazuh Manager API服务器的主机名或IP地址。 | localhost | 是 |
WAZUH_API_PORT | Wazuh Manager API的端口号。 | 55000 | 是 |
WAZUH_API_USERNAME | Wazuh Manager API身份验证的用户名。 | wazuh | 是 |
WAZUH_API_PASSWORD | Wazuh Manager API身份验证的密码。 | wazuh | 是 |
WAZUH_INDEXER_HOST | Wazuh索引器API服务器的主机名或IP地址。 | localhost | 是 |
WAZUH_INDEXER_PORT | Wazuh索引器API的端口号。 | 9200 | 是 |
WAZUH_INDEXER_USERNAME | Wazuh索引器API身份验证的用户名。 | admin | 是 |
WAZUH_INDEXER_PASSWORD | Wazuh索引器API身份验证的密码。 | admin | 是 |
WAZUH_VERIFY_SSL | 设置为true以验证Wazuh API和索引器连接的SSL证书。 | false | 否 |
WAZUH_TEST_PROTOCOL | Wazuh连接的协议(例如,“http”,“https”)。覆盖客户端默认值。 | https | 否 |
RUST_LOG | 日志级别(例如,info,debug,trace)。 | info | 否 |
关于WAZUH_VERIFY_SSL的注意事项:强烈建议在生产环境中设置WAZUH_VERIFY_SSL=true,并确保Wazuh Manager API和Wazuh索引器连接的正确证书验证。设置为false会禁用证书检查,这是不安全的。
“必需:是”表示这些变量对于服务器连接到相应的Wazuh组件至关重要。虽然提供了默认值,但它们可能不会匹配生产或非本地设置。
git clone https://github.com/gbrigandi/mcp-server-wazuh.git
cd mcp-server-wazuh
cp .env.example .env.env文件(例如WAZUH_API_HOST,WAZUH_API_PORT)。cargo build
cargo run
# 或使用运行脚本(可能会设置stdio模式):
# ./run.sh
服务器使用rmcp框架构建,通过stdio传输促进MCP客户端(例如,Claude桌面、IDE扩展)与Wazuh MCP Server之间的通信。服务器与Wazuh索引器和Wazuh管理器API交互以获取安全警报及其他数据。
sequenceDiagram
participant ClientApp as 客户端应用(例如,IDE扩展 / Claude桌面)
participant WazuhMCPServer as Wazuh MCP Server(此应用程序)
participant WazuhAPI as Wazuh API
ClientApp->>+WazuhMCPServer: (stdio) MCP 初始化
WazuhMCPServer-->>-ClientApp: (stdout) MCP 已初始化
ClientApp->>+WazuhMCPServer: (stdio) MCP 请求(tools/list)
WazuhMCPServer->>WazuhMCPServer: 解析MCP请求
WazuhMCPServer->>WazuhMCPServer: 内部处理
WazuhMCPServer-->>-ClientApp: (stdout) MCP 响应(可用工具)
ClientApp->>+WazuhMCPServer: (stdio) MCP 请求(tools/call for wazuhAlerts)
WazuhMCPServer->>WazuhMCPServer: 解析MCP请求
WazuhMCPServer->>+WazuhAPI: 请求Wazuh警报(使用WAZUH_USER,WAZUH_PASS)
WazuhAPI-->>-WazuhMCPServer: Wazuh警报数据(JSON)
WazuhMCPServer->>WazuhMCPServer: 将Wazuh警报转换为MCP格式
WazuhMCPServer-->>-ClientApp: (stdout) MCP 响应(警报)
数据流(stdio焦点):
stdin。stdin读取命令。WAZUH_USER,WAZUH_PASS进行身份验证)。src/mcp/transform.rs)处理每个警报,将Wazuh字段映射到MCP字段。stdout向应用程序发送MCP格式化的JSON响应(例如,转换后的警报、命令确认或错误消息)。stdout读取并处理MCP响应。这种stdio交互允许与本地开发工具或其他能够管理子进程的应用程序紧密集成。客户端可以选择通过HTTP端点(/mcp)进行轮询。
服务器通过stdin和stdout使用JSON-RPC 2.0消息进行通信,遵循模型上下文协议(MCP)。
示例交互流程:
客户端应用(例如,IDE扩展)启动mcp-server-wazuh进程。
客户端向服务器的stdin发送initialize请求:
{
"jsonrpc": "2.0",
"id": 0,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"sampling": {},
"roots": { "listChanged": true }
},
"clientInfo": {
"name": "mcp-inspector",
"version": "0.11.0"
}
}
}
服务器通过stdout向客户端发送initialize响应:
{