Servidor MCP de Wazuh - MCP Server Seguro por ALMC Security 2025

Servidor MCP de Wazuh

Ver en GitHub

Servidor Wazuh MCP - Hable con su SIEM

Un servidor basado en Rust diseñado para cerrar la brecha entre un sistema Wazuh de Información de Seguridad y Gestión de Eventos (SIEM) y las aplicaciones que requieren datos contextuales de seguridad, específicamente adaptados para la Integración de Claude Desktop utilizando el Protocolo de Contexto Modelo (MCP).

Visión general

Los modernos asistentes de IA como Claude pueden beneficiarse significativamente del contexto en tiempo real sobre el entorno de seguridad del usuario. El Servidor MCP de Wazuh salva esta brecha proporcionando un acceso completo a los datos SIEM de Wazuh a través de interacciones de lenguaje natural.

Este servidor transforma las complejas respuestas de la API de Wazuh en un formato compatible con MCP, permitiendo el acceso a los asistentes de IA:

  • Alertas y Eventos de Seguridad desde el Indexador Wazuh para la detección de amenazas y respuesta a incidentes
  • Gestión y supervisión de agentes, incluido el estado de salud, los procesos del sistema y los puertos de red
  • Datos deevaluación de vulnerabilidades para la gestión de riesgos y la priorización de parches
  • Reglas de seguridad y configuración para la optimización de la detección y la validación del cumplimiento
  • Estadísticas del sistema y métricas derendimiento para la supervisión operativa y los registros de auditoría
  • Capacidades deanálisis de registros y análisis forense para la investigación de incidentes y la elaboración de informes de conformidad
  • Salud y gestión de clústeres para requisitos de fiabilidad y disponibilidad de la infraestructura
  • Supervisión del cumplimiento y análisis de brechas para marcos normativos como PCI-DSS, HIPAA, SOX y GDPR

En lugar de requerir llamadas manuales a la API o consultas complejas, los equipos de seguridad pueden ahora hacer preguntas en lenguaje natural como "Muéstrame vulnerabilidades críticas en servidores web", "¿Qué procesos se están ejecutando en el agente 001?" o "¿Estamos cumpliendo los requisitos de registro PCI-DSS?" y recibir datos estructurados y procesables de su despliegue Wazuh.

Este enfoque es especialmente valioso para los equipos de cumplimiento que necesitan evaluar rápidamente la postura de seguridad, identificar lagunas en la cobertura de la supervisión, validar la eficacia de las reglas y generar pruebas para los requisitos de auditoría en toda la infraestructura distribuida.

Ejemplos de uso

El Servidor Wazuh MCP proporciona acceso directo a los datos de seguridad Wazuh a través de interacciones de lenguaje natural, permitiendo varios casos prácticos de uso:

Análisis de Alertas de Seguridad

  • Triaje e Investigación de Alertas: Consulta de alertas de seguridad recientes con get_wazuh_alert_summary para identificar y priorizar rápidamente las amenazas que requieren atención inmediata.
  • Reconocimiento de patrones de alertas: Analice las tendencias y patrones de las alertas para identificar problemas de seguridad recurrentes o posibles campañas de ataque.

Gestión de vulnerabilidades

  • Evaluación de vulnerabilidades de agentes: Utilice get_wazuh_vulnerability_summary y get_wazuh_critical_vulnerabilities para evaluar la postura de seguridad de agentes específicos y priorizar los esfuerzos de aplicación de parches.
  • Priorización de vulnerabilidades basada en riesgos: Correlacione los datos sobre vulnerabilidades con la criticidad y exposición de los agentes para centrar los esfuerzos de corrección.

Supervisión y análisis forense del sistema

  • Análisis de procesos: Investigue los procesos en ejecución en los agentes mediante get_wazuh_agent_processes para la detección de amenazas y el análisis del sistema.
  • Evaluación de la seguridad de la red: Supervise los puertos abiertos y los servicios de red con get_wazuh_agent_ports para identificar posibles vectores de ataque.
  • Supervisión del estado del agente: Realice un seguimiento del estado y la conectividad de los agentes mediante get_wazuh_running_agents para garantizar una cobertura de seguridad completa.

Inteligencia de operaciones de seguridad

  • Análisis de la eficacia de las reglas: Revise y analice las reglas de detección de seguridad con get_wazuh_rules_summary para optimizar las capacidades de detección.
  • Supervisión del rendimiento del gestor: Realice un seguimiento del rendimiento y las estadísticas del sistema mediante herramientas como get_wazuh_weekly_stats, get_wazuh_remoted_stats y get_wazuh_log_collector_stats.
  • Gestión de la salud del clúster: Supervise el estado del clúster Wazuh con get_wazuh_cluster_health y get_wazuh_cluster_nodes para la fiabilidad operativa.

Respuesta a incidentes y análisis forense

  • Análisis de registros: Busque y analice los registros del gestor utilizando search_wazuh_manager_logs y get_wazuh_manager_error_logs para la investigación de incidentes.
  • Investigación específica de agentes: Combine varias herramientas para crear perfiles completos de agentes específicos durante incidentes de seguridad.
  • Consultas de seguridad en lenguaje natural: Haga preguntas complejas de seguridad en lenguaje natural y reciba datos estructurados de múltiples componentes de Wazuh.

Eficiencia operativa

  • Informes automatizados: Genere informes y resúmenes de seguridad a través de interfaces conversacionales sin llamadas manuales a la API.
  • Análisis entre componentes: Correlacione datos tanto de Wazuh Indexer (alertas) como de Wazuh Manager (agentes, reglas, vulnerabilidades) para obtener una visión integral de la seguridad.
  • Operaciones de Seguridad Multilingüe: Acceda a los datos de Wazuh y reciba información en varios idiomas para equipos de seguridad globales.

Recopilación y respuesta de información sobre amenazas

Para mejorar las capacidades de inteligencia sobre amenazas, el servidor Wazuh MCP puede combinarse con el servidor Cortex MCP para crear un potente ecosistema de análisis de seguridad.

Capacidades mejoradas con la integración de Cortex:

  • Análisis de artefactos: Analiza automáticamente archivos sospechosos, URLs, dominios y direcciones IP encontradas en las alertas de Wazuh utilizando los más de 140 analizadores de Cortex
  • Enriquecimiento de IOC: Enriquezca los indicadores de compromiso (IOC) de las alertas de Wazuh con inteligencia de amenazas de múltiples fuentes, incluyendo VirusTotal, Shodan, MISP y más
  • Caza automatizada de amenazas: Combine las capacidades de detección de Wazuh con los motores de análisis de Cortex para investigar y clasificar automáticamente las amenazas
  • Inteligencia multifuente: Aproveche los analizadores para comprobaciones de reputación, análisis de malware, análisis de dominios y análisis de comportamiento
  • Orquestación de respuestas: Utilice los resultados de los análisis para informar sobre las acciones de respuesta automatizadas y la priorización de alertas

Ejemplo de flujo de trabajo:

  1. Wazuh detecta un hash de archivo sospechoso o una conexión de red en una alerta
  2. El asistente de IA consulta automáticamente el servidor Cortex MCP para analizar el artefacto utilizando varios analizadores
  3. Se correlacionan los resultados de VirusTotal, análisis híbridos, reputación de dominio y otras fuentes
  4. La inteligencia combinada proporciona contexto para las decisiones de respuesta a incidentes
  5. Los resultados se pueden utilizar para actualizar las reglas de Wazuh o activar una supervisión adicional

Requisitos

  • Un cliente LLM compatible con MCP (Model Context Protocol) (por ejemplo, Claude Desktop)
  • Un servidor Wazuh en funcionamiento (se recomienda v4.12) con la API habilitada y accesible.
  • Conectividad de red entre este servidor y la API Wazuh (si se usa la interacción API).

Instalación

Opción 1: Descarga del Binario Pre-construido (Recomendado)

  1. Descargue el Binario
    • Vaya a la página Releases del repositorio mcp-server-wazuh GitHub.
    • Descargue el binario apropiado para su sistema operativo (por ejemplo, mcp-server-wazuh-linux-amd64, mcp-server-wazuh-macos-amd64, mcp-server-wazuh-windows-amd64.exe).
    • Haga ejecutable el binario descargado (por ejemplo, chmod +x mcp-server-wazuh-linux-amd64).
    • (Opcional) Cámbiale el nombre a algo más sencillo como mcp-server-wazuh y muévelo a un directorio en el PATH de tu sistema para facilitar el acceso.

