---
title: "Cómo instalar OSSEC HIDS en Ubuntu 24.04"
description: "Instala OSSEC HIDS desde el código fuente en Ubuntu 24.04 y configura análisis de logs, integridad de archivos, respuesta activa, alertas por correo y agentes."
category: "Seguridad de Red Avanzada"
language: es
source: https://cubepath.com/es/docs/seguridad-de-red-avanzada/deteccion-de-intrusiones-basada-en-host-ossec
updated: 2026-09-25
---
# Cómo instalar OSSEC HIDS en Ubuntu 24.04
OSSEC es un sistema de detección de intrusiones basado en host (HIDS) de código abierto. Analiza los logs del sistema en tiempo real, vigila cambios en archivos críticos, busca rootkits y puede bloquear automáticamente direcciones IP que atacan el servidor. En este tutorial compilarás e instalarás OSSEC en Ubuntu 24.04 en modo local, comprobarás que detecta intentos de acceso por SSH y cambios en `/etc`, y verás cómo añadir otros servidores como agentes.
## Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM.
- Un usuario no root con privilegios `sudo`.
- Opcional: un servidor SMTP (o relay) si quieres recibir alertas por correo.
- Opcional: otros servidores Linux que quieras monitorizar como agentes.
> Nota: OSSEC sigue publicando versiones, pero su desarrollo es lento. Wazuh es un fork de OSSEC con mantenimiento más activo e interfaz web propia. Los conceptos de esta guía (reglas, decodificadores, syscheck, respuesta activa) se aplican a ambos.
## Paso 1: Instalar las dependencias de compilación
OSSEC no está en los repositorios de Ubuntu, así que se compila desde el código fuente. Instala el compilador y las bibliotecas que necesita:
```bash
sudo apt update
sudo apt install build-essential make zlib1g-dev libpcre2-dev libevent-dev libssl-dev libsystemd-dev wget
```
## Paso 2: Descargar el código fuente
Consulta la última versión estable en la página de versiones del proyecto, `https://github.com/ossec/ossec-hids/releases`. Esta guía usa la 3.8.0; cambia el número si hay una más reciente:
```bash
cd ~
wget https://github.com/ossec/ossec-hids/archive/3.8.0.tar.gz -O ossec-hids-3.8.0.tar.gz
tar -xzf ossec-hids-3.8.0.tar.gz
cd ossec-hids-3.8.0
```
Comprueba que tienes el instalador:
```bash
ls install.sh
```
```output
install.sh
```
## Paso 3: Ejecutar el instalador
El script `install.sh` es interactivo: compila OSSEC, crea los usuarios del sistema y genera la configuración inicial en `/var/ossec`. Ejecútalo como root:
```bash
sudo ./install.sh
```
Responde a las preguntas así:
| Pregunta | Respuesta recomendada |
|---|---|
| Idioma | `es` o `en` |
| Tipo de instalación | `local` (un solo servidor) o `server` (si vas a añadir agentes) |
| Directorio de instalación | `/var/ossec` (valor por defecto) |
| Notificación por correo | `y` con tu dirección y servidor SMTP, o `n` |
| Integrity check daemon (syscheck) | `y` |
| Rootkit detection (rootcheck) | `y` |
| Active response | `y` |
| Firewall-drop response | `y` |
| Lista blanca | Añade la IP desde la que administras el servidor |
La compilación tarda unos minutos. Al terminar verás un resumen parecido a este:
```output
- Configuration finished properly.
- To start OSSEC HIDS:
/var/ossec/bin/ossec-control start
- To stop OSSEC HIDS:
/var/ossec/bin/ossec-control stop
- The configuration can be viewed or modified at /var/ossec/etc/ossec.conf
```
> Importante: Añade siempre tu IP de administración a la lista blanca. Si no lo haces y te equivocas varias veces con la contraseña de SSH, la respuesta activa puede bloquearte el acceso al servidor.
## Paso 4: Arrancar OSSEC y comprobar su estado
Inicia los procesos de OSSEC:
```bash
sudo /var/ossec/bin/ossec-control start
```
Comprueba que todos los demonios están en marcha:
```bash
sudo /var/ossec/bin/ossec-control status
```
```output
ossec-monitord is running...
ossec-logcollector is running...
ossec-syscheckd is running...
ossec-analysisd is running...
ossec-maild is running...
ossec-execd is running...
```
El instalador también registra OSSEC para que arranque con el sistema. El log interno del propio OSSEC, útil para detectar errores de configuración, está en `/var/ossec/logs/ossec.log`:
```bash
sudo tail -n 20 /var/ossec/logs/ossec.log
```
## Paso 5: Revisar la configuración principal
Toda la configuración está en `/var/ossec/etc/ossec.conf`, un archivo XML. Ábrelo para revisar las secciones clave:
```bash
sudo nano /var/ossec/etc/ossec.conf
```
La sección `global` controla el correo y la lista blanca:
```xml
yes
admin@your_domain
127.0.0.1
ossec@your_domain
127.0.0.1
your_admin_ip
```
La sección `alerts` define desde qué nivel se registran y se envían alertas. Los niveles van de 0 a 15; con `7` recibirás por correo solo lo relevante:
```xml
1
7
```
Las secciones `localfile` indican qué logs se analizan. En Ubuntu 24.04 los accesos por SSH y el uso de `sudo` quedan en `/var/log/auth.log`, que ya viene incluido:
```xml
syslog
/var/log/auth.log
```
Si instalas Nginx, por ejemplo, añade su log de acceso con el formato adecuado:
```xml
apache
/var/log/nginx/access.log
```
Tras cualquier cambio en `ossec.conf`, reinicia OSSEC:
```bash
sudo /var/ossec/bin/ossec-control restart
```
## Paso 6: Comprobar la detección de ataques por SSH
Las alertas se escriben en `/var/ossec/logs/alerts/alerts.log`. Déjalo abierto en una terminal:
```bash
sudo tail -f /var/ossec/logs/alerts/alerts.log
```
Desde **otro equipo** (no desde tu IP de la lista blanca si quieres ver también la respuesta activa), intenta entrar con un usuario que no existe:
```bash
ssh usuario_inexistente@your_server_ip
```
En pocos segundos aparecerá una alerta como esta:
```output
** Alert 1790330400.1234: - syslog,sshd,invalid_login,authentication_failed,
2026 Sep 25 10:00:00 web01->/var/log/auth.log
Rule: 5710 (level 5) -> 'Attempt to login using a non-existent user'
Src IP: 198.51.100.77
Invalid user usuario_inexistente from 198.51.100.77 port 50412
```
Si repites el intento varias veces, OSSEC eleva el nivel con la regla de fuerza bruta y, si la respuesta activa está habilitada, bloquea la IP de origen. Las acciones de respuesta activa quedan registradas en:
```bash
sudo tail /var/ossec/logs/active-responses.log
```
## Paso 7: Configurar la integridad de archivos (syscheck)
Syscheck calcula sumas de verificación de los archivos que le indiques y avisa cuando cambian. Busca la sección `syscheck` en `ossec.conf` y ajústala:
```xml
43200
yes
/etc
/usr/bin,/usr/sbin,/bin,/sbin
/etc/mtab
/etc/hosts.deny
/etc/adjtime
```
- `frequency`: segundos entre escaneos completos (aquí, cada 12 horas).
- `realtime="yes"`: usa inotify para detectar cambios en `/etc` al momento, sin esperar al siguiente escaneo.
- `ignore`: archivos que cambian a menudo de forma legítima y solo generarían ruido.
Reinicia OSSEC y espera a que termine el primer escaneo, que sirve como referencia:
```bash
sudo /var/ossec/bin/ossec-control restart
sudo grep -i "syscheck scan" /var/ossec/logs/ossec.log | tail -n 2
```
```output
2026/09/25 10:05:12 ossec-syscheckd: INFO: Starting syscheck scan (forwarding database).
2026/09/25 10:07:40 ossec-syscheckd: INFO: Ending syscheck scan (forwarding database).
```
Ahora modifica un archivo vigilado para comprobar la detección:
```bash
echo "# prueba ossec" | sudo tee -a /etc/motd
```
En `alerts.log` aparecerá una alerta de la regla 550 (`Integrity checksum changed`) con el archivo modificado y las sumas anteriores y nuevas. Deshaz el cambio de prueba con `sudo nano /etc/motd`.
## Paso 8: Ajustar la respuesta activa
La respuesta activa ejecuta un script cuando una alerta alcanza cierto nivel. La configuración que crea el instalador es similar a esta:
```xml
firewall-drop
local
6
600
```
- `firewall-drop` bloquea la IP de origen con iptables.
- `level` es el nivel mínimo de la alerta que lo dispara.
- `timeout` es el tiempo en segundos que dura el bloqueo; después se levanta solo.
Si detectas bloqueos indeseados, sube `level` o limita la respuesta a reglas concretas con `5712,5720` en lugar de ``. Recuerda reiniciar OSSEC tras cada cambio.
## Paso 9: Añadir reglas propias
No edites las reglas de `/var/ossec/rules/` que trae OSSEC, porque se sobrescriben al actualizar. Las reglas propias van en `local_rules.xml`, con identificadores a partir de 100000:
```bash
sudo nano /var/ossec/rules/local_rules.xml
```
Este ejemplo eleva a nivel 10 (y por tanto envía correo) cualquier uso de `sudo` para ejecutar `su`:
```xml
5402
COMMAND=/usr/bin/su
Uso de sudo para abrir una shell con su
```
Antes de reiniciar, prueba la regla con `ossec-logtest`, que procesa líneas de log sin afectar al servicio:
```bash
sudo /var/ossec/bin/ossec-logtest
```
Pega una línea de ejemplo y pulsa Intro:
```text
Sep 25 10:10:00 web01 sudo: marc : TTY=pts/0 ; PWD=/home/marc ; USER=root ; COMMAND=/usr/bin/su
```
La salida debe terminar indicando que la regla 100010 ha coincidido:
```output
**Phase 3: Completed filtering (rules).
Rule id: '100010'
Level: '10'
Description: 'Uso de sudo para abrir una shell con su'
**Alert to be generated.
```
Sal con `Ctrl+C` y reinicia OSSEC para cargar la regla.
## Paso 10: Añadir agentes (instalación servidor)
Si instalaste OSSEC en modo `server`, puedes monitorizar otros servidores desde él. Los agentes se comunican con el servidor por UDP 1514, así que ábrelo solo para tus agentes:
```bash
sudo ufw allow from agent_ip to any port 1514 proto udp
```
En el servidor, registra el agente con `manage_agents`:
```bash
sudo /var/ossec/bin/manage_agents
```
Elige `A` para añadir un agente (nombre e IP) y después `E` para extraer su clave. Copia la clave que muestra.
En el servidor que será agente, repite los pasos 1 a 3 eligiendo `agent` como tipo de instalación e indicando la IP del servidor OSSEC. Después importa la clave:
```bash
sudo /var/ossec/bin/manage_agents
```
Elige `I`, pega la clave y confirma. Arranca el agente con `sudo /var/ossec/bin/ossec-control start` y, de vuelta en el servidor, comprueba que aparece conectado:
```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: web02, IP: 203.0.113.25, Active
```
Las alertas de todos los agentes se centralizan en el `alerts.log` del servidor.
## Solución de problemas
**Un demonio no arranca.** Revisa `/var/ossec/logs/ossec.log`. La causa más habitual es un error de sintaxis XML en `ossec.conf` o `local_rules.xml`; el log indica el archivo y la línea.
**No llegan correos.** Comprueba que `ossec-maild` está en marcha, que el `smtp_server` acepta conexiones sin autenticación desde el servidor (OSSEC no soporta autenticación SMTP) y que las alertas alcanzan `email_alert_level`. Lo habitual es usar un relay local como Postfix.
**El agente aparece como `Never connected`.** Suele ser el puerto UDP 1514 cerrado, una IP mal registrada en `manage_agents` o una clave importada en otro agente. Revisa `/var/ossec/logs/ossec.log` en el agente.
**Demasiado ruido de syscheck.** Añade con `` los archivos que cambian por diseño (cachés, bases de datos) o saca esos directorios de la vigilancia.
## Conclusión
Tienes OSSEC analizando los logs del servidor, vigilando la integridad de `/etc` y los binarios del sistema y bloqueando automáticamente ataques de fuerza bruta. Como siguientes pasos, puedes añadir los logs de tus aplicaciones con nuevas secciones `localfile`, escribir reglas propias para eventos específicos de tu entorno y centralizar varios servidores con agentes.