返回市场
MCP服务器Wazuh

MCP服务器Wazuh

作者:gbrigandi141 星标更新:2025-07-11

项目介绍

Wazuh MCP Server - 与您的SIEM进行交互

基于Rust的服务器,旨在弥合Wazuh安全信息和事件管理系统与需要上下文安全数据的应用程序之间的差距,特别针对Claude桌面集成使用模型上下文协议(MCP)。

概述

现代AI助手如Claude可以从关于用户安全环境的实时上下文中受益匪浅。Wazuh MCP Server通过提供通过自然语言交互访问Wazuh SIEM数据的全面途径来填补这一空白。

该服务器将复杂的Wazuh API响应转换为MCP兼容格式,使AI助手能够访问:

  • 安全警报及事件:从Wazuh索引器获取威胁检测和事件响应的数据。
  • 代理管理和监控:包括健康状态、系统进程和网络端口。
  • 漏洞评估:用于风险管理及补丁优先级排序的数据。
  • 安全规则及配置:用于检测优化和合规性验证。
  • 系统统计及性能:用于操作监控和审计跟踪的指标。
  • 日志分析及取证:用于事件调查和合规报告的能力。
  • 集群健康及管理:满足基础设施可靠性和可用性的需求。
  • 合规监控及差距分析:适用于PCI-DSS、HIPAA、SOX和GDPR等监管框架。

安全团队现在可以通过自然语言问题,例如“显示Web服务器上的关键漏洞”,“代理001上运行哪些进程?”或“我们是否符合PCI-DSS日志记录要求?”来查询,而无需手动调用API或复杂查询,即可获得结构化且可操作的数据。

这种方法对于需要快速评估安全态势、识别监控覆盖缺口、验证规则有效性并生成分布式基础设施审计要求证据的合规团队尤其有价值。

示例用例

Wazuh MCP Server通过自然语言交互提供了对Wazuh安全数据的直接访问,支持多种实用案例:

安全警报分析

  • 警报分类和调查:使用get_wazuh_alert_summary查询最近的安全警报,以快速识别并优先处理需要立即关注的威胁。
  • 警报模式识别:分析警报趋势和模式,以识别重复出现的安全问题或潜在攻击活动。

漏洞管理

  • 代理漏洞评估:使用get_wazuh_vulnerability_summaryget_wazuh_critical_vulnerabilities评估特定代理的安全态势,并优先考虑修补工作。
  • 基于风险的漏洞优先级:将漏洞数据与代理的重要性和暴露程度相关联,以集中修复工作。

系统监控和取证

  • 进程分析:使用get_wazuh_agent_processes调查代理上的运行进程,用于威胁狩猎和系统分析。
  • 网络安全评估:使用get_wazuh_agent_ports监控开放端口和服务,以识别潜在攻击向量。
  • 代理健康监控:使用get_wazuh_running_agents跟踪代理状态和连接性,确保全面的安全覆盖。

安全运营智能

  • 规则有效性分析:使用get_wazuh_rules_summary审查和分析安全检测规则,以优化检测能力。
  • 管理性能监控:使用工具如get_wazuh_weekly_statsget_wazuh_remoted_statsget_wazuh_log_collector_stats跟踪系统性能和统计数据。
  • 集群健康管理:使用get_wazuh_cluster_healthget_wazuh_cluster_nodes监控Wazuh集群状态,以确保操作可靠性。

事件响应和取证

  • 日志分析:使用search_wazuh_manager_logsget_wazuh_manager_error_logs搜索和分析管理器日志,用于事件调查。
  • 特定代理调查:结合多个工具,在安全事件期间构建特定代理的综合档案。
  • 自然语言安全查询:以自然语言提出复杂的安全问题,并从多个Wazuh组件接收结构化数据。

运营效率

  • 自动化报告:通过对话界面生成安全报告和摘要,无需手动API调用。
  • 跨组件分析:关联Wazuh索引器(警报)和Wazuh管理器(代理、规则、漏洞)的数据,以获得全面的安全洞察。
  • 多语言安全运营:全球安全团队可以访问Wazuh数据并接收多种语言的洞察。

威胁情报收集和响应

为了增强威胁情报能力,Wazuh MCP Server可以与**Cortex MCP Server**结合使用,创建一个强大的安全分析生态系统。

与Cortex集成的增强功能:

  • 工件分析:自动分析Wazuh警报中发现的可疑文件、URL、域和IP地址,使用Cortex的140多个分析器。
  • IOC丰富:使用来自多个来源(包括VirusTotal、Shodan、MISP等)的威胁情报丰富Wazuh警报中的妥协指标(IOCs)。
  • 自动化威胁狩猎:结合Wazuh的检测能力和Cortex的分析引擎,自动调查和分类威胁。
  • 多源情报:利用分析器进行声誉检查、恶意软件分析、域名分析和行为分析。
  • 响应编排:使用分析结果指导自动化响应行动和警报优先级。

示例工作流程:

  1. Wazuh在警报中检测到可疑文件哈希或网络连接。
  2. AI助手自动查询Cortex MCP Server,使用多个分析器分析工件。
  3. 结合VirusTotal、混合分析、域名声誉和其他来源的结果。
  4. 综合情报为事件响应决策提供背景。
  5. 发现可用于更新Wazuh规则或触发额外监控的信息。

要求

  • 具有MCP(模型上下文协议)兼容LLM客户端(例如,Claude桌面)
  • 运行中的Wazuh服务器(推荐v4.12),启用并可访问API。
  • 此服务器与Wazuh API之间的网络连接(如果使用API交互)。

安装

选项1:下载预构建二进制文件(推荐)

  1. 下载二进制文件:
    • 访问mcp-server-wazuhGitHub存储库的发布页面
    • 下载适合您操作系统的二进制文件(例如,mcp-server-wazuh-linux-amd64mcp-server-wazuh-macos-amd64mcp-server-wazuh-windows-amd64.exe)。
    • 将下载的二进制文件设置为可执行(例如,chmod +x mcp-server-wazuh-linux-amd64)。
    • (可选)将其重命名为更简单的名称如mcp-server-wazuh,并移动到系统PATH目录中以便于访问。

选项2:Docker

  1. 拉取Docker镜像:
    docker pull ghcr.io/gbrigandi/mcp-server-wazuh:latest
    

选项3:从源码构建

  1. 前置条件:

  2. 构建:

    git clone https://github.com/gbrigandi/mcp-server-wazuh.git
    cd mcp-server-wazuh
    cargo build --release
    

    二进制文件将在target/release/mcp-server-wazuh处可用。

配置您的LLM客户端

配置您的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_HOSTWazuh Manager API服务器的主机名或IP地址。localhost
WAZUH_API_PORTWazuh Manager API的端口号。55000
WAZUH_API_USERNAMEWazuh Manager API身份验证的用户名。wazuh
WAZUH_API_PASSWORDWazuh Manager API身份验证的密码。wazuh
WAZUH_INDEXER_HOSTWazuh索引器API服务器的主机名或IP地址。localhost
WAZUH_INDEXER_PORTWazuh索引器API的端口号。9200
WAZUH_INDEXER_USERNAMEWazuh索引器API身份验证的用户名。admin
WAZUH_INDEXER_PASSWORDWazuh索引器API身份验证的密码。admin
WAZUH_VERIFY_SSL设置为true以验证Wazuh API和索引器连接的SSL证书。false
WAZUH_TEST_PROTOCOLWazuh连接的协议(例如,“http”,“https”)。覆盖客户端默认值。https
RUST_LOG日志级别(例如,infodebugtrace)。info

关于WAZUH_VERIFY_SSL的注意事项:强烈建议在生产环境中设置WAZUH_VERIFY_SSL=true,并确保Wazuh Manager API和Wazuh索引器连接的正确证书验证。设置为false会禁用证书检查,这是不安全的。 “必需:是”表示这些变量对于服务器连接到相应的Wazuh组件至关重要。虽然提供了默认值,但它们可能不会匹配生产或非本地设置。

构建

前置条件

本地开发

  1. 克隆仓库:
    git clone https://github.com/gbrigandi/mcp-server-wazuh.git 
    cd mcp-server-wazuh
    
  2. 配置(如果使用Wazuh API):
    • 复制示例环境文件:cp .env.example .env
    • 使用特定的Wazuh API详细信息编辑.env文件(例如WAZUH_API_HOSTWAZUH_API_PORT)。
  3. 构建:
    cargo build
    
  4. 运行:
    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焦点):

  1. 应用程序(例如,IDE扩展,CLI工具)作为子进程启动Wazuh MCP Server。
  2. 应用程序将MCP格式化的请求(命令)发送到服务器的stdin
  3. Wazuh MCP Server从stdin读取命令。
  4. 处理:
    • 服务器解析MCP命令。
    • 如果命令需要从Wazuh获取数据(例如,“获取最新警报”):
      • 服务器连接到Wazuh API(如有必要,使用配置的凭据如WAZUH_USERWAZUH_PASS进行身份验证)。
      • 获取所需数据(例如,安全警报)。
      • 服务器的转换逻辑(src/mcp/transform.rs)处理每个警报,将Wazuh字段映射到MCP字段。
    • 如果命令是内部的(例如,特定于MCP服务器的状态检查),则直接处理。
  5. 服务器通过其stdout向应用程序发送MCP格式化的JSON响应(例如,转换后的警报、命令确认或错误消息)。
  6. 应用程序从服务器的stdout读取并处理MCP响应。

这种stdio交互允许与本地开发工具或其他能够管理子进程的应用程序紧密集成。客户端可以选择通过HTTP端点(/mcp)进行轮询。

服务器通过stdinstdout使用JSON-RPC 2.0消息进行通信,遵循模型上下文协议(MCP)。

示例交互流程:

  1. 客户端应用(例如,IDE扩展)启动mcp-server-wazuh进程。

  2. 客户端向服务器的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"
        }
      }
    }
    
  3. 服务器通过stdout向客户端发送initialize响应:

    {