jueves, 17 de marzo de 2011

Sagan 0.1.8 con Barnyard2 support en Snorby 2.2.5



Es una herramienta para visualizar los logs en realtime, ademas usa una serie de reglas (tipo snort) para detectar anomalias en la red.

Ademas existen varios front ends para snort que pueden ser usados por sagan como es el Snorby, Base, Sguil, etc .. En este caso vamos a usar Snorby

Vamos con los paquetes necesarios, primero actualizamos
# aptitude update
# aptitude upgrade

Necesitamos el paquete PCRE
aptitude install libpcre3-dev libpcre3

Paquetes opcionales:
Si deseas recibir alertas en tu correo
# aptitude install libesmtp-dev

Si deseas guardar la info en una base de datos mysql
# aptitude install libmysqlclient15-dev

Si deseas usar postgresql
#aptitude install postgresql-server-dev-8.4

Security Information Management System
#aptitude install libprelude-dev

Log normalizing library
#aptitude install liblognorm-dev

Para este caso vamos a usar el mysql

*************
Bajamos el sagan http://sagan.softwink.com/download

La version actual es la 0.1.8 con soporte unified2

Compilamos e instalamos
# ./configure --disable-postgresql
# make && make install

Ahora sigue la configuracion del syslog-ng, si no lo tenemos lo instalamos de los repositorios
# aptitude install syslog-ng

Ahora sagan tiene dos formas de tratar los datos entrantes, por medio de FIFO o program mode:

- FIFO (First In/First Out),
Syslog-ng envia los eventos al archivo /var/run/sagan.fifo, de este modo Sagan logra leer este archivo.

Para ello se debe crear el archivo
mkfifo /var/run/sagan.fifo
ls -l /var/run/sagan.fifo
prw------- 1 root root 0 mar 17 17:56 /var/run/sagan.fifo

Debemos modificar el syslog-nd.conf, y añadir las lineas correspondientes segun el archivo ejemplo de la pagina de sagan http://sagan.softwink.com/syslog-ng-fifo.txt

- Program mode
significa que Sagan tomara los eventos via standard input (stdin)

Igualmente reemplazamos el archivo syslog-ng.conf o usamos el dado por la pagina del autor
http://sagan.softwink.com/syslog-ng-program.txt

En mi caso escogo el modo FIFO y renombro el syslog-ng.conf que viene por default y uso el archivo ejemplo syslog-ng.conf de la pagina sagan.

Ahora vamos a modificar el archivo de configuracion sagan.conf, que debe estar en
/usr/local/etc/sagan.conf

Modificamos
sagan_host 192.168.0.2 --> poner la ip de la PC

Si deseamos loggearnos a una base de datos snort;
# [Required if logging to a Snort database]

; sagan_hostname sagan
; sagan_interface syslog
; sagan_filter none
; sagan_detail 1

; maxdb_threads 50
; output database: log, mysql, user=sagan password=secret dbname=snort_db host=192.168.0.1

#Vamos a usar el Unified2 output plugin
output unified2: filename sagan.log, limit 128

En mi caso comente lo siguiente
porque al ejecutar el sagan me salia violacion de segmento:

#normalize: cisco, $RULE_PATH/cisco-normalize.rulebase
#normalize: openssh, $RULE_PATH/openssh-normalize.rulebase
#normalize: smtp, $RULE_PATH/smtp-normalize.rulebase
#normalize: dns, $RULE_PATH/dns-normalize.rulebase
#normalize: imap, $RULE_PATH/imap-normalize.rulebase

Reglas de Sagan
Para poder usar las reglas dadas por sagan hay que descargarlo de:
http://sagan.softwink.com/rules/sagan-rules-current.tar.gz

Y copiamos los archivos a la ruta definida por la variable $RULE_PATH
var RULE_PATH /usr/local/etc/sagan-rules

Creamos la carpeta sagan-rules y copiamos los archivos ahi

Creamos el usuario sagan luego, lo hacemos propietario de los archivo con el comando chown

debian:~# chown -R sagan.sagan /var/log/sagan
debian:~# chown -R sagan.sagan /var/run/sagan
debian:~# chown -R sagan.sagan /var/run/sagan.fifo

Configurando Barnyard2

Copiamos el archivo de ejemplo de la pagina de sagan

https://wiki.softwink.com/bin/view/Main/Barnyard2HowTo

Y modificamos la ultima linea con los datos respectivos de la base de datos.

creamos el archivo
# touch /var/log/barnyard2/barnyard2-sagan.waldo
# chown -R sagan.sagan /var/log/barnyard2/barnyard2-sagan.waldo

Ejecutamos sagan

# /usr/local/bin/sagan



Ejecutamos el Barnyard2

# /usr/local/bin/barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/sagan -f sagan.log -w /var/log/barnyard2/barnyard2-sagan.waldo -S /usr/local/etc/sagan-rules/sagan-sid-msg.map -C /usr/local/etc/sagan-rules/classification.config

Si todo sale bien sale un mensaje como este:



Despues de un rato vemos que aparece el sensor y los respectivos eventos



Vamos a la interface del snorby y vemos la aparicion de un sensor mas:



Vemos los eventos de ese sensor



Y los detalles



PD: A veces tenia el problema que al momento de ejecutar el barnyard2 me salia un mensaje como este:

WARNING: Can't extract timestamp extension from 'sagan.log'using base 'sagan.log'
Waiting for new data
WARNING: Can't extract timestamp extension from 'sagan.log'using base 'sagan.log'


Esto sucede porque hay un sagan.log que tiene informacion acerca del funcionamiento de sagan y el unified2 tambien se llama sagan.log.

Para solucionarlo modificamos el archivo sagan.conf en la parte de unified2
output unified2: filename sagan.u2, limit 128

Y el comando quedaria asi:
# /usr/local/bin/barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/sagan -f sagan.u2 -w /var/log/barnyard2/barnyard2-sagan.waldo -S /usr/local/etc/sagan-rules/sagan-sid-msg.map -C /usr/local/etc/sagan-rules/classification.config

Ahora si no habria conflictos de ningun tipo

Fuente:
Help from Champ Clark III Sagan's creator
https://wiki.softwink.com/bin/view/Main/SaganHOWTO
http://muchikon.blogspot.com/2010/07/sagan-en-debian.html

No hay comentarios.: