Implementación de un SIEM con Wazuh: del despliegue a la detección

Implementación de un SIEM con Wazuh: del despliegue a la detección

Implementación de un SIEM con Wazuh - Jaymon Security

1. Introducción

La implementación de un SIEM con Wazuh se ha convertido en la puerta de entrada natural para cualquier equipo que quiera dar el salto de la monitorización dispersa a un centro de operaciones de seguridad (SOC) funcional. Wazuh combina en una sola plataforma de código abierto la correlación de eventos, la detección de intrusiones basada en el host (HIDS), la monitorización de la integridad de ficheros y la respuesta activa, todo ello con un coste de licencia nulo y una curva de aprendizaje razonable. En este artículo realizamos un laboratorio completo de implementación de un SIEM con Wazuh en un entorno Ubuntu Server 22.04, partiendo de cero: desplegamos el stack completo mediante Docker Compose, integramos agentes Windows y Linux, definimos reglas personalizadas y automatizamos la respuesta mediante la API REST. Al terminar tendremos un SIEM operativo con alertas reales, dashboards de observabilidad y las bases para escalarlo a cientos de agentes. La implementación de un SIEM con Wazuh es el primer paso hacia una postura de seguridad proactiva y medible, y en esta guía cubrimos exactamente ese camino, paso a paso y con comandos verificados.

2. Fundamentos y arquitectura de la implementación de un SIEM con Wazuh

Antes de escribir una sola línea de configuración conviene entender los componentes que intervienen en la implementación de un SIEM con Wazuh. La arquitectura actual se apoya en cuatro piezas: Wazuh Indexer (motor de búsqueda y analítica basado en OpenSearch), Wazuh Server (manager con los módulos de análisis, reglas, decodificadores y respuesta activa), Wazuh Dashboard (panel centralizado) y los agentes, que se instalan en cada host monitorizado y transmiten los eventos de forma cifrada. El tráfico del agente viaja hacia el manager por el puerto UDP/TCP 1514, el registro de nuevos agentes usa el 1515, y las peticiones REST del Dashboard al manager se sirven por el 55000. La API del Indexer escucha en el 9200, mientras el Dashboard se publica por HTTPS en el 443. Con esta arquitectura, ingerir logs de antivirus, firewall, Active Directory o del propio sistema operativo es solo cuestión de configurar el módulo correspondiente en ossec.conf. El resultado es una plataforma que correlaciona eventos de forma nativa, algo realmente potente que solo era viable hasta hace poco con licencias comerciales de alto coste; la implementación de un SIEM con Wazuh cubre toda esa cadena sin coste de licencia adicional.

3. Despliegue del stack Wazuh con Docker Compose

La vía más rápida para una implementación de un SIEM con Wazuh en laboratorio es el asistente oficial sobre una máquina limpia. Con él se obtiene el stack completo en minutos y el script genera las contraseñas por defecto necesarias. En producción recomendamos separar cada componente en su propio servidor; para nuestro laboratorio, una instancia con 8 GB de RAM y 4 vCPUs es suficiente. Ejecutamos el primer paso sobre Ubuntu Server 22.04:

$ curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
$ chmod +x wazuh-install.sh
$ sudo ./wazuh-install.sh --generate-config-files
$ sudo ./wazuh-install.sh --wazuh-indexer node-1

Fig. 1 – Arranque del asistente wazuh-install con generación de configuraciones y del nodo del Indexer (laboratorio propio).

El asistente despliega finalmente el manager y el dashboard, imprime las credenciales de acceso y deja la URL del panel lista para el navegador. Si preferimos el control total por composición, la alternativa equivalente es levantar el stack completo con Docker Compose en un fichero docker-compose.yml como el siguiente:

services:
  wazuh-indexer:
    image: wazuh/wazuh-indexer:4.9.2
    ports:
      - "9200:9200"
  wazuh-manager:
    image: wazuh/wazuh-manager:4.9.2
    ports:
      - "1514:1514/tcp"
      - "1515:1515/tcp"
      - "55000:55000/tcp"
  wazuh-dashboard:
    image: wazuh/wazuh-dashboard:4.9.2
    ports:
      - "443:443"

