sábado, julio 16, 2022

PFSense: Cómo configurar tu propio IDS & IPS con Suricata

Hemos hablado anteriormente en el blog sobre PFSense y algunas posibilidades interesantes que ofrece este tipo de software. Vimos cómo montar una VPN con PFSense y las posibilidades que PFSense ofrecía y lo fácil que es disponer de un servidor de VPN para fortificar las comunicaciones. Como se comentó en esos artículos PFSense ofrece muchas más posibilidades. En el artículo hoy, hablaremos sobre cómo montar un IDS e IPS para poder generar alertas y bloquear conexiones que puedan ser maliciosas.

Figura 1: PFSense: Cómo configurar tu propio IDS & IPS con Suricata

Suricata es un motor de detección de amenazas haciendo las funciones de IDS y de IPS. También podemos encontrar Snort dentro de PFSense para su instalación, aunque el ejemplo de hoy nos centraremos en Suricata.
 
Figura 2: Libro de Ethical Hacking 2ª Edición
de Pablo González en 0xWord

Primero comenzaremos con ver cómo instalamos Suricata en PFSense. Para ello, dentro del panel de PFSense podemos ir al apartado System y encontraremos la opción ‘Package Manager’. El gestor de paquetes nos permite ver qué tenemos instalados en PFSense y que podemos instalar a través de un panel de búsqueda.

Figura 3: Package Manager en System

Como se puede ver en la siguiente imagen, si buscamos la palabra ‘suri’ o ‘suricata’ nos aparece un paquete con la versión correspondiente para su instalación. Solamente debemos pulsar en ‘Install’ para añadir la funcionalidad a nuestro PFSense. La gestión y configuración de Suricata se hará desde el propio panel de PFSense.

Figura 4: Paquete de Suricata

Como se puede ver en las imágenes de la Figura 4 y Figura 5, una vez pulsamos en instalar vamos a ver cómo el proceso nos muestra una salida de terminal y vamos viendo cómo se lleva a cabo la instalación de Suricata sobre nuestro PFSense.

Figura 5: Instalación de Suricata
    
Una vez instalado, en el apartado de Servicios de PFSense vamos a encontrar Suricata instalado. Hay una serie de apartados que iremos tratando durante el artículo. A continuación, enumeramos algunos:

Figura 6: La lista de módulos de Suricata
  • Interfaces: En este apartado vamos a poder configurar sobre qué interfaz o interfaces queremos habilitar el IDS & IPS.
  • Global Settings: En este apartado configuraremos los parámetros necesarios para indicar qué conjunto de reglas y de donde se actualizarán éstas utilizará Suricata. Es necesario entender que Suricata utiliza reglas que en el caso de que las comunicaciones hagan ‘match’ se activará una alerta para notificar (vía email si tiene el suficiente grado de relevancia u otros métodos configurables) o, incluso, bloquear la dirección IP que originó la alerta (es decir, la comunicación). La detección y el bloqueo son partes fundamentales de Suricata, las que le hacen tener funciones de IDS y de IPS.
  • Updates: Esta pestaña es importante, debido a que la actualización de la base de datos de reglas y otros elementos se llevarán a cabo desde esta funcionalidad,
  • Alerts: Esta función permite visualizar y filtrar la información sobre las alertas. El volumen de alertas puede ser alto, por lo que será interesante manejar el filtro de éstas a través de diferentes parámetros de búsqueda. En las alertas, podemos ver qué tipo de regla ha provocado el match y la notificación.
  • Blocks: Esta pestaña muestra las direcciones IP y comunicaciones que han sido bloqueadas. En esta pestaña se puede gestionar la eliminación de direcciones IP bloqueadas por error (falso positivo).
  • Pass lists: Se define en este apartado las direcciones IP que se quieren ‘bypassear’. Si tenemos algunas direcciones IP que bajo ningún concepto queremos que queden bloqueadas por Suricata podemos configurarlo aquí. Es un paso fundamental para las empresas, ya que se tienen direcciones IP que deben estar dadas de alta en este apartado.
  • Logs View: Esta vista nos permite visualizar los logs y realizar búsqueda sobre ellos.
Cuando entramos en Global Settings, deberemos configurar gran parte de la configuración de Suricata. Si nos fijamos en las posibles configuraciones, vamos a encontrar muchas opciones. Debemos indicar de dónde vendrán las reglas, de dónde las descargaremos y cómo llevaremos a cabo las actualizaciones.

Figura 7: Configuración de Global Settings

