martes, 6 de marzo de 2018

Setup de un IDS Snort en un dispositivo ARM (II): añadiendo reglas con PulledPork

¿De que nos sirve un IDS como Snort si no tenemos un conjunto de reglas que nos ayuden a identificar los incidentes?

PulledPork es un script escrito en Perl que descarga, combina, instala y actualiza conjuntos de reglas de varios sitios que serán usados por el IDS Snort.

Entre los  prerrequisitos de PulledPork nos encontramos con la instalación de las siguientes librerías:

sudo apt-get install -y libcrypt-ssleay-perl liblwp-useragent-determined-perl

Para su instalación, tan solo debemos descargarnos el paquete, descomprimirlo y copiar el script a una ruta que consideremos definitiva (en nuestro caso será /usr/local/bin), así como el fichero de configuración en nuestro directorio de Snort.

cd ~
wget https://github.com/shirkdog/pulledpork/archive/master.tar.gz -O pulledpork-master.tar.gz
tar xzvf pulledpork-master.tar.gz
cd pulledpork-master/
sudo cp pulledpork.pl /usr/local/bin
sudo chmod +x /usr/local/bin/pulledpork.pl
sudo cp etc/*.conf /etc/snort

Editaremos el fichero /etc/snort/pulledpork.conf con los siguientes cambios:

Cambiar línea 74 por rule_path=/etc/snort/rules/snort.rules
Cambiar línea 89 por local_rules=/etc/snort/rules/local.rules
Cambiar línea 92 por sid_msg=/etc/snort/sid-msg.map
Cambiar línea 96 por sid_msg_version=2
Cambiar línea 119 por config_path=/etc/snort/snort.conf
Cambiar línea 133 por distro=Ubuntu-12-04
Cambiar línea 141 por black_list=/etc/snort/rules/iplists/black_list.rules
Cambiar línea 150 por IPRVersion=/etc/snort/rules/iplist

Ejecución de PulledPork: ¡actualizando reglas!


Y finalmente podremos estar en condiciones de actualizar las reglas de Snort ejecutando el siguiente comando:

sudo /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l



¿Qué hemos actualizado?


Este proceso nos actualiza el fichero de reglas para Snort (snort.rules, local.rules y black_list.rules) asi como el fichero de interprete de reglas sid-msg.map que, por ejemplo, utiliza Barnyard2 para interpretar los ficheros de logs de Snort.

Si recordais, en la instalación creamos dos ficheros sid-msg.map, el original y otro llamado sid-msg1.map. En este caso, Pulledpork solo nos actualiza el primero, dejando el segundo siempre vacio. Ya comentaremos en el capitulo de Barnyard2 el por qué.

Crontab


Este proceso de actualización es bajo demanda. Pero queremos automatizarlo para que se realice todos los días. Para ello, haciendo uso de crontab, indicaremos que se realice una actualización todos los días a las 4:01 AM con la siguiente línea:

01  4 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l