Monitoreo de tráfico con Snort

¿Qué es Snort?

En el artículo de hoy, vamos a adentrarnos en el mundo de la detección de intrusiones y la prevención de amenazas mediante el uso de Snort( Como usar Snort ), un popular sistema de prevención de intrusiones de red (NIDS). Vamos a ver cómo instalarlo, cómo usarlo, algunos comandos clave y cómo configurarlo para enviar alertas por correo electrónico o a través de un bot de Telegram

En el anterior Post vimos como instalar Kali Linux, ahora aprenderemos como monitorear la red

Como instalar Kali Linux

Características de Snort

  • Versatilidad: Snort puede ser configurado como un sniffer de paquetes simple, un logger de paquetes, o como un IDS/IPS completo.
  • Reglas y firmas: Utiliza un sistema de reglas para definir comportamientos maliciosos en el tráfico de red, permitiendo gran flexibilidad y personalización.
  • Compatibilidad: Funciona en diversas plataformas, incluyendo Linux, Windows y Mac OS X.
  • Soporte de la comunidad: Cuenta con una amplia comunidad de usuarios y desarrolladores que contribuyen constantemente con nuevas reglas y configuraciones.
  • Integración con otras herramientas: Se integra con herramientas de análisis de redes y visualización, como Wireshark y BASE (Basic Analysis and Security Engine).

Ventajas de Snort

  • Costo-efectivo: Al ser de código abierto, es gratuito, lo que lo hace accesible para individuos o empresas que no desean o no pueden invertir en soluciones más costosas.
  • Altamente configurable: Permite a los usuarios avanzados escribir y modificar reglas según las necesidades específicas de su entorno de red.
  • Amplia adopción: Siendo uno de los IDS/IPS más utilizados, tiene una gran cantidad de documentación y recursos educativos disponibles.
  • Detección en tiempo real: Capaz de detectar amenazas y actividades sospechosas mientras ocurren, permitiendo respuestas rápidas a incidentes de seguridad.

Desventajas de Snort

  • Complejidad de configuración: Aunque es altamente configurable, esto puede resultar abrumador para usuarios menos experimentados o sin un fondo técnico en seguridad de redes.
  • Consumo de recursos: Puede ser intensivo en recursos, especialmente en redes con mucho tráfico, lo que puede requerir hardware dedicado o bien configurado.
  • Falsos positivos y falsos negativos: Como cualquier sistema basado en reglas, Snort puede generar alertas incorrectas si las reglas no están bien ajustadas a la realidad del tráfico de la red.
  • Mantenimiento de reglas: Requiere una actualización y mantenimiento constantes de las reglas para ser efectivo contra las últimas amenazas, lo cual puede ser un proceso tiempo-intensivo.

Usos comunes de Snort

Snort se usa ampliamente en entornos empresariales para proteger las redes internas de ataques y anomalías. Las empresas suelen integrarlo en sus estrategias de seguridad cibernética para monitorear y responder a incidentes. Además, dado su bajo costo y su flexibilidad, es una opción popular para la investigación y la educación en seguridad informática.

Instalación de Snort

Primero, necesitas tener Snort en tu máquina. Puedes hacerlo fácilmente en sistemas basados en Debian usando el administrador de paquetes APT.

sudo apt-get update
sudo apt-get install snort

Usos de Snort

Snort es increíblemente versátil. Aquí solo algunos de sus usos:

Detección de intrusiones: Snort puede analizar el tráfico de la red en tiempo real y detectar una variedad de ataques y amenazas, como desbordamientos de búfer, los ataques de escaneo de puertos, los ataques CGI, SMB probes, entre otros.

Análisis de tráfico de red: Snort también puede ser utilizado como un analizador de paquetes para inspeccionar en detalle el tráfico de red.

Prevención de intrusiones: Más allá de la detección, Snort también puede configurarse para prevenir intrusiones actuando sobre las alertas que genera.

Comandos de Snort

Aquí algunos de los comandos más útiles para usar Snort:

Para iniciar Snort en modo de detección de intrusión:

snort -q -c /etc/snort/snort.conf -i eth0

Para iniciar Snort en modo de captura de paquetes:

snort -dev -i eth0

leer un archivo de captura de paquetes:

snort -r archivo.pcap

Snort es un sistema de prevención y detección de intrusiones (IDS/IPS) de código abierto muy utilizado. A continuación, te presento algunos de los comandos más comunes y útiles que puedes usar en Snort:

  1. Iniciar Snort en modo de captura de paquetes:
   snort -v

Este comando permite a Snort capturar paquetes y mostrarlos en la consola.

  1. Iniciar Snort en modo detallado:
   snort -vd

Captura los paquetes y muestra más detalles sobre ellos, incluyendo encabezados de enlace de datos.

  1. Iniciar Snort para mostrar paquetes IP:
   snort -vde

