Integración de Snort con Graylog

Continuamos inmersos en el mundo de los sistemas de detección de intrusos, en la entrada de hoy vamos a ver como integrar el sistema Snort, del que hablamos recientemente, con el sistema de visualización de registros Graylog.

Pero antes de nada, recapitulemos de lo que hemos hablado hasta ahora:

Ahora sí, podemos empezar.

Logo del producto Snort

Integración de Snort con Graylog

Seguimos trabajando con la misma máquina virtual donde tenemos funcionando todos los componentes. Primero de todo añadimos la siguiente línea en el fichero de configuración de Snort:

sudo vi /etc/snort/snort.conf

Y añadimos, en la sección 6 del documento:

output alert_syslog: LOG_LOCAL5 LOG_ALERT

Lo que vamos a hacer ahora es modificar el fichero de configuración de Rsyslog, del que también os hablé hace un tiempo. Este fichero esta ubicado en /etc/rsyslog.conf.

sudo vi /etc/rsyslog.conf

Y añadimos, justo al final del fichero:

$template GRAYLOGRFC5424,\
     "<%PRI%>%PROTOCOL-VERSION% \
     %TIMESTAMP:::date-rfc3339% \
     %HOSTNAME% %APP-NAME% %PROCID% \
     %MSGID% %STRUCTURED-DATA% %msg%\n"
 
local5.alert @graylog.example.org:514;GRAYLOGRFC5424

NOTA: La línea de la plantilla va realmente todo seguido en el fichero de configuración.

La parte de «graylog.example.org» la debemos cambiar por la IP o nombre del host; por otra parte el puerto 514 es el puerto por defecto pero, en mi caso, he utilizado otro, que es el 5014.

Podemos encontrar otras instrucciones para añadir otros sistemas de registros en Graylog, consultando este enlace.

Configuración de Graylog

En Graylog debemos añadir una entrada de syslog UDP en el puerto y la interfaz de red que configuramos anteriormente, que como os he comentado yo he utilizado el puerto 5014, y confirmar que los mensajes están llegando. Para hacer las pruebas de funcionamiento, realizaremos «ping» desde otro host, ya que tenemos habilitada la regla para ICMP.

Recuerda que para hacer esto en Snort, debemos añadir una nueva regla, en el fichero de configuración /etc/snort/rules/local.rules, concretamente:

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

Ahora, desde el panel web, nos iremos a la sección «Systems» y después «Inputs«, y añadimos uno nuevo marcando sobre «Launch new input«.

Añadimos un nuevo input

Tal y como se ve en la imagen anterior, hemos indicado el nodo y el puerto que vamos a utilizar.

Una vez que tenemos el nuevo «Input» funcionando, ya que hemos marcado sobre «Start Input«, nos vamos a la consola de comandos del host y ya podemos ver como se está escuchando por el puerto 5014

davidochobits@servdebian:~# sudo lsof -i :5014
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    689 graylog   47u  IPv6  18434      0t0  UDP *:5014
java    689 graylog   50u  IPv6  17454      0t0  UDP *:5014

Desde el panel web, si lanzamos «ping» desde otro host, vemos el resultado:

Muestra de información mostrada por Graylog, al enviar un ping.

Y eso es todo por el momento. Espero que esta información os sea de utilidad en algún momento.

Fuentes consultadas

Graylog.org – Visualize and Correlate IDS Alerts with Open Source Tools