SecNot

ene 22, 2014

Detección de intrusos con AIDE

AIDE (Advanced Intrusion Detection Environment) es un programa de detección de intrusos, en especifico un monitor de integridad de archivos. Cuando un intruso consigue acceso a un sistema, una sus primera acciones será modificar los logs del sistema, y/o modificar algún programa para mantener el control, y ocultar su presencia. Por ejemplo puede sustituir el programa ps para que no liste determinados procesos, añadir el bit SUID a una copia del shell, o instalar algún rootkit.

Detectar esto es prácticamente imposible manualmente, AIDE en cambio nos permite hacerlo de forma rápida y sencilla, haciendo imposible cualquier manipulación de los archivo o directorios monitorizados.

Instalación

La instalación es sencilla la única dependencia del paquete, es un servidor de correo para poder enviar los informes y alertas al root, o a la dirección especificada, asegurate de que esta funcionando correctamente, antes de continuar con la configuración.

sudo apt-get install aide

Configuración

Antes de modificar la configuración por defecto de aide, vamos a comprobar que funciona correctamente, para ello generamos la primera base de datos. Este proceso puede ser muy lento dependiendo del ordenador, y del numero de archivos a monitorizar.

sudo aideinit

Una vez generada, la copiamos para instalarla:

sudo cp /var/lib/aide.db.new /var/lib/aide.db

Ahora podemos modificar la configuración para incluir cualquier directorio que necesitemos monitorizar, o eliminar algún directorio en el que no estemos interesados. Los archivos de configuración de AIDE en Debian/Ubuntu, son /etc/aide/aide.conf y el directorio /etc/aide/aide.conf.d/ , estos no son usados directamente por AIDE, sino que el script update-aide.config recopila toda la información y, crea el archivo final /var/lib/aide/config.autogenerated.

Para añadir nuestros directorios a la configuración, tenemos que crear un archivo en el directorio /etc/aide/aide.conf.d

sudo touch /etc/aide/aide.conf.d/60_aide_custom
sudo chmod 644 /etc/aide/aide.conf.d/60_aide_custom

El número al inicio indica el orden en el que el archivo es cargado, hay que asegurarse de que el numero de nuestro archivo es el mayor del directorio, de esta manera nuestra configuración sea la última en cargar y no tengamos conflictos.

Cada archivo contiene la lista de directorios y archivos que tienen que ser monitorizados por AIDE, por ejemplo los archivos de configuración de una aplicación, el directorio de contenidos estáticos de una pagina web, o el directorio donde se guardan los backups, etc. Tras cada una de esas rutas, se añade la lista de aspectos que tiene que ser monitorizados, usando el mismo formato definido en el manual de AIDE

En el siguiente ejemplo se pueden ver algunas de las posibilidades que ofrece AIDE, otra buena fuente son los archivos de configuración en /etc/aide/aide.conf.d/

# Parametros que pueden ser comprobados
#
# p:      permissions
# ftype:  file type
# i:      inode
# n:      number of links
# l:      link name
# u:      user
# g:      group
# s:      size
# b:      block count
# m:      mtime
# a:      atime
# c:      ctime
# S:      check for growing size
# I:      ignore changed filename
# md5:    md5 checksum
# sha1:   sha1 checksum
# sha256: sha256 checksum
# sha512: sha512 checksum
# rmd160: rmd160 checksum
# tiger:  tiger checksum
# haval:  haval checksum
# crc32:  crc32 checksum
# R:      p+ftupe+i+l+n+u+g+s+m+c+md5
# L:      p+ftype+i+l+n+u+g
# E:      Empty group
# >:      Growing logfile p+ftype+l+u+g+i+n+S
# The following are available if you have mhash support enabled:
# gost:   gost checksum
# whirlpool: whirlpool checksum
# The following are available and added to the default groups R, L and >
# only when explicitly enabled using configure:
# acl:    access control list
# selinux SELinux security context
# xattrs:  extended file attributes
# e2fsattrs: file attributes on a second extended file system

# Creamos nuestras reglas.
MinimalCheck = p+i+u+g
FullCheck = p+i+n+u+g+s+b+c+sha256

# Directorios a monitorizar
/home/secnot/private/website MinimalCheck
/home/secnot/chroot FullCheck

# Archivo a monitorizar
# a diferencia de los directorios los archivos son terminados en '$'
# antes de '.' hace falta un caracter de escape '\'
/home/secnot/mi_aplicacion\.conf$       FullCheck

# Usar las reglas no es necesario pero es más legible
/etc/mi_otra_aplicacion\.conf$          p+i+g+d

# Podemos usar las reglas definidas en /etc/aide/aide.conf,
# como en los otros archivos de configuración
/home/webuser/webapp    VarLog

# Forzamos que se ignore un archivo o varios
!/etc/app\.conf$
!/var/log/.*

Por último solo nos queda editar /etc/default/aide, en el cual podemos definir donde deseamos que lleguen los informes generados periódicamente (por defecto root), junto algunas opciones más sobre los mismos.

Uso

Cada vez que realicemos alguna modificación, instalemos, o eliminemos algún programa, generamos una nueva base de datos, a partir de ese momento cada vez que se ejecute AIDE se comprobará que nada ha sido alterado con respecto al estado almacenado en la base de datos.

sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Como medida de seguridad adicional, es recomendable calcular un hash de la base de datos, para poder comprobar manualmente que no ha sido modificada por un atacante. Guarda una copia del hash en un lugar seguro.

sha256sum /var/lib/aide/aide.db

AIDE es ejecutado automáticamente todos los días por cron, a través de un script en /etc/cron.daily/, este ejecuta update-aide.config para generar un archivo de configuración actualizado, y después llama aide. Una vez la comprobación ha terminado, almacena la información en los archivos de log /var/log/aide/aide.log y de errores /var/log/aide/error.log, por último envía un informe a la dirección de correo configurada si es que una existe.

Si queremos comprobar si ha habido alguna modificación manualmente, primero es recomendable comprobar que la base de datos no ha sido modificada usando sha256sum, después podemos ejecutar el script:

sudo /usr/bin/aide.wrapper

O podemos generar manualmente el archivo de configuración, y después ejecutar aide.

sudo update-aide.config
sudo aide -c /var/lib/aide/aide.conf.autogenerated --check