AIDE: cómo detectar cambios no autorizados en los archivos de tu servidor Linux
Un firewall bien configurado y Fail2ban activo reducen las probabilidades de que alguien entre en tu servidor, pero no responden a la pregunta que de verdad importa después de un incidente: ¿ha modificado alguien un archivo del sistema sin que yo lo sepa? Para eso existe la monitorización de integridad de archivos, y dentro de una estrategia de hardening de VPS completa es una capa que rara vez se implementa por desconocimiento, no por complejidad.
En este artículo instalamos y configuramos AIDE (Advanced Intrusion Detection Environment), una herramienta clásica y ligera que crea una "fotografía" criptográfica de tu sistema de archivos y te avisa en cuanto algo cambia.
1. ¿Qué problema resuelve AIDE?
Un atacante que consigue acceso a tu servidor casi siempre modifica algo: sustituye un binario del sistema por una versión troyanizada, añade una clave SSH a authorized_keys, inserta una tarea en cron o instala una puerta trasera en un script de arranque.
AIDE construye una base de datos con los hashes (MD5, SHA256...), permisos, propietario y tamaño de los archivos que le indiques. Cada vez que la ejecutas de nuevo, compara el estado actual contra esa base de datos y te reporta cualquier diferencia: archivo añadido, borrado o modificado.
2. Instalación
En sistemas basados en Debian/Ubuntu:
sudo apt update
sudo apt install aide aide-common
3. Configurar qué directorios vigilar
La configuración vive en /etc/aide/aide.conf (y en /etc/aide/aide.conf.d/ en Debian/Ubuntu, que fragmenta las reglas por paquete). Cada línea define una ruta y una regla de comprobación:
# Vigilancia estricta: permisos, propietario, tamaño y hash
/etc NORMAL
/bin NORMAL
/sbin NORMAL
/usr/bin NORMAL
# Directorios muy cambiantes: solo vigilar existencia, no contenido
/var/log LOG
Es buena práctica excluir explícitamente rutas que cambian constantemente y generan ruido (logs rotados, cachés de paquetes, /tmp):
!/var/log/journal
!/var/cache/apt
!/tmp
4. Generar la base de datos inicial
Este paso debe hacerse justo después de instalar y asegurar el servidor, nunca después, para que la fotografía de referencia represente un sistema limpio:
sudo aideinit
En algunas distribuciones el binario se llama aide directamente:
sudo aide --init
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
5. Ejecutar una comprobación manual
Para comparar el estado actual del sistema contra la base de datos guardada:
sudo aide --check
La salida indica claramente los archivos añadidos, eliminados o modificados, junto con qué atributo cambió (permisos, hash, tamaño...).
6. Automatizar la comprobación diaria
De nada sirve tener AIDE instalado si nadie revisa el resultado. Añade una tarea programada que ejecute la comprobación y te avise por correo:
sudo crontab -e
0 5 * * * /usr/bin/aide --check | mail -s "Informe AIDE $(hostname)" tu@email.com
Tras cada cambio legítimo en el servidor (una actualización del sistema, una nueva app desplegada), recuerda regenerar la base de datos con aideinit; de lo contrario recibirás falsos positivos a diario y acabarás ignorando las alertas.
7. La limitación real de AIDE
AIDE solo es tan fiable como su base de datos de referencia. Si un atacante compromete el servidor y también modifica /var/lib/aide/aide.db, el chequeo dejará de ser fiable. Por eso la base de datos debería copiarse a una ubicación de solo lectura o a un sistema externo tras generarla.
8. Correlaciona estas alertas con SecuryBlack
Un correo de AIDE a las 5 de la mañana es fácil de pasar por alto si gestionas varios servidores. Con el panel cloud de SecuryBlack y el agente FerroSentry, la integridad de archivos, los puertos abiertos y la configuración SSH se auditan de forma continua y las alertas relevantes llegan centralizadas, sin depender de que revises manualmente el buzón de cada VPS.