Guía de Migración de OSSEC a Wazuh
Wazuh nació como un fork de OSSEC con el objetivo de modernizar y ampliar sus capacidades, añadiendo una pila de análisis basada en Elasticsearch/OpenSearch, una API REST completa, detección de vulnerabilidades y paneles de cumplimiento normativo. La migración de OSSEC a Wazuh es un proceso directo gracias a la compatibilidad de reglas y configuración, pero requiere planificación para no interrumpir la monitorización de seguridad durante la transición.
Requisitos Previos
- Acceso al servidor OSSEC Manager
- Acceso a todos los servidores con agentes OSSEC
- Servidor nuevo o existente para instalar Wazuh (4 GB RAM mínimo)
- Backup completo de la configuración de OSSEC antes de empezar
- Ventana de mantenimiento planificada
Comparación OSSEC vs Wazuh
| Característica | OSSEC | Wazuh |
|---|---|---|
| Detección de amenazas | Básica | Avanzada (MITRE ATT&CK) |
| Interfaz web | Opcional (Kibana plugin) | Incluida (Wazuh Dashboard) |
| API REST | No | Completa |
| FIM | Básico | Avanzado con reportes |
| Detección de vulnerabilidades | No | Sí |
| Cumplimiento normativo | Parcial | PCI-DSS, HIPAA, GDPR, CIS |
| Docker support | No | Sí |
| Cloud integrations | No | AWS, Azure, GCP |
| Actualizaciones | Esporádicas | Activas |
Planificación de la Migración
# Paso 1: Inventariar la instalación de OSSEC actual
# Versión de OSSEC instalada
/var/ossec/bin/ossec-control status
cat /var/ossec/etc/ossec.conf | grep -i version || \
/var/ossec/bin/ossec-control status | head -3
# Número de agentes conectados
/var/ossec/bin/agent_control -l | grep active
# Listar los ficheros de configuración personalizados
find /var/ossec/etc -name "*.xml" -not -name "*.bak" | sort
find /var/ossec/etc -name "*.conf" -not -name "*.bak" | sort
# Listar las reglas locales personalizadas
ls -la /var/ossec/rules/local_rules.xml 2>/dev/null
cat /var/ossec/rules/local_rules.xml
# Listar los decodificadores personalizados
ls -la /var/ossec/etc/local_decoder.xml 2>/dev/null
# Listar las respuestas activas configuradas
grep -A3 "active-response" /var/ossec/etc/ossec.conf
# Paso 2: Hacer backup completo
tar -czf /tmp/ossec-backup-$(date +%Y%m%d).tar.gz \
/var/ossec/etc/ \
/var/ossec/rules/ \
/var/ossec/logs/ \
/var/ossec/queue/agent-info/
Migración del Manager
# Instalar Wazuh Manager (en el mismo servidor o en uno nuevo)
# Opción recomendada: instalar Wazuh en un servidor nuevo para tener fallback
# Añadir el repositorio de Wazuh
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH \
| sudo gpg --no-default-keyring \
--keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg \
--import
sudo chmod 644 /usr/share/keyrings/wazuh.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] \
https://packages.wazuh.com/4.x/apt/ stable main" \
| sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update
sudo apt install -y wazuh-manager
# Verificar la instalación
sudo systemctl status wazuh-manager
/var/ossec/bin/ossec-control status
Migrar la configuración del manager:
# Copiar las reglas personalizadas de OSSEC a Wazuh
# (Wazuh usa el mismo directorio /var/ossec/)
# Si estás migrando al mismo servidor, las reglas ya están en su lugar
# Si es un servidor nuevo, copiar los ficheros:
# Desde el servidor OSSEC antiguo:
scp /var/ossec/rules/local_rules.xml \
usuario@NUEVO_SERVIDOR:/var/ossec/etc/rules/
scp /var/ossec/etc/local_decoder.xml \
usuario@NUEVO_SERVIDOR:/var/ossec/etc/decoders/
# Copiar la configuración principal (con cuidado - algunos parámetros cambian)
scp /var/ossec/etc/ossec.conf \
usuario@NUEVO_SERVIDOR:/tmp/ossec.conf.old
# Verificar compatibilidad de la configuración
sudo /var/ossec/bin/ossec-logtest -t
Migración de Agentes
Los agentes de OSSEC son compatibles con Wazuh Manager, pero se recomienda actualizarlos:
# Opción A: Los agentes OSSEC existentes pueden conectarse al manager Wazuh
# Sin necesidad de reinstalación inmediata
# Registrar los agentes existentes en el nuevo manager Wazuh
# Obtener la clave del agente desde el servidor OSSEC antiguo
sudo /var/ossec/bin/agent_control -i AGENT_ID
# En el nuevo manager Wazuh, añadir el agente con la misma clave
sudo /var/ossec/bin/manage_agents -i << 'EOF'
NOMBRE_AGENTE
IP_AGENTE
CLAVE_AGENTE
EOF
# Opción B: Reinstalar el agente Wazuh (recomendado para agentes nuevos)
# Ubuntu/Debian en el servidor agente:
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH \
| sudo gpg --no-default-keyring \
--keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
sudo chmod 644 /usr/share/keyrings/wazuh.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] \
https://packages.wazuh.com/4.x/apt/ stable main" \
| sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update
# IMPORTANTE: Desinstalar OSSEC primero
sudo /var/ossec/bin/ossec-control stop
sudo apt remove -y ossec-hids-agent 2>/dev/null || \
sudo tar -czf /tmp/ossec-agent-backup.tar.gz /var/ossec/
# Instalar el agente Wazuh
sudo apt install -y wazuh-agent
# Configurar la conexión al nuevo manager
sudo tee /var/ossec/etc/ossec.conf << 'EOF'
<ossec_config>
<client>
<server>
<address>IP_DEL_MANAGER_WAZUH</address>
<port>1514</port>
<protocol>tcp</protocol>
</server>
<config-profile>ubuntu, ubuntu22</config-profile>
<auto_restart>yes</auto_restart>
</client>
</ossec_config>
EOF
# Registrar el agente en el manager
sudo /var/ossec/bin/agent-auth -m IP_DEL_MANAGER_WAZUH -p 1515
# Iniciar el agente Wazuh
sudo systemctl enable --now wazuh-agent
Script para migración masiva de agentes:
cat > /usr/local/bin/migrate-agents.sh << 'SCRIPT'
#!/bin/bash
# Migración masiva de agentes OSSEC a Wazuh
MANAGER_IP="$1"
AGENTS_FILE="$2" # Fichero con lista de IPs de los agentes
if [ -z "$MANAGER_IP" ] || [ -z "$AGENTS_FILE" ]; then
echo "Uso: $0 <IP_MANAGER> <fichero_agentes>"
exit 1
fi
while IFS= read -r AGENT_IP; do
echo "Migrando agente: $AGENT_IP"
ssh -o StrictHostKeyChecking=no root@$AGENT_IP << REMOTE
# Parar OSSEC
/var/ossec/bin/ossec-control stop 2>/dev/null
# Instalar repositorio Wazuh
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH \
| gpg --no-default-keyring \
--keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
chmod 644 /usr/share/keyrings/wazuh.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" \
> /etc/apt/sources.list.d/wazuh.list
apt update -qq && apt install -y wazuh-agent
# Configurar manager
cat > /var/ossec/etc/ossec.conf << EOF
<ossec_config>
<client>
<server><address>$MANAGER_IP</address></server>
</client>
</ossec_config>
EOF
# Registrar con el manager
/var/ossec/bin/agent-auth -m $MANAGER_IP -p 1515
# Iniciar el agente Wazuh
systemctl enable --now wazuh-agent
echo "Agente $AGENT_IP migrado exitosamente"
REMOTE
done < "$AGENTS_FILE"
SCRIPT
chmod +x /usr/local/bin/migrate-agents.sh
Compatibilidad de Reglas y Configuración
# Las reglas de OSSEC son mayoritariamente compatibles con Wazuh
# Pero hay algunas diferencias importantes:
# 1. Los IDs de reglas < 100000 están reservados para reglas de Wazuh
# Las reglas personalizadas deben usar IDs >= 100000
grep 'id="[0-9]' /var/ossec/etc/rules/local_rules.xml | \
grep -v 'id="1[0-9]\{5,\}' | head # Ver reglas con IDs bajos
# 2. Algunos campos de reglas han cambiado de nombre
# OSSEC: <srcip> → Wazuh mantiene compatibilidad
# OSSEC: <user> → Wazuh: <user> (compatible)
# 3. Verificar que las reglas son válidas en Wazuh
sudo /var/ossec/bin/ossec-logtest -t 2>&1 | grep -i error
# Convertir reglas OSSEC al nuevo formato de Wazuh si es necesario
# Wazuh añade soporte para grupos MITRE ATT&CK:
# <mitre><id>T1078</id></mitre>
# Verificar compatibilidad de la configuración ossec.conf
sudo /var/ossec/bin/ossec-analysisd -t
Preservación de Datos Históricos
# Copiar los logs históricos de OSSEC al servidor Wazuh
# Los logs de OSSEC están en /var/ossec/logs/
# Copiar logs de alertas
rsync -avz \
usuario@SERVIDOR_OSSEC_ANTIGUO:/var/ossec/logs/alerts/ \
/var/ossec/logs/alerts/
# Copiar información de los agentes
rsync -avz \
usuario@SERVIDOR_OSSEC_ANTIGUO:/var/ossec/queue/agent-info/ \
/var/ossec/queue/agent-info/
# Wazuh puede indexar los logs históricos de OSSEC en Elasticsearch/OpenSearch
# Para indexar logs antiguos:
sudo /var/ossec/bin/ossec-analysisd --replay-alerts \
/var/ossec/logs/alerts/2024/Jan/ossec-alerts-01.log.gz
# Los datos de FIM (integridad de ficheros) se almacenan en SQLite
rsync -avz \
usuario@SERVIDOR_OSSEC_ANTIGUO:/var/ossec/queue/db/ \
/var/ossec/queue/db/
Validación Post-Migración
# Verificar que todos los agentes están conectados
sudo /var/ossec/bin/agent_control -l | grep Active
# Comparar el número de agentes activos antes y después
echo "Agentes activos en Wazuh:"
sudo cscli agents list 2>/dev/null || \
sudo /var/ossec/bin/agent_control -l | grep -c Active
# Verificar que las reglas personalizadas funcionan
# Simular un evento que debería disparar una regla
echo 'Jan 15 10:30:45 servidor su: pam_unix(su:session): session opened for user root' \
| sudo /var/ossec/bin/ossec-logtest
# Verificar las alertas en tiempo real
sudo tail -f /var/ossec/logs/alerts/alerts.log
# Comprobar que FIM funciona
sudo /var/ossec/bin/syscheck_control -i AGENT_ID
# Verificar que la detección de vulnerabilidades está funcionando
sudo /var/ossec/bin/agent_control -i AGENT_ID | grep vulnerability
# Ejecutar el health check de Wazuh
sudo /var/ossec/bin/ossec-control status
sudo systemctl status wazuh-manager
Solución de Problemas
Los agentes OSSEC no se conectan al manager Wazuh:
# Verificar que el puerto 1514 está abierto
sudo ss -ulnp | grep 1514
# Verificar la clave del agente
sudo /var/ossec/bin/manage_agents -e AGENT_ID | head -5
# Regenerar la clave si es necesario
sudo /var/ossec/bin/manage_agents -r AGENT_ID
# Luego actualizar la clave en el agente
Reglas personalizadas no se cargan en Wazuh:
# Verificar que el XML es válido
sudo xmllint --noout /var/ossec/etc/rules/local_rules.xml
# Ver errores de carga de reglas
sudo /var/ossec/bin/ossec-analysisd -t 2>&1 | grep -i "error\|warn"
# Recargar las reglas
sudo /var/ossec/bin/ossec-control reload
La consola web de Wazuh no muestra alertas:
# Verificar que el indexer está funcionando
sudo systemctl status wazuh-indexer
# Verificar los índices en OpenSearch
curl -k -u admin:admin "https://localhost:9200/_cat/indices?v" | grep wazuh
# Verificar la conexión entre manager e indexer
sudo /var/ossec/bin/ossec-control status | grep filebeat
Conclusión
La migración de OSSEC a Wazuh es una inversión que amplía significativamente las capacidades de monitorización de seguridad sin requerir un rediseño completo de la arquitectura existente. La compatibilidad de reglas y la estructura de directorios idéntica hacen que el proceso sea menos disruptivo de lo que podría esperarse. Una vez completada la migración, las capacidades adicionales de Wazuh como la detección de vulnerabilidades, los paneles de cumplimiento y la API REST abren un nuevo nivel de visibilidad de seguridad que OSSEC no puede proporcionar.


