domingo, agosto 02, 2015

Recursos y algunas notas sobre Suricata IDS

Suricata es un sistema de detección de intrusiones y monitorización de red de fuentes abiertas publicado con la licencia GPL. Sus tres principales fortalezas en la actual versión, 2.0.8 son:

  • Escalabilidad gracias a su arquitectura multihilo.
  • Identificación de protocolos en los flujos de datos, lo que permite escribir reglas de detección de patrones orientadas al protocolo no a puertos.
  • La posibilidad de calcular huellas md5 de ficheros al vuelo, extraer los mismos e identificarlos.

Por motivos laborales, he estado buscando bastante información sobre Suricata el último mes. Con esta entrada pretendo crear un pequeño índice que me sirva de ayuda cuando necesite buscar información sobre el mismo.

Documentación y ayudas

Existe un pequeño índice con la documentación oficial de Suricata, donde está la Guía de usuario como documentación más completa y base donde se puede consultar.

Hay tres blogs con una serie de entradas sobre Suricata y su configuración muy interesantes:

Hay dos listas de correos donde se puede obtener información Oisf-users, la lista de usurios de Suricata y para los más aventureros la lista de desarrollo Oisf-devel

Otro recurso importante para obtener información y ayuda es el canal Suricata en la red de IRC Freenode

Estadísticas

Suricata es capaz de generar diversas estadísticas: uso de memoria, alertas, paquetes capturados y perdidos, etc en el fichero stats.log. Para que se generen las mismas es necesario que esté activado en el fichero de configuración. Érin Leblod tiene un programa suri-stats que puede ayudar a analizar y hacer gráficos sobre las mismas. Para activar las estadísticas basta con añadir al fichero de configuración las opciones correspondiente en la sección outputs:

outputs:
  - stats:
      enabled: yes
      filename: stats.log
      append: yes
      interval: 20

Las opciones anteriores hará que Suricata vaya generando cada 20 segundos - interval - la información en el fichero $PREFIX/var/log/stats.log. Además , la información no se borra en cada rearranque (append es yes). El formato de los ficheros de configuración de Suricata es Yaml

Algunas opciones de línea de comandos

Cuando estás midiendo rendimiento y probando configuraciones hay dos opciones que son importante mirar:

  • --build-info Suricata listará las opciones que se ha usado a la hora de generar el binario, las rutas de instalación por defecto y librerías que ha usado. Puede ser una buena idea incluir esta información cuando se va a pedir ayuda.
  • --dump-config Suricata volcará la configuración. Además, el formato en la que la vuelca es muy cómodo porque permite modificar los parámetros al vuelo en la línea de comandos con --set
  • .

Hardware

Es importante tener hardware que tenga la capacidad suficiente para captura el flujo de datos que se quiere analizar. Si se está trabajando bajo Linux implica el uso de hardware al cual se pueda tener acceso con la interfaz de captura AF_PACKET y soporte para los anillos de captura. Además, en función del número de reglas - esto es algo crítico - , se necesitará memoria y CPUs. Leyendo las listas de correo de Suricata no es raro hablar de 64 Gbytes de RAM y 16 cores para poder procesar un conjunto respetable de reglas y tráficos de varios gigabytes por segundo.

Nota sobre configuraciones y pruebas

Cuando se está haciendo pruebas para obtener una configuración óptima de Suricata en un hardware determinado es conveniente ir versionando los ficheros de configuraciones para que seamos capaces de saber que se ha tocado y el rendimiento esperado con las modificaciones. Quizás lo más cómodo sea usar algún sistema de contro de versiones como git que nos permita almacenar cada cambio. Tener algún tipo de sistema de pruenas automático con un tráfico defino también ayuda en esta labor.

No hay comentarios: