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 |
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.
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.
- 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.
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.
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.
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?
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.
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.
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.
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.
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.
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.

![]() |
Contactar con Pablo González |