Opción 2: Docker

  1. Extraiga la imagen Docker:
    docker pull ghcr.io/gbrigandi/mcp-server-wazuh:latest

Opción 3: Construir desde el código fuente

  1. Requisitos previos:

  2. Construir:

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

    El binario estará disponible en target/release/mcp-server-wazuh.

Configure su cliente LLM

El método para configurar tu cliente LLM variará dependiendo del cliente en sí. Para clientes que soportan MCP (Model Context Protocol), normalmente necesitará apuntar al cliente a la ruta del ejecutable mcp-server-wazuh.

Ejemplo para Claude Desktop:

Configure su archivo claude_desktop_config.json:

{ "mcpServers": { "wazuh": { "command": "/ruta/a/mcp-servidor-wazuh", "args": [], "env": { "WAZUH_API_HOST": "your_wazuh_manager_api_host", "WAZUH_API_PORT": "55000", "WAZUH_API_USERNAME": "tu_wazuh_api_user", "WAZUH_API_PASSWORD": "tu_wazuh_api_contraseña", "WAZUH_INDEXER_HOST": "your_wazuh_indexer_host", "WAZUH_INDEXER_PORT": "9200", "WAZUH_INDEXER_USERNAME": "tu_wazuh_indexer_user", "WAZUH_INDEXER_PASSWORD": "your_wazuh_indexer_password", "WAZUH_VERIFY_SSL": "false", "WAZUH_TEST_PROTOCOL": "https", "RUST_LOG": "info" } } } }

Sustituye /path/to/mcp-server-wazuh por la ruta real a tu binario y configura las variables de entorno como se detalla en la sección Configuración.

Una vez configurado, su cliente LLM debe ser capaz de lanzar y comunicarse con el mcp-server-wazuh para acceder a los datos de seguridad Wazuh.

Si utiliza Docker, cree un archivo .env con su configuración 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

Configure su archivo 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" ] } }

Configuración

La configuración se gestiona a través de variables de entorno. Se puede colocar un archivo .env en la raíz del proyecto para el desarrollo local.

VariableDescripciónPor defectoRequerida
WAZUH_API_HOSTNombre de host o dirección IP del servidor Wazuh Manager API.localhostSi
WAZUH_API_PORTNúmero de puerto para el Wazuh Manager API.55000Si
WAZUH_API_USERNAMENombre de usuario para la autenticación de Wazuh Manager API.wazuh
WAZUH_API_PASSWORDContraseña para la autenticación de Wazuh Manager API.wazuh
WAZUH_INDEXER_HOSTNombre de host o dirección IP del servidor Wazuh Indexer API.localhost
WAZUH_INDEXER_PORTNúmero de puerto para el Wazuh Indexer API.9200
WAZUH_INDEXER_USERNAMENombre de usuario para la autenticación de Wazuh Indexer API.admin
WAZUH_INDEXER_PASSWORDContraseña para Wazuh Indexer API de autenticación.admin
WAZUH_VERIFY_SSLEstablecer en true para verificar certificados SSL para Wazuh API y conexiones Indexer.falseNo
WAZUH_TEST_PROTOCOLOProtocolo para las conexiones Wazuh (por ejemplo, "http", "https"). Anula el valor predeterminado del cliente.httpsNo
RUST_LOGNivel de registro (por ejemplo, info, debug, trace).infoNo

Nota sobreWAZUH_VERIFY_SSL: Para entornos de producción, se recomienda encarecidamente establecer WAZUH_VERIFY_SSL=true y asegurar la correcta validación del certificado tanto para el Wazuh Manager API como para las conexiones del Wazuh Indexer. Establecerlo en false deshabilita las verificaciones de certificados, lo cual es inseguro. El "Requerido: Yes" indica que estas variables son esenciales para que el servidor se conecte a los respectivos componentes de Wazuh. Aunque se proporcionan valores por defecto, es poco probable que coincidan con una configuración de producción o no local.

Construyendo

Requisitos previos

Desarrollo local

  1. Clonar el repositorio:
    git clone https://github.com/gbrigandi/mcp-server-wazuh.git cd mcp-server-wazuh
  2. Configurar (si se utiliza Wazuh API)
    • Copie el archivo de entorno de ejemplo: cp .env.ejemplo .env
    • Edite el archivo .env con sus detalles específicos de la API Wazuh (por ejemplo, WAZUH_API_HOST, WAZUH_API_PORT).
  3. Construir:
    cargo build
  4. Run:
    cargo run # O usa el script run (que puede configurar el modo stdio): # ./run.sh

Arquitectura

El servidor está construido usando el framework rmcp y facilita la comunicación entre los clientes MCP (por ejemplo, Claude Desktop, extensiones IDE) y el Servidor Wazuh MCP vía transporte stdio. El servidor interactúa con las APIs Wazuh Indexer y Wazuh Manager para obtener alertas de seguridad y otros datos.

sequenceDiagram participante ClientApp como Aplicación Cliente (e.g., IDE Extension / Claude Desktop) participant WazuhMCPServer as Wazuh MCP Server (this application) participant WazuhAPI as Wazuh API ClientApp->>+WazuhMCPServer: (stdio) MCP Initialize WazuhMCPServer-->>-ClientApp: (stdout) MCP Initialized ClientApp->>+WazuhMCPServer: (stdio) MCP Request (tools/list) WazuhMCPServer->>WazuhMCPServer: Parse MCP Request WazuhMCPServer->>WazuhMCPServer: Procesar internamente WazuhMCPServer-->>-ClientApp: (stdout) MCP Response (herramientas disponibles) ClientApp->>+WazuhMCPServer: (stdio) MCP Request (tools/call for wazuhAlerts) WazuhMCPServer->>WazuhMCPServer: Parse MCP Request WazuhMCPServer->>+WazuhAPI: Solicitud de Alertas Wazuh (con WAZUH_USER, WAZUH_PASS) WazuhAPI-->>-WazuhMCPServer: Datos de Alertas Wazuh (JSON) WazuhMCPServer->>WazuhMCPServer: Transformar Alertas Wazuh a Formato MCP WazuhMCPServer-->>-ClientApp: (stdout) Respuesta MCP (alertas)

Flujo de datos (stdio focus):

  1. Una aplicación (por ejemplo, una extensión IDE, una herramienta CLI) lanza el Wazuh MCP Server como un proceso hijo.
  2. La aplicación envía peticiones con formato MCP (comandos) al stdin del servidor.
  3. El Servidor MCP de Wazuh lee el comando del stdin.
  4. Procesamiento
    • El servidor analiza el comando MCP.
    • Si el comando requiere obtener datos de Wazuh (por ejemplo, "obtener las últimas alertas")
      • El servidor se conecta a la API de Wazuh (autenticándose si es necesario usando credenciales configuradas como WAZUH_USER, WAZUH_PASS).
      • Obtiene los datos requeridos (por ejemplo, alertas de seguridad).
      • La lógica de transformación del servidor(src/mcp/transform.rs) procesa cada alerta, mapeando los campos Wazuh a campos MCP.
    • Si la orden es interna (por ejemplo, una comprobación de estado específica del servidor MCP), la procesa directamente.
  5. El servidor envía una respuesta JSON con formato MCP (por ejemplo, alertas transformadas, reconocimiento de comandos o mensajes de error) a la aplicación a través de su salida estándar.
  6. La aplicación lee y procesa la respuesta MCP desde la salida estándar del servidor.

Esta interacción stdio permite una estrecha integración con herramientas de desarrollo locales u otras aplicaciones que puedan gestionar procesos hijo. También puede estar disponible un punto final HTTP opcional(/mcp) para los clientes que prefieran el sondeo.

El servidor se comunica a través de stdin y stdout utilizando mensajes JSON-RPC 2.0, de acuerdo con el Protocolo de Contexto Modelo (MCP).

