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