¡Monta tu propio SIEM gratis! 🛡️ Wazuh en Docker paso a paso (Tutorial Homelab) | Cómo instalar Wazuh en Docker
Wazuh en Docker Compose: tu SIEM autohospedado, paso a paso
Wazuh centraliza los registros de tus equipos, detecta intrusiones, vigila cambios en ficheros y localiza vulnerabilidades. Esta guía despliega la versión 4.14.7 con Docker Compose en un solo nodo, con certificados propios y contraseñas cambiadas desde el primer momento.
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar Wazuh en Docker en el canal GENBYTE:
¿Qué es Wazuh?
Wazuh es una plataforma de seguridad de código abierto que combina SIEM y detección de intrusiones. Tiene tres componentes: el manager, que recibe los datos de los agentes y genera alertas; el indexer, basado en OpenSearch, que guarda y busca los eventos; y el dashboard, la interfaz web.
Características principales
Un solo compose
Manager, indexer y dashboard en un único docker-compose.yml, ideal para empezar.
Certificados propios
Un contenedor generador emite la CA y los certificados de cada componente.
Agentes en contenedor
El repositorio incluye un compose para el agente, además de la instalación con paquete.
Versiones fijadas
Las imágenes llevan la etiqueta 4.14.7, y el repositorio tiene esa versión como etiqueta Git.
Requisitos del sistema
- RAM: el artículo en el que se basa esta guía recomienda 6 GB como mínimo para que el indexer funcione con holgura
- CPU: 4 núcleos recomendados
- Disco: 50 GB libres como mínimo, y SSD si puedes
- Docker Engine y el plugin de Docker Compose, con Git instalado
- Puertos libres en el host: 443 para el dashboard, 1514, 1515 y 514/udp para agentes, 55000 para la API y 9200 para el indexer
Instalación paso a paso
Paso 1: ajusta vm.max_map_count
El indexer no arranca con el valor por defecto de la mayoría de sistemas Linux. Aplícalo ahora y hazlo permanente, porque si solo lo cambias con sysctl -w, se pierde al reiniciar:
Paso 2: clona la etiqueta v4.14.7
Usa la etiqueta de la versión, no la rama principal, que es la de desarrollo de la 5.x:
Paso 3: genera los certificados
El generador lee config/certs.yml, que ya viene en el repositorio, y escribe los certificados en config/wazuh_indexer_ssl_certs/:
Debes ver los certificados del indexer, del manager, del dashboard y la autoridad. Si la carpeta está vacía, no sigas: el stack no arrancará con certificados ausentes.
Paso 4: cambia las contraseñas por defecto
SecretPassword, kibanaserver y MyS3cr37P450r.*-. Un SIEM con contraseñas de ejemplo concentra los registros de tus servidores en un punto que cualquiera puede abrir. Cámbialas antes de arrancar.
4a. Genera el hash de la contraseña de admin. El indexer guarda las contraseñas como hash bcrypt. La ruta viene del artículo original. El repositorio usa la misma carpeta de herramientas para securityadmin.sh, pero no he podido ejecutar la imagen para comprobar que hash.sh está ahí:
4b. Pon el hash en config/wazuh_indexer/internal_users.yml. Hay que cambiarlo en dos usuarios, no solo en admin:
admin: el hash que acabas de generar con tu contraseña deINDEXER_PASSWORD.kibanaserver: un hash generado con la contraseña que pondrás enDASHBOARD_PASSWORD. Es el usuario con el que el dashboard se conecta al indexer; si no coincide, el dashboard no puede entrar.
4c. Pon las mismas contraseñas en docker-compose.yml, en claro, en los servicios que las usan: INDEXER_PASSWORD aparece en el manager y en el dashboard, API_PASSWORD también en ambos, y DASHBOARD_PASSWORD en el dashboard.
API_PASSWORD lo usan el manager y el dashboard para el usuario wazuh-wui, que no aparece en internal_users.yml. El repositorio no documenta cómo se crea ese usuario, así que cuando arranques, comprueba que el dashboard conecta con la API.
Paso 5: levanta el stack
El primer arranque tarda varios minutos, porque el indexer crea sus índices. Ten paciencia antes de dar la instalación por fallida.
internal_users.yml pueden no aplicarse si el indexer ya inicializó su índice de seguridad. Si pasa, la forma segura de empezar de cero es parar el stack, borrar el volumen wazuh-indexer-data y volver a arrancar, porque perderás los datos indexados.
Paso 6: entra en el dashboard
Abre https://IP_DEL_SERVIDOR. El compose publica el dashboard en el 443 del host, aunque dentro del contenedor escuche en el 5601. El certificado es de tu propia CA, así que el navegador avisará:
docker-compose.yml de single-node (v4.14.7)
Este es el fichero del repositorio en la etiqueta v4.14.7. Las contraseñas aparecen con marcadores CAMBIA_...; sustitúyelos por las tuyas como en el paso 4:
./config).
Conectar un agente
El repositorio trae un compose para ejecutar el agente en contenedor. Está en wazuh-docker/wazuh-agent/, y solo necesitas indicarle la IP del manager:
El agente en contenedor vigila lo que monte dentro. Para vigilar equipos reales, lo normal es instalar el agente como paquete en cada máquina. El artículo en el que se basa esta guía lo instala con el paquete .deb; esa ruta no la he podido verificar desde aquí, así que compruébala contra la documentación oficial de agentes antes de usarla.
Gestión y mantenimiento
Ver estado y logs
Consultar la contraseña configurada
Detener el stack
config/ (certificados, internal_users.yml y tu compose con las contraseñas) y los volúmenes de datos. Sin los certificados no puedes restaurar la instalación.
Stack técnico
- Manager:
wazuh/wazuh-manager:4.14.7, con Filebeat para enviar los eventos al indexer - Indexer:
wazuh/wazuh-indexer:4.14.7, basado en OpenSearch - Dashboard:
wazuh/wazuh-dashboard:4.14.7, en el 443 del host - Generador de certificados:
wazuh/wazuh-certs-generator:0.0.4 - Licencia: GPLv2
Comentarios
Publicar un comentario