El control de integridad responde a una pregunta que ni un antivirus ni un cortafuegos responden: ¿qué ha cambiado en este servidor desde la semana pasada? Un analizador por firmas busca lo malicioso conocido; AIDE no sabe nada de malicia, sabe que este archivo ayer era distinto. Para detectar una puerta trasera añadida a un archivo existente, es el único enfoque que funciona.
AIDE se instala con dos comandos. Configurarlo para que sus informes se lean es la parte difícil, y eso es justamente lo que suele matarlo: el primer informe llega con diez mil líneas, nadie abre el segundo, y un mes después la tarea se borra.
Instalación y primera base
sudo apt install aide aide-common
sudo aideinit
La inicialización lleva de unos minutos a media hora: se calculan las huellas de todos los archivos. El resultado se deja junto a la base de trabajo con el sufijo .new y hay que ponerlo en servicio:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
A partir de ahí, una comprobación se lanza así:
sudo aide --check
Qué excluir para que el informe siga siendo legible
Los ajustes están en /etc/aide/aide.conf y en el directorio /etc/aide/aide.conf.d/. La configuración de Debian que viene de fábrica comprueba demasiado, y lo primero que hay que hacer es quitar lo que cambia solo constantemente:
/var/log: cambia cada segundo;/var/libentero: bases de datos, estado de paquetes, estado de servicios;/var/cache,/tmp,/proc,/sys,/run;- los directorios de subidas y caché del sitio: su contenido lo cambian los visitantes.
Lo que sí merece comprobarse con los ajustes más estrictos es una lista corta:
/bin,/sbin,/usr/bin,/usr/sbin: los ejecutables del sistema;/lib,/usr/lib: las bibliotecas;/etc: la configuración;/root/.sshy los directorios.sshde sus usuarios;- el código del sitio, pero sin los directorios de subidas y caché.
La referencia: un informe diario corriente debe caber en una pantalla. Si es más largo, las exclusiones son insuficientes y se dejará de leer.
Dónde guardar la base
Un punto esencial que a menudo se pasa por alto. Si alguien ajeno tiene root, sustituir un archivo y actualizar acto seguido la base de AIDE no le cuesta nada, y la comprobación posterior informará de que todo está en orden. Una base que está en la misma máquina y con permiso de escritura solo protege de accidentes.
Un mínimo razonable para un servidor único:
- copiar la base a otra máquina tras cada actualización y ejecutar la comprobación colocando esa copia;
- o al menos guardar aparte la suma de verificación de la base y contrastarla antes de comprobar:
sha256sum /var/lib/aide/aide.db
Incluso una medida tan simple convierte una sustitución silenciosa en un acontecimiento visible.
Actualizar la base es un acto deliberado
Tras cambios legítimos —una actualización del sistema, una versión nueva del sitio— la base se reconstruye:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
El momento importa. Correcto: leer el informe, asegurarse de que cada cambio se explica y solo entonces actualizar. Incorrecto y muy extendido: ejecutar aide --update de forma programada para que los informes salgan limpios. En el segundo caso el sistema funciona, los informes llegan, y los cambios quedan registrados como normales justo en el momento en que se producen: el sentido se pierde por completo.
Programación y carga
El paquete aide-common instala por su cuenta una tarea diaria. La comprobación carga el disco y el procesador durante unos minutos, así que conviene ejecutarla a una hora tranquila y con prioridad rebajada:
0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check
Cómo leer el informe
Tres secciones: archivos añadidos, eliminados y modificados. Para cada cambio se indica qué difiere exactamente: contenido, permisos, propietario, fecha.
A qué reaccionar primero:
- un cambio en cualquier archivo de
/bin,/sbin,/usr/binfuera de una ventana de actualización; - archivos nuevos en directorios del sistema;
- cambios en
authorized_keys,/etc/passwd,/etc/sudoers,/etc/crontaby/etc/cron.d; - la aparición de un archivo
/etc/ld.so.preload: no aparece nunca por su cuenta.
Cien archivos modificados justo después de apt upgrade es normal, y la hora del informe lo confirma. Tres archivos modificados en /usr/bin un miércoles sin actualizaciones es motivo para detenerse y mirar.
AIDE y debsums
Las herramientas resuelven problemas vecinos, pero su referencia difiere. AIDE compara con una instantánea propia, así que ve cambios en cualquier archivo, incluido el código del sitio. debsums compara con las sumas de verificación de los paquetes de la distribución, así que ve archivos de sistema sustituidos sin ninguna preparación previa, pero no sabe nada de lo que usted instaló fuera de los paquetes. Tener ambas es razonable; en la práctica debsums suele ir primero, porque no exige ni configuración ni base.
También comparten una debilidad: el informe llega por correo, y el correo se pierde. Lo que importa, por tanto, no es que la comprobación se ejecutara, sino que exista un lugar donde su último resultado esté a la vista. Cómo se ve eso lo muestra la página de demostración de abajo.