Similar al anterior pero incluye encabezados de paquetes Ethernet.

  1. Aplicar un archivo de configuración:
   snort -c /ruta/al/archivo/snort.conf

Ejecuta Snort utilizando la configuración especificada en el archivo snort.conf.

  1. Escribir los registros en un archivo específico:
   snort -l /ruta/de/registro

Guarda los registros de Snort en el directorio especificado.

  1. Leer paquetes de un archivo:
   snort -r archivo.pcap

Permite a Snort leer paquetes desde un archivo pcap en lugar de capturarlos en tiempo real.

  1. Ejecutar Snort en modo de red inline:
   snort -Q -c /ruta/al/archivo/snort.conf -i eth0:eth1

Configura Snort para que opere en modo inline entre dos interfaces, actuando como un firewall.

  1. Especificar una interfaz de red:
   snort -i eth0

Instruye a Snort a escuchar en la interfaz de red especificada.

  1. Generar alertas en tiempo real:
   snort -A console -q -c /ruta/al/archivo/snort.conf

Configura Snort para que muestre alertas en la consola en tiempo real.

  1. Utilizar modo demonio: snort -D Ejecuta Snort en el fondo como un servicio.
  2. Iniciar Snort con salida detallada de alertas: snort -dev -l ./log -c snort.conf Este comando combina varios parámetros para detallar la ejecución, escribir en un log y usar una configuración específica.
  3. Comprobar la configuración de Snort:
    snort -T -c /ruta/al/archivo/snort.conf
    Comprueba la validez de la configuración de Snort y muestra si hay errores.

Estos comandos proporcionan un punto de partida para trabajar con Snort en diferentes contextos y necesidades, desde la simple monitorización de tráfico hasta la operación como un sistema de prevención de intrusiones en tiempo real.

Configuración de alertas para Snort

Deberemos de modificar una línea del archivo de configuración de Snort /etc/snort/snort.conf

# syslog
output alert_syslog: LOG_AUTH LOG_ALERT

Importante: Las alertas no se guardan en /var/log/syslog, sino en /var/log/auth.log

Instalación y configuración de Swatch

watch es una herramienta para monitorizar la actividad de los archivos de registro en tiempo real. Para instalar Swatch, utiliza el siguiente comando:

sudo apt install swatch

Swatch no viene con un archivo de configuración predeterminado, por lo que tendrás que crear uno tú mismo. Este archivo especificará los patrones que Swatch buscará en las alertas de Snort. Para crear el archivo de configuración, usa el siguiente comando

sudo nano /etc/swatchrc

Y añade lo siguiente:

watchfor /Priority\: 3/ 
 exec echo "Snort ha generado una alerta, revisa los logs, " | mail -s "Snort Alert" root@localhost,
 throttle 30:00

Las opciones que hemos añadido son:

  • exec: Ejecuta el comando especificado.
  • throttle: Especifica el tiempo entre notificaciones del mismo tipo en el formato HH:MM:SS.

Configuración de alertas por correo electrónico

Para que las alertas de Snort se envíen a tu correo electrónico personal en lugar de a root@localhost, tendrás que configurar un alias. Para hacer esto, abre el archivo /etc/aliases y añade las siguientes líneas:

mailer-daemon: postmaster
postmaster: root
root: tu_correo@gmail.com

Luego ejecuta el comando newaliases para actualizar la configuración de los alias.

Ejecutando Swatch

Para iniciar Swatch, usa el siguiente comando:

swatch -c /etc/swatchrc -t /var/log/auth.log

Para hacer que Swatch se ejecute en segundo plano, usa el comando:

swatch -c /etc/swatchrc -t /var/log/auth.log --daemon

Y eso es todo, ahora tendrás un sistema de alertas de Snort totalmente funcional. El último paso sería afinar tu archivo swatchrc para que te notifique de manera específica según la gravedad de la alerta generada. Recuerda, mantener segura tu red es un proceso constante, ¡mantente alerta!

Definir reglas con Snort

Formato de una Regla en Snort

Una regla de Snort típicamente consiste en dos partes principales: la cabecera y las opciones. Aquí tienes cómo se estructura una regla básica:

[acción] [protocolo] [IP origen] [puerto origen] -> [IP destino] [puerto destino] (opciones)
  • Acción: define lo que Snort debe hacer cuando se cumple la regla, como alert (alertar), log (registrar), pass (ignorar), drop (descartar).
  • Protocolo: puede ser TCP, UDP, ICMP, entre otros.
  • IP Origen/Destino: define las direcciones IP de origen y destino que aplican a la regla.
  • Puerto Origen/Destino: especifica los puertos de origen y destino para protocolos que usen puertos.
  • Opciones: incluyen los detalles específicos de la detección como el mensaje de alerta, el contenido a buscar en los paquetes, referencias, etc.