Con docker compose up -d comprobamos los tres contenedores en estado healthy y la implementación de un SIEM con Wazuh queda operativa. La tabla siguiente resume los componentes y sus puertos, útil como plantilla de referencia en la implementación de un SIEM con Wazuh para la documentación interna:

Componente Rol Puertos relevantes
Wazuh Indexer Almacenamiento y búsqueda 9200 (HTTP), 9300 (nodificación)
Wazuh Manager Correlación, decodificadores y reglas 1514 (agentes), 1515 (enroll), 55000 (API)
Wazuh Dashboard Panel web de operación 443 (HTTPS)
Agente Wazuh Telemetría del host Saliente 1514/1515

4. Configuración del primer agente y primeras alertas

Con el stack arriba, el siguiente hito de la implementación de un SIEM con Wazuh es conectar nuestros primeros agentes. Desde el Dashboard solicitamos la clave de enrollamiento y lanzamos la instalación en el host objetivo. Para un cliente Linux Debian/Ubuntu los comandos son los siguientes:

$ curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
$ curl -s https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.9.2-1_amd64.deb -o wazuh-agent.deb
$ WAZUH_MANAGER='10.0.10.5' WAZUH_AGENT_NAME='web-01' sudo dpkg -i wazuh-agent.deb

Fig. 2 – Instalación y enrollamiento del agente Wazuh en un cliente Linux del laboratorio (laboratorio propio).

Para un cliente Windows, ejecutamos el instalador MSI con los parámetros equivalentes o usamos la política centralizada de distribución de agentes que incorpora el Dashboard. En menos de un minuto el agente aparece con estado active, y las primeras alertas de actividad comienzan a fluir: inicios de sesión fallidos, cambios de paquetes instalados o el envío de la política de auditoría. Una comprobación rápida desde la CLI del manager con /var/ossec/bin/agent_control -l nos confirma el estado de cada agente, su versión y la fecha de su último evento, una práctica mínima que debería formar parte de cualquier checklist de mantenimiento de la plataforma. Es el momento de comprobar que el evento bruto entra por el decoder correcto y que la correlación del manager lo enriquece con el nivel y la técnica MITRE ATT&CK correspondientes. Una base de reglas bien alimentada convierte cualquier implementación de un SIEM con Wazuh en un sistema de detección útil, no en un simple acumulador de logs; ese es el objetivo último de la implementación de un SIEM con Wazuh: calidad de detección, no volumen.

5. Reglas personalizadas y detección avanzada

La verdadera potencia de la implementación de un SIEM con Wazuh aparece cuando adaptamos las reglas a nuestro escenario. Los logs de autenticación de nuestro servidor proxy registran un identificador de usuario en el campo data.extra; escribimos un decoder nuevo para ese formato y, sobre él, una regla que marque como crítico cualquier acceso desde fuera del horario laboral. El ciclo de trabajo es: se prueba con wazuh-logtest, se revisa la coincidencia y se activa la respuesta automática. Un ejemplo de regla personalizada en local_rules.xml sería este:

<group name="local">
  <rule id="100002" level="12">
    <decoded_as>myapiaudit</decoded_as>
    <field name="srcip">10.0.0.</field>
    <description>API audit desde red interna durante el tour de cambio</description>
    <mitre>T1078</mitre>
  </rule>
</group>

5.1. Automatización y detección avanzada tras la implementación de un SIEM con Wazuh