Ejemplo de flujo de interacción:

  1. La aplicación cliente (por ejemplo, una extensión IDE) inicia el proceso mcp-server-wazuh.

  2. El cliente envía una solicitud de inicialización a la entrada estándar del servidor:

    { "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. El servidor envía la respuesta de inicialización al cliente a través de stdout:

    { "jsonrpc": "2.0", "id": 1, "result": { "protocolVersion": "2024-11-05", "capabilities": { "prompts": {}, "resources": {}, "tools": {} }, "serverInfo": { "name": "rmcp", "version": "0.1.5" }, "instructions": "Este servidor provee herramientas para interactuar con una instancia SIEM de Wazuh para monitoreo y análisis de seguridad.\nHerramientas disponibles:\n- 'get_wazuh_alert_summary': Recupera un resumen de las alertas de seguridad de Wazuh. Opcionalmente toma el parámetro 'limit' para controlar el número de alertas devueltas (por defecto 100)." }
  4. El cliente envía notificaciones/inicializados al stdin del servidor:(Esto es una notificación, así que el id es omitido por el cliente)

    { "jsonrpc": "2.0", "method": "notifications/initialized" }
  5. El cliente solicita las herramientas disponibles enviando tools/list a la entrada estándar del servidor:

    { "jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {} }
  6. El servidor responde con la lista de herramientas al cliente a través de stdout:

    { "jsonrpc": "2.0", "id": 2, "result": { "tools": [ { "name": "get_wazuh_alert_summary", "description": "Recupera un resumen de las alertas de seguridad de Wazuh. Devuelve información de alerta formateada incluyendo ID, timestamp y descripción.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": {"description": "Número máximo de alertas a recuperar (por defecto: 100)", "format": "uint32", "minimum": 0.0, "type": ["integer", "null"] } }, "title": "GetAlertSummaryParams", "type": "object" } } } }
  7. El cliente llama a la herramienta get_wazuh_alert_summary enviando tools/call al stdin del servidor:

    { "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "get_wazuh_alert_summary", "arguments": { "limit": 5 } } }
  8. El servidor recibe en stdin, procesa la llamada get_wazuh_alert_summary (que implica consultar la API del Indexador Wazuh y transformar los datos).

  9. El servidor envía la respuesta de la herramienta/llamada con las alertas formateadas al cliente a través de stdout:

    { "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "ID de alerta: 1747091815.1212763\nTime: 2024-01-15T10:30:45.123Z\nAgent: web-server-01\nLevel: 7\nDescription: Attached USB Storage" }, {"type": "text", "text": "ID de alerta: 1747066333.1207112\nTime: 2024-01-15T10:25:12.456Z\nAgent: database-server\nLevel: 5\nDescription: New dpkg (Debian Package) installed." } ], "isError": false }

    O, si no se encuentran alertas:

    { "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "No Wazuh alerts found." } ], "isError": false } }

    O, si hay un error al conectarse a Wazuh:

    { "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "Error retrieving alerts from Wazuh: HTTP request error: connection refused" } ], "isError": true } }

Desarrollo y Pruebas

  • Estilo del código: Utiliza el formato estándar de Rust(cargo fmt).
  • Linting: Utiliza Clippy(cargo clippy).
  • Pruebas: Contiene pruebas unitarias para la lógica de transformación y pruebas de integración. Para stdio, las pruebas pueden implicar la canalización de entrada/salida a un arnés de pruebas. Para HTTP, las pruebas usan un servidor API Wazuh falso(httpmock) y un cliente MCP de prueba.
    # Ejecutar todas las pruebas cargo test # Ejecutar pruebas de integración específicas (ejemplo para pruebas HTTP) # cargo test --test integration_test # Ejecutar pruebas con registro detallado RUST_LOG=debug cargo test
  • Consulte tests/README.md para más detalles sobre la ejecución de pruebas y el uso de la CLI del cliente de pruebas.

Licencia

Este proyecto está licenciado bajo la Licencia MIT.

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
Demostración de geolocalizaciónEste proyecto demuestra cómo utilizar las funciones de EdgeOne Pages para recuperar información de g...Ver
Servidor MCP de OktaEsta versión representa una revisión completa de la arquitectura con estas mejoras clave:Ver
Servidor MCP de CloudflareNo hay documentación disponible.Ver
Servidor MCP Azure AHDS FHIRUna implementación de servidor de protocolo de contexto de modelo (MCP) para Azure Health Data Servi...Ver
Herramienta IOL MCPUna herramienta MCP (Model Context Protocol) para interactuar con la API de Invertir Online (IOL) a...Ver
MetoroVer