domingo, 11 de marzo de 2018

Setup de un IDS Snort en un dispositivo ARM (III): de fichero a base de datos con Barnyard2

Leer los archivos Unified2 de Snort es algo tedioso, sobre todo por el hecho de tener un formato específico para optimizar espacio y no ser en texto plano. Por otro lado, los fichero de Snort irán siendo borrados, y nosotros querremos tener un almacenamiento de la información más persistente que simple ficheros de texto, indexada y sobre la que poder realizar busquedas. Para esto, usamos Barnyard2, una herramienta de terceros que lee de los ficheros de Snort y nos lo almacena, por ejemplo, en una base de datos MySQL.

Prerequisitos: MySQL


Para la instalación simplemente ejecutaremos el comando apt-get con el paquete mysql-server, y tras esta, securizaremos la instalación con el comando mysql_secure_instalation.

sudo apt-get install mysql-server
sudo mysql_secure_installation

Finalmente, probaremos a arrancar y parar el servicio con los comandos:

# iniciar el servicio mysql
sudo service msyql start
# parar el servicio mysql
sudo service msyql stop


Instalación de Barnyard2


Como deciamos en la introducción, usaremos la herramienta Barnyard2 para poder exportar los ficheros de logs de Snort a base de datos.

Para su instalación necesitaremos previamente instalar las siguientes librerias:

sudo apt-get install -y mysql-server libmysqlclient-dev mysql-client autoconf libtool
sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
sudo ldconfig


Una vez tenemos los prerequisistos, estaremos en disposición de proceder con su instalación:

wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-Master.tar.gz
tar zxvf barnyard2-Master.tar.gz
cd barnyard2-master
autoreconf -fvi -I ./m4
./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
make
sudo make install


Y tras la instalación probaremos si el software se ha instalado correctamente:


barnyard2 -V




El siguiente paso es la configuración de la herramienta. Para ello copiaremos el fichero de configuración de barnyard al directorio de Snort:


sudo cp ~/barnyard2-master/etc/barnyard2.conf /etc/snort/


Y crearemos los directorios y ficheros necesarios para el registro de logs en /var/log.


sudo mkdir /var/log/barnyard2
sudo chown snort.snort /var/log/barnyard2
sudo touch /var/log/snort/barnyard2.waldo
sudo chown snort.snort /var/log/snort/barnyard2.waldo


A continuación deberemos preparar la base de datos donde Barnyard2 escribirá los registros. Para ello, nos conectaremos a MySQL, crearemos una base de datos que llamaremos snort y ejecutaremos el script de creación que barnyard nos proporciona. Tras esto, crearemos un usuario y le concederemos permisos de lectura y escritura a la base de datos creada. Dicho usuario será que que usaremos en la configuración de Barnyard2.

mysql -u root -p
create database snort;
use snort;
source ~/snort_src/barnyard2-master/schemas/create_mysql
CREATE USER 'snort'@'localhost' IDENTIFIED BY ‘homeidsdbpassword’;
grant create, insert, select, delete, update on snort.* to 'snort'@'localhost';
exit


El último paso es la edición del fichero de configuración barnyard2.conf. En dicho fichero deberemos cambiaremos la linea 30 para que el fichero de configuración sid-msg.map sea sid-msg1.map:

config sid_file:            /etc/snort/sid-msg1.map


Este cambio se debe a que Barnyard2 interpreta estas reglas durante el arranque. Si el fichero contiene muchas reglas, el arranque se ralentiza mucho, llegando a tardar horas en sistemas con pocos recursos como los que estamos utilizando. Al no ser un requisito imprescindible, cambiamos este fichero por uno que siempre estará vacío, de tal forma forma que cuando PulledPork reescriba nuestro fichero sid-msg.map, el arranque de Barnyard2 no se verá afectado. Finalizamos la configuración añadiendo en la última línea del fichero el formato de la salida de barnyard2, que en nuestro caso es una base de datos MySQL con el usuario y base de datos que hemos creado en el paso anterior:


output database: log, mysql, user=snort password=homeidsdbpassword dbname=snort host=localhost sensor name=sensor01

Este fichero de configuración expone información sensible de conexión a nuestro SGBD, por lo que deberemos quitar los permisos de lectura a los usuarios no administradores.

sudo chmod o-r /etc/snort/barnyard2.conf


Para ejecutar Barnyard2 tendremos que escribir:


sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo \
-g snort -u snort