pfSense - SURICATA
Introducción
En el ámbito de la administración de redes y la ciberseguridad, la detección temprana de accesos no autorizados es un aspecto fundamental para garantizar la integridad y disponibilidad de los sistemas. Para ello, los Sistemas de Detección de Intrusos (IDS, Intrusion Detection System) permiten supervisar el tráfico de red en tiempo real y alertar sobre posibles actividades maliciosas.
En esta práctica, se implementará Suricata en pfSense para configurar un IDS capaz de identificar accesos sospechosos a la infraestructura de red. Suricata es un sistema de detección y prevención de intrusos de alto rendimiento que analiza el tráfico mediante reglas y firmas predefinidas. Su integración en pfSense permite mejorar la seguridad del sistema al detectar posibles ataques y escaneos de red.
A través de la configuración de Suricata, se establecerán reglas para la detección de actividades como:
- Intentos de acceso a pfSense, incluyendo peticiones ICMP (ping).
- Accesos a recursos en la DMZ, como servicios SSH, HTTP y FTP.
- Escaneos de red con herramientas como Nmap, utilizados para el reconocimiento de sistemas y puertos abiertos.
Adicionalmente, se configurarán reglas de Snort mediante el uso de OINKCODE, habilitando un conjunto de firmas de detección para mejorar la capacidad del IDS. Para verificar su correcto funcionamiento, se realizarán pruebas generando tráfico malicioso con herramientas especializadas y analizando los registros generados.
Como medida adicional para garantizar la disponibilidad del servicio, se instalará el paquete Watchdog, que permitirá supervisar Suricata y reiniciarlo automáticamente en caso de que el servicio se detenga inesperadamente.
Objetivos de la práctica
- Instalar y configurar Suricata en pfSense como un sistema de detección de intrusos.
- Definir y aplicar reglas para detectar accesos no autorizados a la red.
- Configurar reglas de Snort con OINKCODE y habilitar firmas de detección.
- Verificar el funcionamiento del IDS mediante pruebas con Nmap.
- Implementar el paquete Watchdog para la supervisión y reinicio automático de Suricata.
Importancia de la práctica
La detección y monitoreo de accesos no autorizados es una medida clave en la administración de sistemas y seguridad informática. La implementación de Suricata en pfSense permite identificar amenazas en tiempo real y fortalecer la protección de la red frente a ataques externos.
A través de esta práctica, se adquirirá experiencia en la configuración de un IDS, la gestión de reglas de detección y el análisis de tráfico de red, conocimientos esenciales para la administración y seguridad de infraestructuras tecnológicas.
SURICATA
Suricata es un Sistema de Detección y Prevención de Intrusos (IDS/IPS, Intrusion Detection System / Intrusion Prevention System) de alto rendimiento diseñado para analizar tráfico de red en tiempo real y detectar actividades sospechosas o maliciosas. Funciona mediante un motor de inspección profunda de paquetes (DPI, Deep Packet Inspection) y se basa en reglas predefinidas para identificar patrones de ataque, comportamientos anómalos y accesos no autorizados a la red.
Este sistema es desarrollado y mantenido por OISF (Open Information Security Foundation) y es ampliamente utilizado en entornos de seguridad informática debido a su capacidad para procesar grandes volúmenes de tráfico de manera eficiente. Suricata es compatible con las reglas de Snort, lo que permite aprovechar una extensa base de datos de firmas de ataques y eventos de seguridad.
Funcionamiento de Suricata
Suricata opera bajo tres modos principales:
Modo IDS (Intrusion Detection System):
- En este modo, Suricata analiza el tráfico de red sin intervenir en él.
- Si se detecta una actividad sospechosa basada en sus reglas, genera alertas y registros en los logs del sistema.
- Se utiliza comúnmente para monitorear la seguridad de la red sin afectar el tráfico legítimo.
Modo IPS (Intrusion Prevention System):
- Funciona de manera similar a un IDS, pero con la capacidad de bloquear el tráfico malicioso en tiempo real.
- Para operar en este modo, Suricata debe configurarse en una interfaz de red con capacidad para modificar el tráfico, como un bridge o un firewall.
Modo de análisis de paquetes (PCAP):
- En este modo, Suricata procesa archivos de captura de paquetes de red (.pcap).
- Se utiliza principalmente para análisis forense y revisión de incidentes de seguridad.
Integración de Suricata en pfSense
pfSense es un sistema operativo basado en FreeBSD que actúa como un firewall y router de alto rendimiento. Su arquitectura permite la integración de múltiples herramientas de seguridad, incluyendo Suricata, mediante su sistema de paquetes.
Al instalar Suricata en pfSense, se obtiene un IDS/IPS que protege la red en tiempo real sin necesidad de hardware adicional. Su implementación dentro de pfSense permite:
- Monitorear el tráfico en todas las interfaces de red: Suricata puede configurarse para analizar tanto la LAN, la WAN como segmentos específicos, como la DMZ (Zona Desmilitarizada).
- Filtrado basado en reglas: Permite definir reglas específicas para detectar accesos a ciertos servicios o identificar tráfico malicioso.
- Compatibilidad con reglas de Snort: Se pueden importar y gestionar firmas de Snort mediante el uso de OINKCODE, lo que amplía la capacidad de detección.
- Generación de alertas y registros: Suricata almacena logs detallados sobre los eventos detectados, permitiendo su análisis posterior para mejorar la seguridad de la red.
Aplicación de Suricata en un entorno de red
Dentro de un entorno de red con pfSense, Suricata se implementa para detectar y analizar diferentes tipos de tráfico, tales como:
- Peticiones ICMP (ping) a pfSense: Permite identificar intentos de reconocimiento de red.
- Intentos de acceso a la DMZ: Se pueden configurar reglas para supervisar conexiones a servidores web, SSH o FTP.
- Escaneos de red con Nmap: Suricata puede detectar cuando una herramienta de escaneo intenta mapear los dispositivos y servicios activos en la red.
- Tráfico malicioso o anómalo: Se puede configurar para alertar sobre tráfico sospechoso basado en patrones conocidos de ataques.
Ventajas de utilizar Suricata en pfSense
- Alto rendimiento: Suricata es capaz de analizar grandes volúmenes de tráfico sin degradar significativamente el rendimiento del firewall.
- Capacidad de inspección profunda de paquetes: Puede detectar amenazas incluso dentro de tráfico cifrado y protocolos complejos.
- Flexibilidad y escalabilidad: Permite definir reglas personalizadas para adaptarse a distintos entornos de seguridad.
- Integración con Snort y otras bases de datos de amenazas: Acceso a una amplia comunidad de seguridad y actualizaciones constantes.
- Monitoreo detallado: Genera registros exhaustivos sobre los eventos de seguridad detectados, facilitando su análisis.
Conclusión
Suricata es una herramienta fundamental para la protección de redes empresariales y entornos críticos. Su integración con pfSense proporciona una solución eficiente para la detección y prevención de intrusos, permitiendo supervisar el tráfico de red y responder ante posibles amenazas. Al implementar Suricata en un firewall pfSense, se fortalece la seguridad de la red y se obtiene una visión más detallada sobre el comportamiento del tráfico, lo que facilita la detección temprana de ataques y accesos no autorizados.
Classtype en pfSense Suricata
En pfSense, cuando se implementa Suricata como sistema de detección y prevención de intrusiones (IDS/IPS), las classtype se utilizan para categorizar y clasificar las alertas generadas por las reglas de detección de amenazas. Estas categorías permiten a los administradores de sistemas identificar rápidamente la gravedad de una amenaza y tomar decisiones adecuadas para mitigar riesgos en la red.
Las classtype ayudan a priorizar las alertas y facilitan la gestión de eventos de seguridad, organizándolos según su propósito y nivel de peligrosidad.
Concepto de Classtype en Suricata
Una classtype en Suricata es una etiqueta que describe la naturaleza de una alerta generada por una regla específica. Cada regla en Suricata está asociada a una classtype, lo que permite categorizar el tipo de ataque o comportamiento sospechoso detectado en la red.
El uso de classtype facilita:
- La identificación de amenazas críticas frente a amenazas de menor impacto.
- La gestión eficiente de alertas en entornos de seguridad.
- La aplicación de políticas de respuesta basadas en la severidad de las amenazas detectadas.
Lista de Classtype en Suricata
A continuación, se presentan las principales classtype utilizadas en Suricata, junto con su descripción:
Importancia de las Classtype en la Gestión de Alertas
El uso de classtype en Suricata permite una gestión eficiente de alertas en entornos de red. Sus beneficios incluyen:
- Priorización de amenazas: Permite diferenciar entre alertas críticas y alertas de menor impacto.
- Automatización de respuestas: Se pueden configurar reglas específicas para bloquear, alertar o permitir ciertos eventos en función de su clasificación.
- Facilita el análisis forense: Organiza eventos en categorías lógicas para facilitar su investigación y respuesta.
- Optimización de reglas: Ayuda a ajustar las configuraciones de Suricata para reducir la cantidad de falsos positivos sin comprometer la seguridad.
Configuración de Classtype
Para configurar y ajustar las reglas y sus classtype en pfSense Suricata, se deben seguir los siguientes pasos:
- Acceder a la interfaz de administración de pfSense: Iniciar sesión en la interfaz web.
- Ir a la configuración de Suricata: Navegar a
Services
>Suricata
. - Revisar y gestionar las reglas: En la pestaña
Rules
, se pueden visualizar las reglas activas junto con suClasstype
. - Modificar las acciones de las reglas: Se pueden configurar acciones para bloquear, generar alertas o ignorar ciertos eventos basándose en su clasificación.
- Guardar y aplicar los cambios: Una vez configuradas las reglas, es necesario guardar los cambios y aplicar la configuración para que las modificaciones tengan efecto.
Las classtype en pfSense Suricata son un mecanismo esencial para categorizar y priorizar eventos de seguridad en una red. Su correcta configuración permite mejorar la gestión de alertas, minimizar falsos positivos y optimizar la respuesta ante incidentes.
Para entornos de seguridad avanzados, es recomendable ajustar las classtype de acuerdo con las necesidades específicas de la red y definir acciones automatizadas en función de la criticidad de cada tipo de alerta.
Ejemplo de Regla con Classtype en Suricata
Detectar solicitudes ICMP (Ping) a pfSense
Esta regla detecta cualquier intento de hacer ping a la IP de pfSense.
📌 Análisis detallado de la regla
1️⃣ Acción de la regla
alert
→ Genera una alerta cuando se cumpla la condición establecida.- Opciones disponibles:
alert
→ Solo genera una alerta, pero no bloquea.drop
→ Bloquea el tráfico y genera alerta (modo IPS).reject
→ Bloquea el tráfico y envía un "ICMP unreachable" al origen.pass
→ Permite el tráfico sin generar alerta.
2️⃣ Tipo de tráfico que se analiza
- Significa que la regla se aplicará solo a paquetes ICMP (usado en
ping
,traceroute
, etc.). - Otros protocolos pueden ser:
tcp
→ Para tráfico TCP (navegación, SSH, FTP, etc.).udp
→ Para tráfico UDP (DNS, VoIP, etc.).ip
→ Para cualquier tipo de tráfico.
3️⃣ Dirección del tráfico a analizar
any
→ Cualquier IP de origen.any
→ Cualquier puerto de origen (ICMP no usa puertos, pero en TCP/UDP sí importa).->
→ Indica la dirección del tráfico (de origen a destino).192.168.1.235 any
→ pfSense como destino (cualquier puerto).
💡 "Si cualquier dispositivo envía tráfico ICMP hacia pfSense, genera una alerta."
4️⃣ Mensaje de alerta
- Texto que aparecerá en los logs de Suricata cuando se active la regla.
- Se puede personalizar para facilitar la identificación en Alerts.
5️⃣ Tipo de ICMP a detectar
itype:8
→ Detecta ICMP Echo Request, que es lo que usa el comandoping
.- Otros valores de
itype
:0
→ Echo Reply (respuesta de ping).3
→ Destination Unreachable.11
→ Time Exceeded (TTL expirado, usado en traceroute).
💡 "Solo genera alerta cuando se recibe un ping (ICMP tipo 8) y no cualquier otro tipo de paquete ICMP."
6️⃣ Umbral de detección (threshold
)
type limit
→ Limita la cantidad de veces que se activa la alerta.track by_src
→ Controla las alertas basándose en la IP de origen.count 1
→ Solo alerta una vez por IP en 10 segundos, sin importar cuántos pings haga.seconds 10
→ El contador se resetea cada 10 segundos.
💡 "Si un dispositivo hace ping a pfSense, genera solo una alerta cada 10 segundos."
7️⃣ Prioridad de la alerta
- Define qué tan crítica es la alerta en una escala del 1 al 4:
1
→ Crítico (ataques graves, intrusión confirmada).2
→ Alto (actividad sospechosa, posible ataque).3
→ Medio (actividad inusual, escaneos de red).4
→ Bajo (informativo, eventos sin riesgo inmediato).
💡 "Esta alerta tiene una prioridad media-alta y debe revisarse."
8️⃣ Identificador único de la regla (SID
) y revisión
sid:100001
→ ID único de la regla (debe ser mayor a 100000 para reglas personalizadas).rev:3
→ Versión de la regla (se incrementa si se modifica la regla).
💡 "Esta es la versión 3 de la regla personalizada con SID 100001."
ESTRUCTURA DE RED
Explicación Detallada de Reglas de Suricata
A continuación, se analizan y explican en detalle cinco reglas de detección en Suricata, diseñadas para monitorear tráfico en una red con una estructura WAN → DMZ → Servidores Internos.
1️⃣ ALERTA PING DESDE WAN (ICMP Echo Request)
📌 Explicación de la Regla
alert icmp
→ Define la alerta para tráfico ICMP (protocolo de red usado porping
).any any -> 192.168.1.235 any
→ La regla aplica a cualquier origen y puerto, siempre que el destino sea192.168.1.235
(IP de pfSense).msg:"[ALERTA] WAN - Ping detectado a pfSense"
→ Mensaje que aparecerá en los registros cuando se active la alerta.sid:100001; rev:1;
→ Identificador único de la regla (sid:100001
), con versión (rev:1
).classtype:icmp-event;
→ Clasifica la alerta como un evento ICMP.itype:8;
→ Específico para paquetes ICMP Echo Request (solicitud de ping).threshold: type limit, track by_src, count 1, seconds 10;
count 1
→ Solo genera una alerta por IP de origen.seconds 10
→ El límite se aplica en un período de 10 segundos.
priority:2;
→ Prioridad media-alta (potencialmente sospechoso pero no crítico).
📌 Comportamiento
- Un atacante o usuario que haga
ping
192.168.1.235
generará una sola alerta cada 10 segundos, sin importar cuántos pings envíe. - Evita spam de alertas innecesarias.
2️⃣ ALERTA ACCESO HTTP 8080 DESDE WAN → DMZ (Redirigido a Puerto 80)
📌 Explicación de la Regla
alert tcp
→ Define la alerta para tráfico TCP.any any ->
→ Aplica a cualquier origen accediendo al puerto 8080 en192.168.1.235
8080192.168.1.235
.msg:"[ALERTA] WAN - Acceso HTTP en puerto 8080 detectado"
→ Mensaje de alerta.sid:100002; rev:1;
→ ID único y versión de la regla.classtype:web-application-attack;
→ Clasifica la alerta como posible ataque web.flow:to_server,established;
→ Solo se activa en conexiones establecidas hacia el servidor.content:"GET"; http_method;
→- Busca la palabra
GET
, usada en peticiones HTTP. http_method;
→ Asegura que se analiza correctamente el tráfico HTTP.
- Busca la palabra
threshold: type limit, track by_src, count 3, seconds 10;
count 3
→ Limite de 3 alertas en 10 segundos.
priority:3;
→ Prioridad media (no crítica).
📌 Comportamiento
- Si alguien accede a http://192.168.1.235:8080, Suricata detectará la solicitud.
- Si la IP de origen hace 3 peticiones en 10 segundos, se activará la alerta.
- Filtra tráfico normal y solo alerta accesos repetidos, evitando falsos positivos.
3️⃣ ALERTA ACCESO SSH 2222 DESDE WAN → DMZ 22
📌 Explicación de la Regla
alert tcp
→ Define alerta para tráfico TCP.any any ->
→ Aplica a cualquier origen accediendo al puerto 2222.192.168.1.235
2222msg:"[ALERTA] WAN - Acceso SSH en puerto 2222"
→ Mensaje de alerta.sid:100003; rev:2;
→ ID único y versión.classtype:attempted-admin;
→ Posible intento de acceso administrativo.flow:to_server,established;
→ Se activa solo en conexiones establecidas.content:"SSH-"; depth:4;
→ BuscaSSH-
al inicio del tráfico, característico del protocolo SSH.threshold: type limit, track by_src, count 1, seconds 10;
count 1
→ Solo genera una alerta por IP en 10 segundos.
📌 Comportamiento
- Si alguien intenta conectarse por SSH en el puerto 2222, generará una alerta por intento.
4️⃣ ALERTA ACCESO MYSQL 3306 DESDE WAN → DMZ 3306
📌 Explicación de la Regla
alert tcp
→ Aplica a tráfico TCP.any any ->
→ Cualquier origen hacia el puerto 3306.192.168.1.235
3306msg:"[ALERTA] WAN - Acceso MYSQL en puerto 3306"
→ Mensaje de alerta.sid:100004; rev:1;
→ ID único y versión.classtype:attempted-admin;
→ Posible intento de acceso administrativo.priority:2;
→ Prioridad media-alta.
📌 Comportamiento
- Falta filtrar conexiones exitosas.
- Se recomienda agregar
flow:to_server,established;
para evitar falsos positivos.
5️⃣ ALERTA ESCANEO DE RED NMAP
📌 Explicación de la Regla
flags:S;
→ Detecta paquetesSYN
, característicos de Nmap-sS
.threshold: type both, track by_src, count 5, seconds 10;
- Detecta escaneos con más de 5 intentos en 10 segundos.
📌 Comportamiento
- No se activa con conexiones normales.
- Detecta escaneos de puertos rápidos con Nmap.
Comentarios
Publicar un comentario