Integración de Snort con Barnyard2

Seguimos hablando del sistema IDS de detección de intrusos Snort, en este caso vemos su integración con la herramienta Barnyard2. Dicha herramienta nos permitirá interpretar los ficheros en formato unified2 y volcarlos en una base de datos en MariaDB.

Como os comenté su uso principal es permitir que Snort escriba en el disco de manera eficiente y dejando la tarea de analizar datos binarios, en varios formatos, a una proceso que no hará que Snort pierda tráfico de red.

Esta entrada es la segunda parte sobre Snort, así que podéis echar un vistazo antes de continuar.

Logo del producto Snort

Instalación de Barnyard2 en Debian 10

Antes de nada, ya que queremos integrar el producto con el motor de base de datos MariaDB, debemos instalar inicialmente dicho producto, ya os hablé de cómo hacerlo en esta entrada: Instalar la última versión de MariaDB en Debian 10

Estamos utilizando la última versión Debian, a fecha de esta entrada. Para la instalación del producto primero de todo tenemos que descargar el fichero con el código fuente, desde su página en Github:

https://github.com/firnsy/barnyard2/archive/master.zip

Una vez hecho esto descomprimimos:

# Si no tenemos instalada la herramineta zip y unzip
sudo apt install zip unzip
# Para descomprimir
unzip master.zip
# O bien utilizando git (lo debemos tener instalado)
git clone https://github.com/firnsy/barnyard2.git

Accedemos dentro de la carpeta recién creada:

cd barnyard2-master/

Usamos el comando autoreconf para actualizar los ficheros de configuración del código fuente:

autoreconf -fvi -I ./m4

Creamos los enlaces simbólicos necesarios para acceder a la librería dnet.h, que hace falta para compilar:

sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
sudo ldconfig

Ahora sí, compilamos, indicando que vamos a utilizar el motor de base de datos correspondiente:

# Previamente debemos instalar este paquete sino lo tenemos ya:
apt install libmariadb-dev
# Y ahora sí
./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
make
sudo make install

Comprobamos que se ha instalado correctamente:

davidochobits@servdebian:~/barnyard2-master$ barnyard2 -V
 
  ______   -*> Barnyard2 <*-
 / ,,_  \  Version 2.1.14 (Build 337)
 |o"  )~|  By Ian Firns (SecurixLive): http://www.securixlive.com/
 + '''' +  (C) Copyright 2008-2013 Ian Firns <firnsy@securixlive.com>

Copiamos los ficheros y carpetas que necesita para funcionar:

sudo cp etc/barnyard2.conf /etc/snort/
sudo touch /var/log/snort/barnyard2.waldo
sudo chown snort.snort /var/log/snort/barnyard2.waldo

Crear la base de datos

Ya hemos dicho que nuestra intención es guardan la información resultante en una base de datos utilizando el motor MariaDB, que ya hemos instalado. Por lo que ahora toca crearla:

mysql -u root -p

Procedemos a su creación:

CREATE DATABASE snort;
USE snort;
# En ruta de la siguiente orden debemos indicar donde esta el fichero de los esquemas
SOURCE /home/davidochobits/barnyard2-master/schemas/create_mysql
# Indicamos el usuario y la contraseña del usuario de la base de datos
CREATE USER 'snort'@'localhost' IDENTIFIED BY 'contrasea';
GRANT CREATE, INSERT, SELECT, DELETE, UPDATE ON snort.* TO 'snort'@'localhost';
FLUSH privileges;
exit

Editamos el fichero de configuración de Barnyard2 e indicamos donde tiene que guardar la información recopilada:

vi /etc/snort/barnyard2

Nos vamos al final del fichero y escribimos:

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

Modifcamos los permisos del fichero de configuración, para que otros usuarios no puedan acceder a su lectura:

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

Levantamos la aplicación con los parámetros que a nosotros nos interesa:

# Al añadir al final & el proceso se ejecutará en segundo platano, ejecutandose
# Otra buena opción sería utilizar el comando screen
sudo /usr/local/bin/barnyard2 \
-c /etc/snort/barnyard2.conf \
-d /var/log/snort \
-f snort.u2 \
-w /var/log/snort/barnyard2.waldo &

Explicamos los parámetros utilizados, para entender su funcionamiento:

  • -c: La ruta del fichero de configuración
  • -d: Donde tiene que consultar las salidas de Snort
  • -f: El nombre del fichero que tiene que buscar
  • -w: El sitio del fichero waldo (bookmark file)
  • -u: Usuario con el que se ejecuta
  • -g: Grupo con el que se ejecuta

Con un resultado en mi caso, sino lo dejo en segundo plano:

Ejemplo de salida de Barnyard2

Probando Snort y Barnyard2

Vale, todo esto es muy bonito, ¿pero funciona?

Primero de todo he añadio una regla al fichero /etc/snort/rules/local.rules, que nos avisará cuando alguien nos haga ping:

alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)

Una vez añadida, desde un host Windows he realizado el ping contra la IP

Ping contra el host

Una vez hecho esto si accedemos mediante screen a la consola, veremos la actividad reciente:

Registros de Snort en Barnyard2

Ahora podemos consultar los registros generados en la base de datos:

mysql -u snort -p -D snort -e "select count(*) from event"

Muestra de registros de Snort en MariaDB

Y esto es todo, espero que esta información os sea de utilidad en algún momento.

Fuentes consultadas

Hacking-etico.com – Instalación de un IDS con Snort. Parte II

Manuelfrancoblog.wordpresss.com – Barnyard2: Unificar alertas de Snort en MySQL