Es normal, que nos pidan una cuenta de Snort para configurar el catálogo de reglas. Hay diferentes fuentes de datos para las reglas, pero una opción son las reglas ‘free’ de Snort, tal como se puede ver en la imagen (hay un vínculo). Para actualizar y descargar reglas podemos necesitar un Oinkcode, el cual se puede encontrar dentro de la cuenta de snort (que se puede hacer de forma gratuita). Este Oinkcode no es más que una API Key para poder acceder al catálogo de reglas y utilizarlo en las actualizaciones de éstas.

Figura 8: Intervalo de actualizaciones

Como se puede ver en la imagen, se debe indicar el rango o intervalo de actualización. Por defecto viene el parámetro NEVER, no recomendable, y mejor que haya una comprobación de actualización cada ‘x’ días o ‘x’ horas. Además, también debemos indicar si los equipos bloqueados se desbloquean a las ‘x’ horas o nunca. La elección de gestión de las defensas contra los ataques de redes es fundamental, pues una mala elección puede resultar en una D.o.S. del sistema.

JL. Rambla, ampliado y revisado por Pablo González y Chema Alonso

Por defecto viene NEVER, pero ya es cuestión de cada administrador decidir si se configura un rango o no. Quizá una buena estrategia sea no desbloquear automáticamente o dar un rango amplio de tiempo de bloqueo y tener la lista blanca de direcciones IP de la empresa que bajo ningún concepto deben ser bloqueadas (opción de Pass List).

Figura 10: Módulo de Alertas

En la vista de Alertas vemos cómo tenemos un filtro para poder realizar búsquedas avanzadas sobre las alertas, que pueden alcanzar un volumen alto, ya que la base de datos de reglas es muy extensa o puede serla.

¿Cómo ponemos en funcionamiento Suricata?

En la pestaña interfaces debemos darle al botón ‘Añadir’ e indicar la interfaz por la cual queremos ejecutarlo. Cuando hagamos esto, nos saldrá una pantalla como la que se puede ver a continuación. Se puede ver fácilmente que habilitamos Suricata en la interfaz WAN de Suricata.

Figura 11: Activando Suricata y Logs

Disponemos de una serie de opciones de logging, lo cual es importante pensar bien cómo configurarlo y el qué, ya que cuanta más información tengamos sobre el funcionamiento de los servicios y lo que está ocurriendo será mejor para identificar ciertos incidentes.

Figura 12: Configuración de Bloqueo

Para la parte de bloqueo también veremos un apartado, el cual debemos activar a través de la línea “Checking this option will automatically…”. Bien, debemos indicar el IPS Mode, por ejemplo, con Legacy Mode. En el caso del bloqueo debemos seleccionar el tipo de conexión, si solo queremos bloquear dirección IP origen o cómo queremos hacerlo.

Figura 13: Arrancando Suricata

Una vez configurada esta parte, debemos arrancar Suricata quedando como se puede ver en la siguiente imagen (en el apartado Interfaces). La interfaz WAN queda protegida con Suricata en modo IDS e IPS. Se recomienda estudiar y profundizar más sobre el tema de reglas, el funcionamiento interno del IDS y el modo de bloqueo ‘Legacy Mode’. Hay mucha documentación que se puede ojear.

Un ejemplo de regla y bloqueo sencillo     

A continuación, vamos a ver un ejemplo de alerta y veremos cuál es la regla que ha provocado la notificación. Las reglas son Snort puro, por lo que recomendamos echar un ojo a esta documentación.

Figura 14: Información de la regla

Respecto al bloqueo, aquí tenemos una imagen donde se puede ver un ejemplo de cómo actúa. Desde la pestaña ‘Blocks’ se puede hacer uso de la gestión de direcciones IP bloqueadas y tomar decisiones, pero sobre todo entender por qué fue bloqueada dicha dirección IP. Esto es algo fundamental para la toma de decisiones y sobre lo que puede estar sucediendo.

Figura 15: Alertas producidas por la regla

Con esto llegamos al final del artículo, en un futuro podemos jugar con situaciones que Suricata puede detectar y alertar, y ver algunos ejemplos más profundos. Si eres nuevo en ese mundo, recomendamos montar máquinas virtuales, montarte un laboratorio y practicar y jugar con este software Open Source y con las posibilidades que aporta.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Contactar con Pablo González

1 comentario:

  1. En primer lugar muchas gracias por el artículo, saben ¿Cómo puedo agregar a suricata en la info del dashboard de PFsense?

    ResponderEliminar