Ejemplos de Reglas en Snort

  1. Alertar sobre un intento de escaneo de puertos:
   alert tcp any any -> 192.168.1.0/24 111 (content:"|00|"; msg:"Intento de escaneo RPC"; sid:1000001; rev:1;)
  1. Detectar un intento de acceso a una URL específica:
   alert tcp any any -> any 80 (msg:"Visita a URL maliciosa"; content:"GET /paginamaliciosa.html"; http_uri; sid:1000002; rev:1;)
  1. Bloquear tráfico ICMP desde una dirección IP específica:
   drop icmp 123.456.789.0/24 any -> any any (msg:"ICMP desde IP sospechosa bloqueado"; sid:1000003; rev:1;)
  1. Alertar sobre un posible ataque XSS:
   alert tcp any any -> any 80 (msg:"Posible ataque XSS"; content:"<script>"; http_uri; sid:1000004; rev:1; pcre:"/<script>.*<\/script>/Ui";)
  1. Detectar intentos de SQL Injection:
   alert tcp any any -> any 3306 (msg:"SQL Injection detectado"; content:"' OR '1'='1"; sid:1000005; rev:1;)

Por supuesto, aquí tienes más ejemplos de reglas de Snort que cubren diferentes escenarios de seguridad:

  1. Detectar actividad de Tor en la red:
   alert tcp any any -> any 9001 (msg:"Actividad de Tor detectada"; content:"|16 03|"; depth:2; sid:1000006; rev:1;)
  1. Alerta de intento de descarga de archivo ejecutable:
   alert tcp any any -> any 80 (msg:"Descarga de ejecutable detectada"; flow:to_server,established; content:".exe"; fast_pattern; http_uri; sid:1000007; rev:1;)
  1. Alertar por uso de SSH en puerto no estándar:
   alert tcp any any -> any !22 (msg:"SSH en puerto no estándar"; content:"SSH-"; offset:0; depth:4; sid:1000008; rev:1;)
  1. Detectar accesos múltiples fallidos a un servidor:
   alert tcp any any -> 192.168.1.100 22 (msg:"Múltiples intentos fallidos de login SSH"; flags:S+; threshold:type both, track by_src, count 5, seconds 120; sid:1000009; rev:1;)
  1. Alertar sobre una posible fuga de información mediante FTP:
   alert tcp any any -> any 21 (msg:"Posible fuga de información por FTP"; content:"PASS"; nocase; sid:1000010; rev:1;)
  1. Detectar intentos de explotación de un buffer overflow:
   alert tcp any any -> any 80 (msg:"Explotación de buffer overflow"; content:"|90 90 90 90|"; sid:1000011; rev:1;)
  1. Alertar sobre un posible ataque de fuerza bruta contra bases de datos:
   alert tcp any any -> any 1433 (msg:"Ataque de fuerza bruta SQL Server"; flow:to_server,established; content:"login"; nocase; threshold:type threshold, track by_dst, count 10, seconds 60; sid:1000012; rev:1;)
  1. Detectar tráfico hacia destinos conocidos por hospedar malware:
   alert ip any any -> [malicioso1.com,malicioso2.com] any (msg:"Acceso a sitio de malware"; sid:1000013; rev:1;)
  1. Alerta por detección de tráfico de red cifrado sospechoso:
   alert tcp any any -> any any (msg:"Tráfico cifrado sospechoso detectado"; flow:to_server; content:"|17 03 03|"; depth:3; sid:1000014; rev:1;)
  1. Bloqueo de tráfico a una dirección IP específica tras detección de amenaza:
   drop tcp any any -> 198.51.100.0/24 any (msg:"Tráfico hacia dirección IP peligrosa bloqueado"; sid:1000015; rev:1;)

Estos ejemplos abarcan una variedad de posibles amenazas y demuestran cómo las reglas de Snort pueden ser personalizadas para detectar comportamientos específicos en el tráfico de red. Para implementar estas reglas, deberías colocarlas en el archivo de configuración de Snort, usualmente ubicado en /etc/snort/snort.conf o en algún archivo específico dentro de un directorio de reglas. También es importante mantener actualizado el conjunto de reglas y adaptarlo continuamente a las nuevas amenazas.

CONCLUSIÓN

En conclusión, Snort es una herramienta robusta y flexible para la detección y prevención de intrusiones, que se adapta bien tanto a pequeñas implementaciones como a grandes empresas. Sin embargo, es importante tener en cuenta que requiere una inversión considerable en términos de tiempo y conocimiento técnico para su optimización y mantenimiento. Espero que esta información te haya sido útil. ¡No dudes en volver si tienes más preguntas o necesitas más ayuda! ¡Nos vemos en la proxima!

Deja un comentario

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