viernes, diciembre 26, 2008

Ficheros de registro de Snort Unified 2, segunda parte

Continúo con las notas sobre el uso de ficheros de registro Unified 2 con Snort. Para poder analizar los ficheros, lo más simple es configurar Snort para que genere los dos tipos de registro: Uno, las alertas, un fichero en texto plano que puede leerse fácilmente y que nos va a servir de referencia para analizar el formato binario Unified 2, que es el segundo tipo de registro que se va a generar.

La configuración de Snort que voy a usar es la siguiente:

  1. El programa se ejecutará con el uid y gid del usuario snort de la máquina. Es necesario saber los valores numéricos de ambos y se obtienen fácilmente con:
    ibookdrizzt:~ terron$ id snort
    uid=504(snort) gid=504(snort) groups=504(snort)
  2. El directorio donde quiero que se almacenen los logs es /Users/snort/log
  3. Quiero generar ficheros de alertas y registros unified2
  4. Quiero que se capture como mínimo la MTU de una ethernet (1500 bytes)
  5. El fichero de reglas de Snort lo voy a descomprimir en /Users/snort
Con las condiciones anteriores, lo primero es bajarse la última versión de las reglas de Snort desde SourceFire1 y descomprimirlas dentro del directorio /Users/snort:
ibookdrizzt:~ snort$ tar zxvf snortrules-snapshot-2.8.tar.gz
El comando anterior generará un árbol de directorio cuya raíz es /Users/snort donde descomprimirá todos los ficheros de reglas y configuración de Snort.

Ahora hay que editar el fichero snort.conf,cuyo path completo si se ha seguido la configuración anterior será /Users/snort/etc/snort.conf. Este fichero hay que modificarlo de acuerdo con las reglas que se deseen usar, los diferentes módulos de detección que tiene Snort, las variables que definen cuales son las redes a analizar y los módulos encargados de escribir las alertas. Como mi idea de momento es usarlo en una instalación de ossim, he decidido dejar todas las reglas activadas. Con la configuración que quiero implementar las líneas que hay que añadir al fichero snort.conf son las siguientes:

config logdir: /Users/snort/log/
output alert_fast: alert.log
output unified2: filename snort.log,limit 64
config set_gid: 504
config set_uid: 504
config snaplen: 1500
La explicación de las líneas anteriores es la siguiente:
  1. Establecer el directorio donde se almacenan los registros de Snort en /Users/snort/log. Es importante que esta línea aparezca antes de la configuración de cualquier módulo de salida de registros, porque sino, Snort tomará la configuración que tenga por defecto o el valor que se le pase en la línea de comandos a través del parámetro -l.
  2. Se activa el módulo de salida que genera alertas en formato de texto y estas se almacenarán en el fichero alert.log. La ruta completa de este fichero será /Users/snort/log/alert.log
  3. Se activa el módulo de salida Unified2. El nombre del fichero que generará está especificado por el parámetro filename y será snort.log.timestamp, donde timestamp es una marca de tiempos que generará Snort cuando crea el fichero. Se limita el tamaño máximo del fichero a 64MB. Snort automáticamente creará un fichero nuevo cuando se alcance el tamaño máximo.
  4. Se establece el uid y el gid con el que se ejecutará Snort, en este caso 504 que son el uid y el gid que corresponde al usuario snort.
  5. Configuro la longitud de la captura a la MTU2 de la interfaz. Como se trata de una ethernet o una wifi, la establezco a 1500 bytes.
Una vez establecida la configuración, basta con ejecutar Snort:
ibookdrizzt:/Users/snort root# snort -i en1 -c /Users/snort/etc/snort.conf

En este caso la interfaz que está conectado a Internet es la en13, que recibirá el tráfico y lo analizará, y generará las diferentes alarmas y capturará los paquetes que las causan. Si vemos el directorio de registro:

alert.log
snort.log.1230070130
snort.log.1230071033

Vemos el fichero alert.log que almacena las alarmas en modo texto y los otros dos ficheros son binarios en formato Unified 2. Estos últimos son los que quiero analizar.


1Hay que registrarse para poder bajarse las reglas de Snort con Sourcefire. De manera gratuita, se puede bajar uno las reglas que están actualizadas con un mes de retraso respecto a la versión de pago, que se actualizan diariamente.
2Maximum transfer unit: la cantidad máxima de datos que puede transportar la capa de enlace
3En este caso se está ejecutando en MacOS X y la interfaz que se está usando es el airport (en1). En este caso está configurado con una IP para que todo el tráfico entrante del router ADSL se dirija al mismo. En otro artículo comentaré como debería hacerse esta configuración con los puertos de SPAN de un switch o con un router ADSL.

Technorati Tags:

No hay comentarios: