Despliegue de Wazuh SIEM en un VPS: monitoreo integral de seguridad y detección de amenazas
TL;DR
En esta guía detallada, configuraremos paso a paso Wazuh SIEM (Security Information and Event Management) en su propio VPS. Obtendrá una potente plataforma para la recopilación, análisis y correlación de registros de seguridad, detección de intrusiones, monitoreo de la integridad de archivos y evaluación de vulnerabilidades. Esto le permitirá mejorar significativamente el nivel de seguridad de sus servidores y aplicaciones, proporcionando una protección proactiva contra las ciberamenazas.
- Instalación y configuración de todos los componentes de Wazuh: Manager, Indexer (OpenSearch) y Dashboard (OpenSearch Dashboards).
- Preparación básica del servidor, incluyendo la configuración de SSH, firewall y actualizaciones del sistema.
- Ejemplos de configuración para asegurar el acceso HTTPS utilizando Certbot y Nginx.
- Recomendaciones para elegir la configuración de VPS adecuada y el escalado.
- Estrategias de copia de seguridad y mantenimiento para la estabilidad a largo plazo del sistema.
- Respuestas a preguntas frecuentes y soluciones a problemas comunes.
Qué configuramos y por qué
Desplegaremos Wazuh, una plataforma de monitoreo de seguridad gratuita y de código abierto que integra funcionalidades SIEM, XDR (Extended Detection and Response) y SOAR (Security Orchestration, Automation and Response). Wazuh permite recopilar, indexar y analizar datos de seguridad de diversas fuentes, como registros de sistemas operativos, aplicaciones, dispositivos de red, así como datos de eventos de seguridad en tiempo real. En el corazón de Wazuh se encuentra un potente motor para la detección de amenazas, monitoreo de la integridad de archivos, análisis de vulnerabilidades, respuesta a incidentes y cumplimiento de estándares.
Al final, obtendrá un sistema centralizado que supervisará la seguridad de su VPS o incluso de toda una infraestructura. Wazuh le ayudará a:
- Detectar intrusiones: identificar actividades sospechosas, intentos de fuerza bruta, anomalías en el comportamiento de usuarios y procesos.
- Monitorear la integridad de archivos: rastrear cambios no autorizados en archivos y configuraciones críticas del sistema.
- Evaluar vulnerabilidades: escanear el software instalado en busca de vulnerabilidades conocidas (CVE).
- Recopilar y analizar registros: centralizar los registros de todos sus sistemas para facilitar la búsqueda, el análisis y la auditoría.
- Responder a incidentes: ejecutar acciones automáticamente en respuesta a amenazas detectadas, por ejemplo, bloquear direcciones IP.
- Cumplir con los estándares: simplificar el proceso de auditoría y cumplimiento de estándares como PCI DSS, GDPR, HIPAA.
Existen diferentes enfoques para el despliegue de sistemas SIEM. Puede elegir soluciones gestionadas en la nube (por ejemplo, Splunk Cloud, Azure Sentinel) o un despliegue autohospedado (self-hosted). Las soluciones en la nube ofrecen comodidad y escalabilidad sin la necesidad de gestionar la infraestructura, pero a menudo conllevan altos costos y menos control sobre los datos. El despliegue autohospedado de Wazuh en un VPS, por el contrario, proporciona un control total sobre sus datos e infraestructura, reduce significativamente los costos operativos y permite una personalización profunda del sistema según sus requisitos únicos. Esta es una opción ideal para propietarios de servidores VPS/dedicados que desean construir un sistema de seguridad robusto con una inversión mínima y máxima flexibilidad.
Qué configuración de VPS se necesita para esta tarea
La elección de la configuración de VPS adecuada para Wazuh es crucial, ya que el sistema puede ser bastante exigente en cuanto a recursos, especialmente el Indexer (OpenSearch), que almacena e indexa todos los registros. Los requisitos dependen en gran medida del volumen de registros generados y del número de agentes monitoreados.
Requisitos mínimos para un solo VPS (Wazuh Manager, Indexer, Dashboard en una misma máquina) para entornos pequeños (hasta 20-30 agentes)
- CPU: 4 vCPU (núcleos virtuales). Esto asegurará un rendimiento suficiente para la indexación y el procesamiento de eventos.
- RAM: 8-12 GB RAM. OpenSearch es el principal consumidor de memoria; necesitará al menos 4-6 GB para un funcionamiento estable, el resto para Wazuh Manager y el sistema operativo.
- Disco: 100-200 GB NVMe SSD. La velocidad del disco es crítica para OpenSearch. El volumen depende del período de retención de registros. NVMe SSD supera significativamente a los SSD normales en rendimiento.
- Red: 1 Gbit/s. Para la transmisión de registros y el acceso al panel de control.
Plan de VPS específico para la tarea (para 30-50 agentes)
Para un uso más activo, monitorear 30-50 agentes y almacenar registros durante varias semanas, recomendamos la siguiente configuración base:
- CPU: 6-8 vCPU
- RAM: 16 GB RAM
- Disco: 200-300 GB NVMe SSD
- Red: 1 Gbit/s
Un VPS con las características indicadas garantizará un funcionamiento cómodo de Wazuh para la mayoría de los proyectos pequeños y medianos. Es importante recordar que estas cifras son un punto de partida, y las necesidades reales pueden cambiar dependiendo de su carga de trabajo.
Cuándo se necesita un servidor dedicado y no un VPS
Si planea monitorear más de 100-200 agentes, almacenar registros durante un período prolongado (varios meses) o procesar un volumen muy grande de datos (por ejemplo, registros de servidores web de alta carga), entonces debería considerar un servidor dedicado. Los servidores dedicados ofrecen recursos garantizados, un mayor rendimiento del subsistema de disco y, a menudo, una mejor relación precio/rendimiento para cargas de trabajo grandes. Por ejemplo, para un despliegue a gran escala, podría ser necesario un servidor con más de 16 núcleos físicos, más de 64 GB de RAM y varios TB de NVMe SSD en una matriz RAID. En tales casos, vale la pena considerar un servidor dedicado adecuado para garantizar el rendimiento y la fiabilidad necesarios.
Ubicación: qué factores influyen
La elección de la ubicación del VPS influye en varios factores:
- Latencia: Cuanto más cerca esté el servidor de sus agentes y usuarios del panel de control, menor será la latencia y más rápida la respuesta.
- Legislación: Elija una ubicación que cumpla con sus requisitos de almacenamiento de datos y la legislación de privacidad (por ejemplo, UE para GDPR).
- Costo: Los precios de los VPS pueden variar según la región.
Generalmente se recomienda elegir una ubicación que esté geográficamente cerca de la mayoría de sus sistemas monitoreados.
Preparación del servidor
Antes de instalar Wazuh, es necesario realizar una preparación básica de su VPS basado en Ubuntu 24.04 LTS. Esto incluye la creación de un usuario seguro, la configuración de SSH, el firewall y la actualización del sistema.
1. Conexión por SSH
Primero, conéctese a su nuevo VPS como usuario root (o el que le haya proporcionado el proveedor):
ssh root@ВАШ_IP_АДРЕС
2. Creación de un nuevo usuario con permisos sudo
Trabajar como root no es seguro. Crearemos un nuevo usuario y lo añadiremos al grupo sudo.
adduser wazuhadmin
usermod -aG sudo wazuhadmin
Reemplace wazuhadmin con el nombre de usuario de su elección. Se le pedirá que establezca una contraseña e introduzca información adicional (puede omitirla).
3. Configuración de claves SSH para el nuevo usuario (recomendado)
Para mejorar la seguridad, se recomienda usar claves SSH en lugar de contraseñas. Copie su clave SSH pública al servidor.
su - wazuhadmin
mkdir -p ~/.ssh
chmod 700 ~/.ssh
exit
Ahora copie su clave pública (que se encuentra en su máquina local, normalmente en ~/.ssh/id_rsa.pub) al servidor:
cat ~/.ssh/id_rsa.pub | ssh wazuhadmin@ВАШ_IP_АДРЕС "cat >> ~/.ssh/authorized_keys"
Asegúrese de que los permisos para authorized_keys estén configurados correctamente:
ssh wazuhadmin@ВАШ_IP_АДРЕС "chmod 600 ~/.ssh/authorized_keys"
4. Deshabilitar el inicio de sesión con contraseña para SSH (opcional, pero recomendado)
Edite el archivo de configuración del servidor SSH para permitir el inicio de sesión solo con claves.
sudo nano /etc/ssh/sshd_config
Busque y modifique las siguientes líneas:
#PasswordAuthentication yes
PasswordAuthentication no
#PermitRootLogin prohibit-password
PermitRootLogin no
Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:
sudo systemctl restart sshd
Antes de desconectarse de root, asegúrese de poder iniciar sesión como wazuhadmin usando la clave SSH en una nueva terminal.
ssh wazuhadmin@ВАШ_IP_АДРЕС
Si el inicio de sesión es exitoso, puede cerrar la sesión de root.
5. Configuración del firewall (UFW)
Instalaremos y configuraremos UFW (Uncomplicated Firewall) para permitir solo los puertos necesarios.
sudo apt update && sudo apt install ufw -y
Permitiremos SSH (puerto 22), Wazuh Manager (1514/TCP, 55000/TCP), OpenSearch (9200/TCP) y OpenSearch Dashboards (443/TCP para HTTPS).
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 1514/tcp comment 'Wazuh Agent communication'
sudo ufw allow 55000/tcp comment 'Wazuh API'
sudo ufw allow 9200/tcp comment 'OpenSearch REST API'
sudo ufw allow 443/tcp comment 'HTTPS for OpenSearch Dashboards'
sudo ufw enable
sudo ufw status verbose
Confirme la activación del firewall introduciendo y.
6. Instalación de Fail2Ban (recomendado)
Fail2Ban ayudará a protegerse contra ataques de fuerza bruta en SSH y otros servicios.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
En el archivo jail.local, busque la sección [sshd] y asegúrese de que esté habilitada (enabled = true). También puede configurar bantime (tiempo de bloqueo) y maxretry (número de intentos).
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Guarde y salga. Reinicie Fail2Ban.
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
7. Actualización del sistema e instalación de utilidades básicas
Asegúrese de que todos los paquetes estén actualizados e instale las utilidades necesarias.
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget apt-transport-https gnupg2 -y
Ahora su servidor está listo para la instalación de Wazuh.
Instalación de software — paso a paso
Instalaremos Wazuh 5.0 (versión actual para 2026) en una arquitectura unificada (Manager, Indexer, Dashboard en un solo servidor) utilizando los repositorios oficiales.
1. Instalación de Java Development Kit (JDK)
OpenSearch (Indexer) requiere Java. Instalaremos OpenJDK 17.
sudo apt install openjdk-17-jdk -y # Instalación de OpenJDK 17
java -version # Verificación de la versión de Java
2. Adición del repositorio de Wazuh
Añadiremos el repositorio oficial de Wazuh y su clave GPG.
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/wazuh.gpg > /dev/null # Adición de la clave GPG de Wazuh
echo "deb https://packages.wazuh.com/5.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list # Adición del repositorio de Wazuh 5.x
sudo apt update # Actualización de la lista de paquetes
3. Instalación de Wazuh Indexer (OpenSearch)
Instalaremos Wazuh Indexer, que es un fork de OpenSearch. Wazuh 5.0 utilizará OpenSearch 2.x.
sudo apt install wazuh-indexer -y # Instalación de Wazuh Indexer
Después de la instalación, es necesario generar certificados para una comunicación segura entre los componentes. Wazuh proporciona una utilidad para esto.
sudo /usr/share/wazuh-indexer/bin/indexer-cert-tool.sh # Ejecución de la utilidad para generar certificados
Esta utilidad creará los archivos de certificado necesarios (admin-key.pem, admin.pem, node-key.pem, node.pem, ca.pem) en el directorio actual. Los moveremos a las ubicaciones correctas.
sudo mkdir /etc/wazuh-indexer/certs
sudo mv ~/admin-key.pem ~/admin.pem ~/node-key.pem ~/node.pem ~/ca.pem /etc/wazuh-indexer/certs/ # Movimiento de certificados
sudo chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs # Establecimiento de permisos correctos
sudo chmod -R 500 /etc/wazuh-indexer/certs # Restricción de acceso a los certificados
sudo chmod 400 /etc/wazuh-indexer/certs/key.pem # Restricción de acceso a las claves privadas
Ahora edite la configuración del Indexer para usar estos certificados. Abra el archivo /etc/wazuh-indexer/opensearch.yml.
sudo nano /etc/wazuh-indexer/opensearch.yml
Añada o modifique las siguientes líneas:
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0 # Permitir acceso desde todas las interfaces
http.port: 9200 # Puerto HTTP estándar
# --------------------------------- Security ---------------------------------
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/node.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/node-key.pem
plugins.security.ssl.http.rootcas_filepath: /etc/wazuh-indexer/certs/ca.pem
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/node.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/node-key.pem
plugins.security.ssl.transport.rootcas_filepath: /etc/wazuh-indexer/certs/ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.allow_unsafe_democertificates: true # Temporalmente para simplificar, en producción es mejor usar sus propias CA
plugins.security.nodes_dn:
- "CN=.wazuh-indexer.local" # Reemplace con su FQDN, si lo usa
Guarde y salga. Ahora puede iniciar y verificar el Indexer.
sudo systemctl daemon-reload # Recarga de unidades systemd
sudo systemctl enable wazuh-indexer # Habilitación del inicio automático del Indexer
sudo systemctl start wazuh-indexer # Inicio del Indexer
sudo systemctl status wazuh-indexer # Verificación del estado del Indexer
Espere unos minutos hasta que el Indexer se inicie por completo. Puede verificar su funcionamiento accediendo a la API:
curl -XGET https://localhost:9200 -u admin:admin -k # Verificación de la disponibilidad de la API de OpenSearch (usuario/contraseña por defecto admin:admin)
Debería recibir una respuesta JSON con información sobre el clúster.
4. Instalación de Wazuh Manager
Wazuh Manager es el núcleo del sistema que procesa, analiza y correlaciona los datos de los agentes.
sudo apt install wazuh-manager -y # Instalación de Wazuh Manager
Después de la instalación, es necesario configurar el Manager para comunicarse con el Indexer. Edite el archivo /etc/wazuh/wazuh_indexer.yaml.
sudo nano /etc/wazuh/wazuh_indexer.yaml
Especifique la dirección IP o el FQDN de su Indexer (en este caso localhost).
# Configuration for connection to Wazuh Indexer
# This file is managed by the wazuh-manager package.
# Do not edit this file directly, use the /etc/wazuh/wazuh_indexer.yaml.template file instead.
---
nodes:
- address: "localhost" # Cambie a la dirección IP o FQDN de su Indexer
port: 9200
# SSL configuration
# If using custom certificates for the Wazuh Indexer, specify the path to the CA certificate.
# Otherwise, the default certificates generated by the Wazuh Indexer will be used.
ssl_certificate_authorities:
- "/etc/wazuh-indexer/certs/ca.pem" # Ruta al certificado CA del Indexer
Guarde y salga. Ahora inicie el Manager.
sudo systemctl enable wazuh-manager # Habilitación del inicio automático del Manager
sudo systemctl start wazuh-manager # Inicio del Manager
sudo systemctl status wazuh-manager # Verificación del estado del Manager
5. Instalación de Wazuh Dashboard (OpenSearch Dashboards)
Wazuh Dashboard proporciona una interfaz web para la visualización y gestión de datos de seguridad.
sudo apt install wazuh-dashboard -y # Instalación de Wazuh Dashboard
Al igual que el Indexer, el Dashboard también necesita certificados para un funcionamiento seguro. Usaremos los mismos certificados que para el Indexer.
sudo mkdir /etc/wazuh-dashboard/certs
sudo cp /etc/wazuh-indexer/certs/ca.pem /etc/wazuh-indexer/certs/node.pem /etc/wazuh-indexer/certs/node-key.pem /etc/wazuh-dashboard/certs/ # Copia de certificados
sudo chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs # Establecimiento de permisos correctos
sudo chmod -R 500 /etc/wazuh-dashboard/certs # Restricción de acceso a los certificados
sudo chmod 400 /etc/wazuh-dashboard/certs/key.pem # Restricción de acceso a las claves privadas
Edite el archivo de configuración del Dashboard /etc/wazuh-dashboard/opensearch_dashboards.yml.
sudo nano /etc/wazuh-dashboard/opensearch_dashboards.yml
Añada o modifique las siguientes líneas:
server.host: "0.0.0.0" # Permitir acceso desde todas las interfaces
server.port: 443 # Uso del puerto HTTPS estándar 443
opensearch.hosts: ["https://localhost:9200"] # Especificamos la dirección del Indexer
opensearch.ssl.verificationMode: none # Deshabilitamos temporalmente la verificación SSL, ya que usamos certificados autofirmados
opensearch.ssl.certificate: /etc/wazuh-dashboard/certs/node.pem
opensearch.ssl.key: /etc/wazuh-dashboard/certs/node-key.pem
opensearch.ssl.certificateAuthorities: ["/etc/wazuh-dashboard/certs/ca.pem"]
# Wazuh API configuration
wazuh.manager.host: "https://localhost" # Dirección del Wazuh Manager
wazuh.manager.port: 55000 # Puerto de la API de Wazuh
wazuh.manager.ssl.verify: false # Deshabilitamos la verificación SSL para la API de Wazuh
Guarde y salga. Ahora inicie el Dashboard.
sudo systemctl enable wazuh-dashboard # Habilitación del inicio automático del Dashboard
sudo systemctl start wazuh-dashboard # Inicio del Dashboard
sudo systemctl status wazuh-dashboard # Verificación del estado del Dashboard
Espere unos minutos para que el Dashboard se inicie por completo. Después de esto, podrá acceder a la interfaz web en la dirección https://SU_DIRECCIÓN_IP. El usuario y la contraseña por defecto para OpenSearch Dashboards son admin:admin.