AIDE (Advanced Intrusion Detection Environment) es, como su nombre indica un sistema avanzado de detección de intrusiones a nivel de sistema operativo. Es muy sencillo de instalar y con una configuración estándar puede funcionar realmente bien.
El funcionamiento consiste en que se crea una base de datos basada en la configuración especificada en el fichero de configuración, una vez inicializada permite ser utilizada para verificar la integridad de los ficheros del sistema y muchas otras cosas como atributos de ficheros (tipo de fichero, permisos, nº de inodo, uid, gid, tamaño, bloques, mtime, ctime, atime…), Posix ACL, SELinux, XAttrs…
AIDE se ofrece precompilado en paquete para la mayoría de distribuciones por lo que la instalación es sencilla:
Debian, Ubuntu, etc:
# apt-get install aide
# aptitude install aide
FreeBSD:
# pkg_add -r aide
Red Hat, CentOS, Fedora, Scientific Linux:
# yum install aide
Una vez instalado debemos familiarizarnos con el fichero de configuración, en el caso de Red Hat se encuentra en /etc/aide.conf, probablemente será igual en el resto de distribuciones. También podemos revisar la página man (man /etc/aide.conf) para tener más idea de todas las posibilidades y personalización.
Como os decía, la instalación base nos permite funcionar sin problemas, lo primer que hay que hacer es generar una nueva base de datos, por defecto es un fichero comprimido pero veréis en el fichero de configuración que hay más opciones:
# /usr/sbin/aide --init
Una vez terminado tendremos la nueva base de datos en /var/lib/aide/aide.db.new.gz, para evitar sobreescribir la de producción se almacena ahí, luego la copiamos o movemos a la definitiva:
# cp -p /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
En la configuración se define así:
# The location of the database to be read. database=file:@@{DBDIR}/aide.db.gz # The location of the database to be written. database_out=file:@@{DBDIR}/aide.db.new.gz
Una vez generada la base de datos ya podemos ejecutar un chequeo del sistema, no debería haber ningún problema ya que acabamos de generar la base de datos y es muy difícil tener algo distinto en pocos segundos:
# /usr/sbin/aide --check
El resultado que todos esperamos es el siguiente, todo correcto:
AIDE, version 0.14 ### All files match AIDE database. Looks okay!
Este mismo chequeo es el que podríamos configurar periódicamente vía cron:
# crontab -e -u root 0 5 * * * /usr/sbin/aide --check
En el momento que se generara un problema veríamos en el informe algo así (también se guarda en /var/log/aide/aide.log). Por ejemplo he modificado el fichero /etc/passwd para que saltara en el escaneo:
AIDE found differences between database and filesystem!! Start timestamp: 2012-08-10 09:58:03 Summary: Total number of files: 31858 Added files: 0 Removed files: 0 Changed files: 1 --------------------------------------------------- Changed files: --------------------------------------------------- changed: /etc/passwd -------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /etc/passwd Mtime : 2012-08-06 12:11:53 , 2012-08-10 09:58:01 Ctime : 2012-08-06 12:11:53 , 2012-08-10 09:58:01 Inode : 22457 , 22487
Hay que tener en cuenta que cuando tenemos un problema como este, mientras no actualicemos la base de datos de aide seguirá «cantando«. Una vez solucionado o revisado hay que generar un nuevo «snapshot» del estado del sistema para empezar de 0:
# /usr/sbin/aide --update
Os recomiendo revisar el manual si os resulta interesante para estar al tanto de todo lo que pasa en vuestros sistemas.