--- title: "Cómo migrar de OSSEC a Wazuh en Ubuntu 24.04" description: "Migra de OSSEC a Wazuh en Ubuntu 24.04: copia de seguridad, instalación del manager, traslado de reglas propias y cambio de agentes sin perder alertas." category: "Herramientas de Seguridad" language: es source: https://cubepath.com/es/docs/herramientas-de-seguridad/guia-de-migracion-de-ossec-a-wazuh updated: 2026-09-25 --- # Cómo migrar de OSSEC a Wazuh en Ubuntu 24.04 Wazuh nació como un fork de OSSEC y conserva su estructura (`/var/ossec`), su formato de reglas y decodificadores y buena parte de su ruleset, pero añade una API REST, detección de vulnerabilidades, inventario de sistema y un panel web propio. En este tutorial migrarás un despliegue de OSSEC a Wazuh 4.x montando un manager nuevo en paralelo en Ubuntu 24.04, trasladando tus reglas y decodificadores personalizados y sustituyendo los agentes uno a uno. Mantener el manager de OSSEC encendido durante la transición te deja siempre un camino de vuelta. ## Requisitos previos Para seguir esta guía necesitas: - El servidor OSSEC actual (manager) y acceso `sudo` a él y a los hosts con agente. - Un servidor nuevo con Ubuntu 24.04 LTS para el manager de Wazuh, por ejemplo un VPS de CubePath, con al menos 2 vCPU y 4 GB de RAM (8 GB si también vas a instalar el indexador y el panel en la misma máquina). - Un usuario no root con privilegios `sudo` en todos los equipos. - Conectividad desde los agentes al nuevo manager en los puertos TCP 1514 (eventos) y 1515 (registro de agentes). En la guía se usan estos marcadores, que debes sustituir por tus valores: `ossec_server_ip` (manager antiguo), `wazuh_manager_ip` (manager nuevo) y `your_user`. > Nota: esta guía migra el manager y los agentes. El indexador y el panel web de Wazuh (Wazuh Dashboard) se instalan aparte con el asistente oficial descrito en la [guía de inicio rápido de Wazuh](https://documentation.wazuh.com/current/quickstart.html); no son necesarios para que el manager reciba eventos y genere alertas. ## Qué cambia al pasar de OSSEC a Wazuh Antes de empezar conviene saber qué se mantiene y qué no: | Elemento | OSSEC | Wazuh 4.x | |---|---|---| | Directorio base | `/var/ossec` | `/var/ossec` | | Control de servicios | `ossec-control` | `wazuh-control` y systemd (`wazuh-manager`, `wazuh-agent`) | | Probar reglas | `ossec-logtest` | `wazuh-logtest` | | Reglas personalizadas | `/var/ossec/rules/local_rules.xml` | `/var/ossec/etc/rules/local_rules.xml` | | Decodificadores propios | `/var/ossec/etc/local_decoder.xml` | `/var/ossec/etc/decoders/local_decoder.xml` | | Ruleset por defecto | `/var/ossec/rules/` | `/var/ossec/ruleset/rules/` | | Protocolo de agentes | UDP 1514 por defecto | TCP 1514 por defecto, registro en TCP 1515 | | Rango para reglas propias | 100000 en adelante por convención | 100000 a 120000 reservado para el usuario | El formato XML de reglas y decodificadores es compatible, así que tus reglas propias normalmente funcionan sin cambios. El archivo `ossec.conf` completo, en cambio, **no** debe copiarse tal cual: Wazuh añade y renombra secciones, y es más seguro trasladar solo los bloques que hayas personalizado. ## Paso 1: Inventariar la instalación de OSSEC En el manager de OSSEC, anota la versión instalada. OSSEC la guarda en `/etc/ossec-init.conf`: ```bash cat /etc/ossec-init.conf ``` ```output DIRECTORY="/var/ossec" NAME="OSSEC HIDS" VERSION="v3.7.0" DATE="..." TYPE="server" ``` Lista los agentes registrados y su estado. Esta lista será tu checklist durante la migración: ```bash sudo /var/ossec/bin/agent_control -l ``` ```output OSSEC HIDS agent_control. List of available agents: ID: 000, Name: ossec-server (server), IP: 127.0.0.1, Active/Local ID: 001, Name: web01, IP: 10.0.0.11, Active ID: 002, Name: db01, IP: 10.0.0.12, Active ``` Localiza lo que has personalizado respecto a una instalación limpia: reglas, decodificadores y los bloques de `ossec.conf` que has tocado (archivos monitorizados, directorios de integridad, respuesta activa, correo): ```bash sudo cat /var/ossec/rules/local_rules.xml sudo cat /var/ossec/etc/local_decoder.xml sudo grep -nE '||' /var/ossec/etc/ossec.conf ``` Guarda esta salida; la usarás en el paso 4. ## Paso 2: Hacer una copia de seguridad de OSSEC Empaqueta la configuración, las reglas, las claves de los agentes y el histórico de alertas. El histórico no se puede importar en Wazuh, pero conviene conservarlo por si necesitas consultarlo o por requisitos de auditoría: ```bash sudo tar -czf /root/ossec-backup-$(date +%F).tar.gz \ /var/ossec/etc /var/ossec/rules /var/ossec/logs/alerts ``` Comprueba que el archivo existe y no está vacío: ```bash sudo ls -lh /root/ossec-backup-*.tar.gz ``` ```output -rw-r--r-- 1 root root 184M Sep 25 10:12 /root/ossec-backup-2026-09-25.tar.gz ``` Copia este archivo fuera del servidor antes de continuar. ## Paso 3: Instalar el manager de Wazuh En el servidor nuevo, importa la clave GPG de Wazuh en `/etc/apt/keyrings`: ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --dearmor -o /etc/apt/keyrings/wazuh.gpg ``` Añade el repositorio oficial de la rama 4.x: ```bash echo "deb [signed-by=/etc/apt/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list ``` Instala el manager y arráncalo: ```bash sudo apt update sudo apt install wazuh-manager sudo systemctl daemon-reload sudo systemctl enable --now wazuh-manager ``` Comprueba que el servicio está activo: ```bash sudo systemctl status wazuh-manager --no-pager ``` ```output ● wazuh-manager.service - Wazuh manager Loaded: loaded (/usr/lib/systemd/system/wazuh-manager.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-25 10:20:41 UTC; 8s ago ``` Abre en UFW los puertos de agentes y de registro (y SSH si aún no lo estaba): ```bash sudo ufw allow OpenSSH sudo ufw allow 1514/tcp sudo ufw allow 1515/tcp sudo ufw enable ``` Si prefieres limitar el acceso a tu red, usa reglas del tipo `sudo ufw allow from 10.0.0.0/24 to any port 1514 proto tcp`. ## Paso 4: Trasladar reglas y decodificadores personalizados Copia tus archivos desde el manager de OSSEC a tu directorio personal en el servidor Wazuh. Ejecuta esto en el manager de OSSEC: ```bash sudo cp /var/ossec/rules/local_rules.xml /var/ossec/etc/local_decoder.xml /tmp/ sudo chown "$USER" /tmp/local_rules.xml /tmp/local_decoder.xml scp /tmp/local_rules.xml /tmp/local_decoder.xml your_user@wazuh_manager_ip:~/ ``` En el servidor Wazuh, instálalos en sus rutas nuevas con el propietario y los permisos que espera el manager: ```bash sudo install -o wazuh -g wazuh -m 0660 ~/local_rules.xml /var/ossec/etc/rules/local_rules.xml sudo install -o wazuh -g wazuh -m 0660 ~/local_decoder.xml /var/ossec/etc/decoders/local_decoder.xml ``` Tus reglas suelen depender de reglas base mediante ``. Comprueba que los identificadores a los que haces referencia existen en el ruleset de Wazuh. Por ejemplo, para la regla 5716 (fallo de autenticación SSH): ```bash grep -rl 'id="5716"' /var/ossec/ruleset/rules/ ``` ```output /var/ossec/ruleset/rules/0095-sshd_rules.xml ``` Si un identificador no aparece, busca la regla equivalente en `/var/ossec/ruleset/rules/` y actualiza tu ``. Revisa también que todas tus reglas usen identificadores entre 100000 y 120000. Traslada ahora los bloques personalizados de `ossec.conf` que anotaste en el paso 1 (por ejemplo `` o `` dentro de ``), añadiéndolos a la sección correspondiente del archivo de Wazuh en lugar de sustituirlo: ```bash sudo nano /var/ossec/etc/ossec.conf ``` Valida la configuración y las reglas antes de reiniciar: ```bash sudo /var/ossec/bin/wazuh-analysisd -t ``` Si no hay errores, el comando termina sin mostrar nada. Reinicia el manager: ```bash sudo systemctl restart wazuh-manager ``` Prueba una regla con `wazuh-logtest`, que sustituye a `ossec-logtest`. Arráncalo y pega una línea de log que debería disparar una de tus reglas o una del ruleset: ```bash sudo /var/ossec/bin/wazuh-logtest ``` ```text Sep 25 10:30:45 web01 sshd[1234]: Failed password for invalid user admin from 203.0.113.50 port 51122 ssh2 ``` ```output **Phase 3: Completed filtering (rules). id: '5710' level: '5' description: 'sshd: Attempt to login using a non-existent user' groups: '['syslog', 'sshd', 'authentication_failed', 'invalid_login']' **Alert to be generated. ``` Sal con `Ctrl+C`. ## Paso 5: Sustituir los agentes de OSSEC por agentes de Wazuh El agente de Wazuh se instala en `/var/ossec`, la misma ruta que el de OSSEC, así que en cada host hay que retirar primero el agente antiguo. Migra un host de prueba, verifica que llegan sus eventos y después repite con el resto. Detén el agente de OSSEC y guarda una copia de su directorio: ```bash sudo /var/ossec/bin/ossec-control stop sudo tar -czf /root/ossec-agent-backup-$(date +%F).tar.gz /var/ossec ``` Si lo instalaste desde un paquete, elimínalo con el gestor de paquetes (por ejemplo `sudo apt purge ossec-hids-agent`). Si lo compilaste desde el código fuente, mueve el directorio y desactiva el servicio que haya dejado el instalador: ```bash sudo mv /var/ossec /var/ossec.old systemctl list-unit-files | grep -i ossec ``` Si el último comando muestra alguna unidad, desactívala con `sudo systemctl disable `. Añade el repositorio de Wazuh igual que en el paso 3 (clave y archivo `wazuh.list`) e instala el agente. La variable `WAZUH_MANAGER` escribe la dirección del manager en la configuración durante la instalación y `WAZUH_AGENT_NAME` fija el nombre con el que aparecerá: ```bash sudo apt update sudo WAZUH_MANAGER="wazuh_manager_ip" WAZUH_AGENT_NAME="web01" apt install wazuh-agent sudo systemctl daemon-reload sudo systemctl enable --now wazuh-agent ``` El agente se registra automáticamente contra el manager en el puerto 1515 al arrancar; ya no hace falta `manage_agents` ni copiar claves a mano. En hosts con Rocky Linux 9, el repositorio se define así en `/etc/yum.repos.d/wazuh.repo`: ```bash sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH sudo nano /etc/yum.repos.d/wazuh.repo ``` ```ini [wazuh] gpgcheck=1 gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH enabled=1 name=EL-$releasever - Wazuh baseurl=https://packages.wazuh.com/4.x/yum/ protocol=https ``` Después instala con `sudo WAZUH_MANAGER="wazuh_manager_ip" dnf install wazuh-agent` y arranca el servicio del mismo modo. Para evitar que una actualización rutinaria del sistema instale una versión del agente más nueva que la del manager, bloquea el paquete y actualízalo de forma controlada: ```bash sudo apt-mark hold wazuh-agent ``` Si migras decenas de hosts, automatiza exactamente estos pasos con tu herramienta de gestión de configuración (Ansible, por ejemplo) en lugar de un bucle SSH improvisado. ## Paso 6: Verificar la migración En el manager de Wazuh, comprueba que el agente aparece como activo: ```bash sudo /var/ossec/bin/agent_control -l ``` ```output Wazuh agent_control. List of available agents: ID: 000, Name: wazuh-server (server), IP: 127.0.0.1, Active/Local ID: 001, Name: web01, IP: any, Active ``` Genera un evento real en el agente, por ejemplo un intento fallido de SSH con un usuario inexistente, y comprueba que la alerta llega al manager: ```bash sudo tail -f /var/ossec/logs/alerts/alerts.log ``` ```output ** Alert 1758796245.12345: - syslog,sshd,authentication_failed,invalid_login, 2026 Sep 25 10:45:12 (web01) any->/var/log/auth.log Rule: 5710 (level 5) -> 'sshd: Attempt to login using a non-existent user' ``` Cuando todos los agentes de tu lista del paso 1 aparezcan como `Active` en Wazuh y el de OSSEC ya no reciba eventos, puedes apagar el manager antiguo. Conserva la copia de seguridad del paso 2 el tiempo que exija tu política de retención. ## Solución de problemas **El agente no se registra o aparece como `Never connected`.** Comprueba desde el agente que llega a los puertos del manager y revisa su log: ```bash nc -zv wazuh_manager_ip 1514 nc -zv wazuh_manager_ip 1515 sudo tail -n 50 /var/ossec/logs/ossec.log ``` Un error de conexión suele ser el firewall; un mensaje de nombre duplicado indica que ya existe un agente registrado con ese nombre, que puedes eliminar en el manager con `sudo /var/ossec/bin/manage_agents -r `. **El manager no arranca tras copiar las reglas.** Ejecuta `sudo /var/ossec/bin/wazuh-analysisd -t`: el error indica el archivo y la regla problemática, normalmente un identificador duplicado con el ruleset o un `` que ya no existe. También puedes revisar `sudo tail -n 50 /var/ossec/logs/ossec.log`. **Una regla propia no salta en `wazuh-logtest`.** Mira en la fase 2 qué decodificador se aplica. Si tu regla dependía de un decodificador propio de OSSEC, asegúrate de que está en `/var/ossec/etc/decoders/local_decoder.xml` y de que su nombre no choca con uno del ruleset de Wazuh. ## Conclusión Has instalado un manager de Wazuh en paralelo al de OSSEC, trasladado tus reglas y decodificadores, validado que siguen funcionando con `wazuh-logtest` y sustituido los agentes sin perder la monitorización. A partir de aquí puedes instalar el indexador y el panel web de Wazuh para consultar las alertas desde el navegador, activar la detección de vulnerabilidades y revisar las comprobaciones de configuración (SCA) que Wazuh ejecuta en cada agente.