Detectar automáticamente cambios de ficheros en el servidor mediante AIDE

En esta entrada veremos un pequeño tutorial para detectar las modificaciones en los ficheros de un sistema Linux mediante AIDE.

AIDE (Advanced Intrusion Detection Environment) es un comprobador de integridad de ficheros y directorios para Unix y Linux. Digamos que es la versión GNU de Tripwire y básicamente lo que hace es crear una base de datos con un listado de ficheros a partir de reglas de expresiones regulares. Tiene varios algoritmos de digest y también puede utilizar todos los atributos de archivo habituales para buscar incoherencias.

AIDE está incluido en las siguientes distribuciones, utiliza el comando correspondiente para instalarlo:
  • Debian GNU/Linux | Ubuntu: apt-get install aide or aptitude install aide
  • Gentoo: emerge aide
  • MacPorts: port install aide
  • FreeBSD: pkg_add -r aide
  • Red Hat | CentOS | Fedora: yum install aide
  • openSUSE: zypper install aide
  • IPCop: see here for installation guidelines
Lo primero que haremos será inicializar y mover la base de datos:
root@mininet-vm:~# aideinit
Running aide --init... AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new initialized.

root@mininet-vm:~# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/db.gz

Después chequearemos con AIDE si ha habido alguna actualización. Se mostrarán todas las modificaciones:

root@pc1242:~# cd /var/lib/aide/
root@pc1242:/var/lib/aide# aide --check -c aide.conf.autogenerated

AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2014-05-09 06:05:01

etc..


Si son cambios legítimos ejecutaremos un update:

root@pc1242:/var/lib/aide# aide --update

Y luego tendremos que copiar la nueva base de datos a la original:

root@pc1242:/var/lib/aide# cp aide.db.new.gz aide.db.gz

Cada vez que tengamos que comprobar si ha habido algún cambio tendremos que repetir manualmente este proceso.

En el caso de que queramos automatizarlo podemos generar un script que se lance cada X horas y que nos avise si ha habido ningún cambio ("added|changed") o no ("Looks okay"):
#!/bin/bash
/usr/bin/aide --check -c /etc/aide/aide.conf > /tmp/aide
logfile=/tmp/aide
x=$(grep "Looks okay" $logfile | wc -l)
if [ $x -eq 1 ]
then
echo "All Systems Look OK" | /bin/mail -s "AIDE OK" your_email
else
echo "$(egrep "added|changed" /tmp/aide)" | /bin/mail -s "AIDE PROBLEM" your_email

fi
exit

Fuente: Automatically Detect File Changes on Your Server
Proyecto: http://aide.sourceforge.net/

Comentarios