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.
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/
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:
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
Una vez hecho esto si accedemos mediante screen a la consola, veremos la actividad reciente:
Ahora podemos consultar los registros generados en la base de datos:
mysql -u snort -p -D snort -e "select count(*) from event"
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