AIDE – Integridad de archivos

AIDEAdvanced Intrusion Detection Environment“, es un sistema de detección de intrusos, que permite monitorizar la integridad de archivos y directorios, analizando si han cambiado sus características y contenido por medio de varias reglas y directivas.

 

AIDE - deteccion de intrusiones - chequeo de integridad e ficheros

 

AIDE detecta cambios en los archivos y directorios, así que permite detectar actividades no autorizadas, y cambios provocados por virus y malware. No es un sustituto de soluciones antivirus, pero ayuda a conocer si el sistema ha sido afectado.
 

En este artículo:

 

 

AIDE funciona con una base de datos, en la que guarda una instantánea (Snapshot) del estado de los archivos del sistema; así, cuando un archivo cambia, AIDE lo detecta.

 

 

Instalación de AIDE

–> Instalar en Red Hat/CentOS

yum install aide

 

–> Instalar en Debian/Ubuntu

apt install aide

 

Después de instalar AIDE, hemos de compilarlo, con:

aide -v

 

 

Fichero de configuración de AIDE

 

El fichero de configuración de AIDE es

/etc/aide.conf

 

El fichero de configuración de AIDE contiene directivas predeterminadas y permite también definir directivas específicas para ciertos ficheros y directorios.

AConfiguración de AIDE

 

Por ejemplo,

  • la regla “PERM” se usa para el control de acceso; detectará cambios en los ficheros o directorios, basándose en  los permisos, usuarios, grupos, permisos de control de acceso, Selinux y atributos de ficheros.
# Access control only.
PERMS = p+u+g+acl+selinux+xattrs

 

  • Regla “CONTENT“: Chequeo solamentede contenido de fichero y tipo de fichero:
# Content + file type.
CONTENT = sha256+ftype

 

  • La regla “CONTENT_EX” (Contenido extendido) permite el chequeo de contenido de ficheros, tipo de fichero y acceso:
# Extended content + file type + access.
CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs

 

  • La regla “DATAONLY” ayuda a detectar cualquier cambio en los datos dentro de un fichero/directorio
# Some files get updated automatically, so the inode/ctime/mtime change
# but we want to know when the data inside them changes.
DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256
 
 

AIDE - reglas

 

 

 

Usando AIDE para chequear la integridad de ficheros y directorios

 

  • Lo primero que necesitamos es inicializar la base de datos de AIDE:
aide --init

 

Al inicializar la base de datos, esta contendrá la información de todos los ficheros que se han definido en el fichero de configuración.
 

El archivo de base de datos está definido en el archivo de configuración de AIDE:

AIDE - base de datos
 

# The location of the database to be read.
database=file:@@{DBDIR}/aide.db.gz
 
# The location of the database to be written.
#database_out=sql:host:port:database:login_name:passwd:table
#database_out=file:aide.db.new
database_out=file:@@{DBDIR}/aide.db.new.gz
TE RECOMENDAMOS  Contenedores Docker
# The location of the database to be written. #database_out=sql:host:port:database:login_name:passwd:table #database_out=file:aide.db.new database_out=file:@@{DBDIR}/aide.db.new.gz

 

 

  • Después renombramos la base de datos o la movemos, para usar la nueva base de datos en futuros escaneos:
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

 

  • Después de crear la base de datos, ahora podemos chequear la integridad de ficheros y directorios:
aide --check

 
AIDE leerá la instantánea (snapshot) en la base de datos y la comparará con los ficheros y directorios del sistema. Si encuentra modificaciones no esperadas, generará un reporte.
 

En este caso hemos modificado un archivo de sistema, concretamente el archivo /etc/hosts, y al ejecutar el chequeo de AIDE vemos que nos informa de ello:
 

AIDE - filesystem changes found differences
 

 

  • Después de realizar modificaciones en ficheros es necesario ejecutar un update de la base de datos de AIDE, para que AIDE tenga en cuenta las últimas modificaciones realizadas en ficheros :

aide –update

* Tras una actualización de la base de datos, para usar la nueva base de datos para futuros escaneos, la renombraremos:

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

 

 

Configurar AIDE para crear y enviar reportes diarios

 

El fichero de log de aide es

/var/log/aide/aide.log

 

–> Vamos a configurar AIDE para realizar un reporte diario, que creará el reporte todos los días a las 01:00 am, y lo guardará con la fecha y hora, dentro del directorio /tmp/aide.

Crearemos una tarea cron (crontab) con el siguiente contenido:

 1 * * * nice -19 /usr/sbin/aide --config=/etc/aide.conf >> /tmp/aide/"$(date +"%Y_%m_%d_%I_%M_%p").log"

 

 
–> Si lo que queremos es enviar el informe por email (presuponiendo que tenemos correctamente configurado un servidor de correo, en este caso usando mail ), configuraremos este crontab, que primero ejecutará AIDE y enviará el resultado por mail a tu buzón de correo, y después realizará el renombrado de la base de datos.

 1 * * * nice -19 /usr/local/bin/aide --config=/etc/aide.conf -C| mail tu@correo-s asunto
 
02 1 * * * mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

 

 
–> O este otro cron, que realizará una update en AIDE, enviará el mail con el reporte, y después realizará el renombrado de la base de datos:

 1 * * * nice -19 /usr/sbin/aide --update | /bin/mail -s "AIDE reporte diario" yo@mail
02 1 * * * mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz