19 nov 2013

AIDE: Sistema de detección de intrusos

AIDE es un sistema de detección de intrusos basado en host, HIDS. Pero, ¿qué es eso? Pues es una herramienta que no nos va a permitir evitar una intrusión, pero sí nos puede informar de que ésta se ha producido y qué archivos fueron modificados.
Una de las cosas más probables que haga un intruso sea intentar modificar ciertos binarios del sistema para que no nos demos cuenta de que está ahí.
Esta herramienta lo que hace es crear una base de datos con los archivos que especifiquemos en su archivo de configuración, con los atributos correspondientes, como usario, grupo, permisos, atime, ctime, i-nodo, etc. Esta información se guarda aplicando una o varias funciones hash.
De esta forma, aunque se intente cubrir huellas, la suma de verificación obtenida de la función hash, nos permitirá conocer qué archivos han sido alterados.
Para poder conseguir esto, hay que tener en cuenta que, lo más conveniente, es hacer la primera base de datos con el sistema recién instalado. Además de esto, es interesante hacer también copias de seguridad de la base de datos y almacenarlas fuera del equipo en cuestión. Esto es por una razón sencilla: La base de datos se encuentra en el sistema de archivos y, si el intruso puede modificar los binarios del sistema, podría modificarla.
Aún así, es interesante que lo tengamos corriendo en nuestros servers, y complementemos con otras herramientas de detección de rootkits:
chkrootkit y rkhunter: Estas herramientas nos permiten detectar rootkits en el sistema, además de realizar un informe de posibles vulnerabilidades, como, por ejemplo, binarios con SUID activado.
AIDE se encuentra disponible en la mayor parte de distribuciones. Pasemos a ver cómo instalarlo en Arch Linux:
# pacman -S aide
Una vez instalado, podemos revisar el /etc/aide.conf. La configuración que viene por defecto está muy bien, aunque es conveniente revisar por si tenemos que hacer alguna adaptación a nuestro sistema, por ejemplo, que utilicemos el /usr/local/bin para las aplicaciones que instalemos desde las fuentes.
Una vez instalado, vamos a crear la base de datos:
aide -i
Después de crear la base de datos, podremos actualizarla con:
aide -u
Para la utilización de AIDE, se suele programar la ejecución periódica del mismo con script para CRON. De esta forma, establecemos la periocidad con la que se actualizará la base de datos y podremos recibir notificaciones. Un script de ejemplo, que podemos encontrar en la Wiki de Arch Linux es:

#!/bin/bash -e# these should be the same as what's defined in /etc/aide.confdatabase=/var/lib/aide/aide.db.gzdatabase_out=/var/lib/aide/aide.db.new.gzif [ ! -f "$database" ]; then echo "$database not found" >&2 exit 1fiaide -u || truemv $database $database.backmv $database_out $database

En este script, en el caso de que tengamos CRON configurado para que las salidas se envíen por email, nos avisará al actualizar si hay algo extraño.
Aunque no es necesario disponer de un servidor de correo eléctronico, sí que debemos tener la posibilidad de envío, aunque sea local. Con instalar EXIM, tendremos esta funcionalidad, sin necesidad de desplegar un servicio de correo. Otra opción es utilizar msmtp para que nos envíe los emails mediante una cuenta de correo externa, por ejemplo, con gmail. Algunas distribuciones instalan EXIM por defecto para poder disponer de mensajería local. En Arch Linux esto no es así, por lo que deberemos instalarlo:
pacman -S exim
En el caso de servidores, dispondrán seguramente de un servidor de correo, en el caso de otros equipos, no. Es importante que nos aseguremos de disponer de esta funcionalidad, al igual que, aunque nuestro equipo sea doméstico, es interesante utilizar este tipo de herramientas para detectar posibles intrusiones.
Una vez instalado, editamos el archivo /etc/mail/exim y comentamos la línea donde se prohíbe el envío de correos al usuario root:
# never_users = root
Editamos el archivo /etc/mail/aliases y definimos un alias para el usuario root. Para ello, nos dirigimos al final del archivo, y especificamos el alias:
# Person who should get root's mailroot: mary
Con esto será suficiente para disponer de mensajería local en el equipo.
Nos aseguramos de que cronie está instalado y que el servicio se está ejecutando:
pacman -S croniesystemctl enable croniesystemctl restart cronie
Para establecer una periocidad diaria, por ejemplo, creamos el archivo /etc/cron.daily/aide.sh, con el contenido del script anterior y le damos permisos de ejecución:
chmod u+x /etc/cron.daily/aide.sh
Debemos asegurarnos que la base de datos tiene el nombre correcto, porque este script no la crea, tan solo actualiza los datos y, si no existe la base de datos original, generará un error. Debemos generarla primero, que lo hará con el nombre /var/lib/aide/aide.db.new.gz. Hay que cambiar el nombre a /var/lib/aide/aide.db.gz:
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
En Debian y derivadas, la configuración requiere menos pasos, pues ya está creado un script para CRON y, por defecto, suelen instalar EXIM para disponer de mensajería local. Para instalarlo, bastará ejecutar:
sudo apt-get install aide
En esta distribución, los archivos de configuración que contienen las reglas con las que se generará la base de datos, se encuentran en /etc/aide/aide.conf.d/ y /etc/aide/aide.conf. En el archivo /etc/default/aide, establecemos opciones de configuración por defecto, como es a quién van dirigido el correo que genera, si queremos que la base de datos nueva sobreescriba la antigua, etc.
Una vez instalado, debemos inicializar la base de datos:
sudo aideinit
Con esto, ya disponemos de nuestro sistema de detección de intrusos, pero disponemos de otras alternativas:
Tripwire: Es muy similar a AIDE, incluso en la sintaxis del archivo de configuración.
Samhain: Ofrece características simalers y algunas funciones para la detección de rootkits. Puede ser desplegado en una red y guardar los logs en un servidor central.
Artículo cortesía de: María José Montes Diaz
@MMontesDiaz

2 comentarios: