Configurar Snort IDS y crear reglas

Snort es un sistema de detección de intrusos de código abierto que puedes utilizar en tus sistemas Linux. Este tutorial repasará la configuración básica de Snort IDS y le enseñará a crear reglas para detectar diferentes tipos de actividades en el sistema.

Para este tutorial la red que utilizaremos es: 10.0.0.0/24. Edita tu archivo /etc/snort/snort.conf y reemplace el «any» al lado de $HOME_NET con la información de su red como se muestra en la captura de pantalla de ejemplo a continuación:

Alternativamente también puede definir direcciones IP específicas para monitorear separadas con coma entre ellas como se muestra en esta captura de pantalla:

Ahora vamos a empezar y ejecutar este comando en la línea de comandos:

# snort -d -l /var/log/snort/ -h 10.0.0.0/24 -A console -c /etc/snort/snort.conf

Donde:
d= indica a snort que muestre los datos
l= determina el directorio de logs
h= especifica la red a monitorizar
A= indica a snort que imprima las alertas en la consola
c= especifica a Snort el archivo de configuración

Lanzamos un escaneo rápido desde un dispositivo diferente utilizando nmap:

Y veamos lo que ocurre en la consola de snort:

Snort detectó el escaneo, ahora, también desde un dispositivo diferente ataca con DoS usando hping3

# hping3 -c 10000 -d 120 -S -w 64 -p 21 –flood –rand-source 10.0.0.3

El dispositivo que muestra Snort está detectando tráfico malo como se muestra aquí:

Dado que instruimos a Snort para que guardara los registros, podemos leerlos ejecutando:

# snort -r

Introducción a las reglas de Snort

El modo NIDS de Snort funciona en base a reglas especificadas en el archivo /etc/snort/snort.conf.

Dentro del archivo snort.conf podemos encontrar reglas comentadas y no comentadas como se puede ver a continuación:

La ruta de las reglas normalmente es /etc/snort/rules , allí podemos encontrar los archivos de reglas:

Veamos las reglas contra backdoors:

Hay varias reglas para prevenir ataques de puertas traseras, sorprendentemente hay una regla contra NetBus, un troyano que se hizo popular hace un par de décadas, veámosla y explicaré sus partes y cómo funciona:

alert tcp $HOME_NET 20034 -> $EXTERNAL_NET any (msg: «BACKDOOR NetBus Pro 2.0 connection
established»; flow:from_server,established;
flowbits:isset,backdoor.netbus_2.connect; content: «BN|10 00 02 00|»; depth:6; content:»|
05 00|»; depth:2; offset:8; classtype:misc-activity; sid:115; rev:9;)

Esta regla instruye a snort para que alerte sobre conexiones TCP en el puerto 20034 transmitiendo a cualquier fuente en una red externa.

-> = especifica la dirección del tráfico, en este caso desde nuestra red protegida a una externa

msg = instruye a la alerta para que incluya un mensaje específico cuando se muestre

content = busca contenido específico dentro del paquete. Puede incluir texto si está entre » » o datos binarios si está entre | |
depth = intensidad del análisis, en la regla de arriba vemos dos parámetros diferentes para dos contenidos diferentes
offset = indica a Snort el byte inicial de cada paquete para empezar a buscar el contenido
classtype = indica de qué tipo de ataque está alertando Snort

sid:115 = identificador de la regla

Creando nuestra propia regla

Ahora crearemos una nueva regla para notificar sobre las conexiones SSH entrantes. Abra /etc/snort/rules/yourrule.rules, y dentro pega el siguiente texto:

alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg: «SSH incoming»;
flow:stateless; flags:S+; sid:100006927; rev:1;)

Estamos diciendo a Snort que alerte sobre cualquier conexión tcp desde cualquier fuente externa a nuestro puerto ssh (en este caso el puerto por defecto) incluyendo el mensaje de texto «SSH INCOMING», donde stateless indica a Snort que ignore el estado de la conexión.

Ahora, necesitamos añadir la regla que hemos creado a nuestro archivo /etc/snort/snort.conf. Abra el archivo de configuración en un editor y busque el número 7, que es la sección con las reglas. Añade una regla sin comentar como en la imagen de arriba añadiendo:

include $RULE_PATH/yourrule.rules

En lugar de «yourrule.rules», pon el nombre de tu archivo, en mi caso fue test3.rules.

Una vez hecho ejecuta Snort de nuevo y mira lo que pasa.

#snort -d -l /var/log/snort/ -h 10.0.0.0/24 -A console -c /etc/snort/snort.conf

haz un SSH a tu dispositivo desde otro dispositivo y mira lo que ocurre:

Puedes ver que se ha detectado la entrada de SSH.

Con esta lección espero que sepas cómo hacer reglas básicas y utilizarlas para detectar actividad en un sistema. Vea también un tutorial sobre Cómo configurar Snort y empezar a usarlo y el mismo tutorial disponible en español en Linux.lat.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.