@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

suricata-como-crear-y-testear-reglas-personalizadas-1

Suricata: Cómo crear y testear reglas personalizadas

Suricata: Cómo crear y testear reglas personalizadas

En esta entrada, vamos a explicar cómo crear y utilizar reglas manuales en Suricata para detectar actividades sospechosas en una red interna. Veremos ejemplos de reglas para detectar escaneos de puertos, tráfico ICMP (ping) y otras actividades que podrían indicar un ataque o comportamiento inusual en la red.

Las reglas de Suricata son simples y están escritas en un formato similar a Snort. Estas reglas están compuestas por dos partes principales:

  • Encabezado de la regla: Define el protocolo y los parámetros de la red, como la dirección IP y el puerto.
  • Opciones de la regla: Especifica los detalles de la actividad a monitorear, como la inspección de contenido, las banderas del protocolo TCP, y las acciones a tomar.

Sintaxis básica de las reglas de Suricata

La sintaxis básica de una regla en Suricata es la siguiente:

Donde:

  • alert: Acción que toma Suricata cuando se cumple la regla (puede ser alert, drop, pass, entre otros).
  • <protocolo>: Es el protocolo de la red (TCP, UDP, ICMP, etc.).
  • <ip_origen> y <ip_destino>: Definen las IPs de origen y destino. Se puede utilizar any para cualquier dirección.
  • <puerto_origen> y <puerto_destino>: Los puertos de origen y destino, respectivamente.
  • (opciones): Son las opciones que describen más detalladamente qué tipo de tráfico estamos buscando, por ejemplo, la inspección del contenido o el uso de determinadas banderas TCP.

Dónde colocar las reglas personalizadas en Suricata

Las reglas personalizadas de Suricata deben almacenarse en ubicaciones específicas para que el IDS/IPS las cargue correctamente al iniciar. A continuación, se detallan las rutas y archivos más importantes donde debes colocar las reglas y cómo integrarlas en la configuración de Suricata.

Ubicación de las reglas en Suricata

  • Ruta predeterminada de las reglas:

En la mayoría de las distribuciones Linux, las reglas de Suricata se almacenan en:

En este directorio, encontrarás diferentes archivos .rules que contienen reglas organizadas por categorías como http.rules, ssh.rules, icmp.rules, entre otras.

  • Crear un archivo de reglas personalizado:

Para gestionar tus propias reglas sin interferir con las reglas por defecto, es recomendable crear un archivo separado, por ejemplo:

Puedes crear este archivo ejecutando:

Este archivo será el lugar donde añadirás todas tus reglas personalizadas.

  • Incluir el archivo de reglas personalizado en la configuración de Suricata:

Después de crear el archivo de reglas personalizado, necesitas decirle a Suricata que lo cargue al iniciar. Para hacerlo, edita el archivo principal de configuración de Suricata, normalmente ubicado en:

Dentro de este archivo, busca la sección rule-files: y añade la ruta de tu archivo custom.rules de la siguiente manera:

Esto asegura que tus reglas personalizadas se cargarán cuando se inicie Suricata.

Ejemplos de reglas personalizadas en Suricata

Detección de escaneo de puertos TCP

Un escaneo de puertos es un método común utilizado por los atacantes para identificar qué puertos están abiertos y, por lo tanto, qué servicios están ejecutándose en una máquina. Para detectar estos escaneos de puertos, podemos configurar una regla en Suricata que analice múltiples conexiones en un corto período de tiempo desde la misma IP.

En esta regla:

  • alert tcp any any -> any any: Estamos monitorizando todas las conexiones TCP de cualquier origen a cualquier destino.
  • flags:S: La regla solo se activará si se detecta un paquete SYN, utilizado para iniciar una conexión TCP.
  • threshold:type both, track by_src, count 20, seconds 10: Si Suricata detecta 20 conexiones TCP en 10 segundos desde la misma IP de origen, se activará la alerta.
  • sid:1000001: Es el identificador único de la regla.
  • rev:1: Es la versión de la regla.

Detección de Pings ICMP (tráfico ICMP)

El protocolo ICMP es comúnmente utilizado para realizar “pings” y comprobar la conectividad entre dispositivos. Sin embargo, un tráfico ICMP excesivo o fuera de lo común podría ser un indicio de un ataque, como un escaneo ICMP o una denegación de servicio.

Regla para detectar un ping desde cualquier equipo dentro de la red interna hacia Internet:
Explicación:

  • alert icmp any any -> any any: La regla monitorea todo el tráfico ICMP.
  • itype:8: Esto especifica que estamos buscando paquetes ICMP de tipo 8, que son solicitudes de ping.
  • sid:1000002: Es el identificador único de la regla.
  • rev:1: La versión de la regla.

Esta regla generará una alerta cada vez que se detecte un ping en la red.

Detección de pings dentro de la red local

A veces, es necesario monitorear también el tráfico ICMP dentro de la red interna para evitar escaneos ICMP o ataques de reconocimiento dentro de la misma red. La siguiente regla lo permite:

  • 10.0.0.0/24: Esto define que solo estamos interesados en el tráfico dentro de la red interna con esta subred.
  • itype:8: Paquetes de solicitud de ping.

Detección de tráfico FTP en la red

El uso de FTP sin cifrado puede exponer contraseñas e información sensible en la red. Con Suricata, podemos detectar y alertar sobre el uso de este protocolo.

  • alert tcp any any -> any 21: Estamos detectando tráfico TCP con destino al puerto 21 (FTP).
  • flow:to_server,established: La conexión ya debe estar establecida para activar la alerta

Detección de conexiones HTTP no autorizadas

Si deseas monitorear el tráfico HTTP y detectar posibles accesos no autorizados, puedes usar una regla que active alertas cada vez que un equipo intente conectarse a un servidor HTTP en la red:

Esta regla simplemente detecta cualquier conexión a puertos HTTP (puerto 80) en la red y genera una alerta.

Detección de tráfico SSH no autorizado
Detección de ataques de fuerza bruta

Si quieres detectar intentos de autenticación fallidos repetidos en un corto período de tiempo (indicativo de un ataque de fuerza bruta), puedes usar un umbral:

Cómo validar reglas en Suricata: Ejecución y Pruebas

Una vez que hayas creado tus reglas y las hayas colocado en el archivo adecuado, es esencial probarlas para asegurarte de que funcionan correctamente. A continuación, te mostramos cómo ejecutar las reglas y simular el tráfico necesario para disparar las alertas.

Validar y recargar las reglas personalizadas de Suricata

  • Verificar la sintaxis de las reglas:

Antes de recargar Suricata, es una buena práctica validar la sintaxis de las reglas personalizadas para asegurarse de que no contienen errores. Para hacer esto, ejecuta:

Esto ejecutará un test de Suricata y mostrará los posibles errores en las reglas o configuraciones.

  • Recargar Suricata:

Si todo está correcto, debes reiniciar o recargar Suricata para aplicar las nuevas reglas. Puedes hacerlo ejecutando:

O bien, recargarlo sin reiniciar:

De esta forma, Suricata recargará todas las reglas incluyendo las personalizadas sin tener que detenerse.

Simular actividades para disparar las reglas personalizadas de Suricata

A continuación, te mostramos cómo provocar algunas actividades en la red que disparen las reglas que creaste en el archivo custom.rules.

1. Simular un Escaneo de Puertos

Para simular un escaneo de puertos TCP desde un equipo en la red, puedes utilizar herramientas como Nmap. Si ejecutas un escaneo desde una máquina contra otra máquina en la misma red, la regla configurada para detectar escaneos de puertos se activará.

Ejemplo:

Este comando escaneará los primeros 1000 puertos de la IP objetivo. Si configuraste la regla para detectar escaneos de puertos, deberías recibir una alerta en los logs de Suricata.

2. Simular un Ping (ICMP)

Puedes simular una solicitud de ping desde un equipo en la red utilizando el comando ping para disparar la regla que configuraste para detectar tráfico ICMP.

Ejemplo:

Esta acción generará un tráfico ICMP que Suricata debería detectar y generar una alerta.

3. Simular una conexión SSH no Autorizada

Para probar la regla que detecta tráfico SSH no autorizado, puedes intentar establecer una conexión SSH con cualquier máquina en la red.

Ejemplo:

Si la máquina de destino tiene el puerto 22 abierto y se permite tráfico SSH, la regla que configuraste para detectar SSH debería generar una alerta.

Verificación de las alertas personalizadas de Suricata

Después de simular las actividades sospechosas en la red, puedes verificar si Suricata ha detectado las actividades revisando los archivos de log o las alertas.

  • Archivos de Log:

Las alertas generadas por Suricata se registran en el archivo de logs predeterminado, que suele estar en:

También puedes verificar el archivo eve.json para obtener información más detallada:

Puedes usar grep para buscar alertas específicas. Por ejemplo, si quieres ver solo las alertas relacionadas con el escaneo de puertos:

  • Herramientas de Monitoreo:

Además, es posible integrar Suricata con herramientas de monitoreo de logs como ELK Stack (Elasticsearch, Logstash y Kibana) para una visualización más amigable de las alertas.

En resumen, en esta entrada hemos visto varios ejemplos de cómo crear reglas manuales para detectar tráfico sospechoso, pero Suricata es altamente flexible, lo que te permite ajustar las reglas a las necesidades específicas de tu red. También es recomendable mantener actualizadas las reglas descargadas de fuentes como Emerging Threats, para estar protegido contra las últimas amenazas conocidas.

suricata-como-crear-y-testear-reglas-personalizadas-1

ENTRADAS RELACIONADAS CREACION SOC OPENSOURCE

Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

powershell-script-para-extraer-metadatos-fotos-con-exiftool-5

Powershell: Script para extraer metadatos fotos con ExifTool

Powershell: Script para extraer metadatos fotos con ExifTool Hoy os voy a enseñar una entrada …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dieciseis + diecinueve =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu