Actualización automática de reglas Snort con PulledPork

Nos encontramos en una época en la cual, cada día que pasa, se descubren nuevas vulnerabilidades software, y es muy probable que alguien con malas intenciones intente aprovecharse de estos fallos para realizarnos un nuevo tipo de ataque y que nuestros sistemas informáticos de seguridad no se percaten de dicha intrusión.

Por esta razón, es tan importante mantener todos nuestros sistemas de detección de intrusos (IDS) actualizados. En esta ocasión, se presenta una herramienta para la actualización de reglas del IDS Snort, llamada PulledPork.

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.

Podemos acceder a su repositorio de github oficial desde el siguiente enlace: https://github.com/shirkdog/pulledpork

Para empezar a utilizar esta herramienta, nos descargaremos el script inicial (dándole permisos de ejecución) y su archivo de configuración.

 
$ wget  https://raw.githubusercontent.com/shirkdog/pulledpork/master/pulledpork.pl
$ sudo chmod +x pulledpork.pl
$ wget  https://raw.githubusercontent.com/shirkdog/pulledpork/master/etc/pulledpork.conf

NOTA 1: Existen otros archivos de configuración para PulledPork, pero en este post nos centraremos en el principal.

A continuación, editaremos el archivo de configuración de PulledPork en función de nuestras necesidades, eligiendo los repositorios desde donde descargar las reglas Snort, la carpeta destino donde se quieran guardar las reglas descargadas, el directorio de nuestras reglas locales, el sid-msg.map, etc.

Una vez configurado, ejecutaremos el script para que se descargue las reglas de los repositorios indicados:

$ /path/to/pulledpork.pl -c /path/to/pulledpork.conf -l -P -k
  • -l Escribe registros detallados en Syslog
  • -c /path/to/pulledpork.conf La ruta a nuestro fichero de configuración
  • -P Procesar las reglas incluso si no hay nuevas reglas que actualizar
  • -k Mantener las firmas en archivos de reglas originales (no todas las reglas en 1 sólo archivo)

NOTA 2: Para que PulledPork no borre los comentarios de nuestros archivos de reglas locales, es recomendable crear dentro del directorio de /rules una carpeta donde coloquemos nuestros ficheros de reglas locales, y añadamos la ruta a estos ficheros en el archivo de configuración de PulledPork. Cuando se ejecute éste, copiará solamente los archivos locales con las reglas activas (no comentadas) en el directorio de reglas indicado en la configuración.

Una vez ejecutado el comando anterior, se podrá observar que se han descargado (o actualizado) todas las reglas del repositorio indicado:

En nuestro caso, configuramos PulledPork para que se descargara las reglas de Emerging Threats [1].

Para mantener una actualización de reglas automática, que es el objetivo de este post, bastaría con crear un script en bash, por ejemplo actualiza-reglas.sh, en el cual se ejecutara el comando anterior y cuando éste acabe de actualizar las reglas, que se reinicie Snort para aplicar los cambios:

actualiza-reglas.sh:

#!/bin/bash
/path/to/pulledpork.pl -c /path/to/pulledpork.conf -l -P -k
service snort restart

Y añadiríamos en el cron [2] la ejecución de este script (actualiza-reglas.sh) de manera diaria para mantener las reglas actualizadas al día. Podemos poner que se ejecute una vez al día a las 3 AM, que es una de las horas en las que el tráfico es más bajo.

$ crontab -l | { cat; echo "00 03 * * * /etc/init.d/actualiza-reglas.sh"; } | crontab -

Como conclusión, actualizar las firmas y añadir nuevas reglas a nuestro IDS es una acción para incrementar la capacidad de detección de nuestros sistemas y hacer nuestra red más segura, pero también tenemos que tener en mente que tiene sus desventajas.

Al actualizar automáticamente las firmas de Snort, no estamos prestando atención a la composición de la firma, y es muy probable que apliquemos firmas mal optimizadas en nuestro IDS, lo cual pueda aumentar de manera significativa la tasa de paquetes dropeados (sin analizar) de nuestro sistema de detección de intrusos.

Referencias:
[1] https://rules.emergingthreats.net/
[2] Cron: Administrador de procesos en segundo plano que ejecuta instrucciones en los intervalos de tiempo configurados.