Para ampliar el alcance sin instalar nada más, activamos los módulos integrados: integridad de ficheros (FIM) sobre los directorios sensibles, monitorización de procesos con auditorías de comando, escaneo de vulnerabilidades contra la Base de Datos Nacional de Vulnerabilidades y monitorización de la configuración (SCA) con los checks CIS predefinidos. Con el módulo FIM podemos detectar, por ejemplo, la modificación de /etc/passwd en tiempo real, y con SCA obtenemos una puntuación de endurecimiento por host que los paneles del Dashboard convierten en una foto comparativa inmediata. La monitorización de la integridad es, de hecho, una de las señales más fiables de una intrusión en curso y el complemento natural de la detección basada en reglas; es un ejemplo perfecto de lo que aporta la implementación de un SIEM con Wazuh sin añadir infraestructura.

Antes de dar por validada cualquier regla, nuestra rutina pasa siempre por la herramienta wazuh-logtest, que reproduce el pipeline completo de la implementación de un SIEM con Wazuh sin tocar el entorno de producción: pegamos un evento real capturado, el decoder lo normaliza y comprobamos qué regla coincide y con qué nivel. Este ciclo de prueba y error acorta drásticamente los tiempos de puesta en marcha de nuevas fuentes de datos y evita falsos positivos masivos durante los primeros días. Las alertas que superan la prueba se revisan con calma en el apartado de eventos del Dashboard para confirmar la correlación con la técnica MITRE ATT&amp;CK anunciada, algo que conviene comprobar siempre que cambiamos la versión de los componentes del stack; la validación continua es parte del mantenimiento de la implementación de un SIEM con Wazuh.

6. Dashboards, automatización por API y mantenimiento

La última fase de la implementación de un SIEM con Wazuh consiste en convertir los datos en operación diaria. El Dashboard permite crear alertas personalizadas, favoritos y reportes programados, pero la verdadera productividad llega con la API REST del manager, que podemos consultar desde scripts de integración con nuestro sistema de ticketing o con el SOC. Un ejemplo mínimo con curl y autenticación con token JWT:

$ TOKEN=$(curl -s -u wazuh-wui:c0ntr4s3na -k \
    -d '{"username":"wazuh-wui","password":"c0ntr4s3na"}' \
    https://10.0.10.5:55000/security/user/authenticate \
    -H "Content-Type: application/json" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['token'])")
$ curl -s -k -H "Authorization: Bearer $TOKEN" \
    "https://10.0.10.5:55000/security/users?pretty=true" | head -40

Entre las tareas de mantenimiento que no debemos olvidar están la actualización periódica de cada componente, la revisión de los índices del Indexer y de su política de retención, los backups del certificado de agencias y de las claves del manager, y la auditoría de las reglas locales antes de cada change window; son tareas que hacen sostenible cualquier implementación de un SIEM con Wazuh.

7. Conclusión

En este laboratorio hemos completado la implementación de un SIEM con Wazuh desde cero: arquitectura, despliegue con Docker Compose, integración de agentes, reglas y decodificadores personalizados y automatización por API. El resultado demuestra que la implementación de un SIEM con Wazuh no exige un presupuesto de seis cifras, sino metodología, práctica y una plataforma sólida con seguimiento continuo. Para consolidar los conceptos, recomendamos revisar la documentación oficial de Wazuh Documentation, unirse a la comunidad en wazuh.com y experimentar con los entornos Docker en docs.docker.com. El siguiente paso natural es ampliar el laboratorio con integraciones de MITRE ATT&amp;CK, feeds de inteligencia y un sistema de ticketing. Recuerde: un SIEM no detecta por sí solo; detecta cuando alguien lo ha configurado, probado y mantenido. La implementación de un SIEM con Wazuh es, en definitiva, la inversión inicial más razonable que puede hacer cualquier organización para empezar a medir su seguridad.

Artículos relacionados: implementación de un SIEM para el SOC, parte 1 y demostración de un SIEM en el SOC, parte 2.

¿Necesitas ayuda con Implementación de un SIEM con Wazuh?

En Jaymon Security ayudamos a las organizaciones a proteger sus sistemas. Desde auditorías de seguridad hasta implementación de SIEM/SOC, nuestro equipo de expertos diseña soluciones a medida.

Contacta con nosotros para una evaluación gratuita de tu infraestructura.

English

No puedes copiar el contenido