SECURITY LABSNORT 3
GUÍA TÉCNICA · 2026

Snort 3.
Detecta. Analiza.
Protege.

Una guía práctica y visual para construir tu primer sistema de detección y prevención de intrusiones con Snort.

root@security-lab:~● ONLINE
$ snort -V

   ,,_     -._
  /   \   /   \\
 /     \ /     \\
Snort 3.1.82.0
Commencing packet processing
ENGINE READY◉ 0 threats
IDS / IPSNETWORK SECURITYOPEN SOURCELINUX
01
FUNDAMENTOS

Entender Snort antes de configurarlo

Snort es un sistema de detección y prevención de intrusiones (IDS/IPS) de código abierto. Inspecciona el tráfico de red en tiempo real, compara los paquetes con reglas y genera eventos cuando encuentra patrones sospechosos.

IDS

Detecta actividad que coincide con reglas y genera eventos o alertas. Observa, registra y avisa sin interrumpir el tráfico.

DETECCIÓN PASIVA

IPS

Puede intervenir sobre el tráfico cuando Snort está desplegado inline y la acción está configurada para prevención.

PREVENCIÓN ACTIVA

Sniffer

Permite observar paquetes y validar qué tráfico llega realmente a una interfaz antes de escribir una regla.

VISIBILIDAD
TRÁFICO→CAPTURA→DECODIFICACIÓN→INSPECCIÓN→REGLAS→ALERTA / PREVENCIÓN
△
Clave: ejecutar Snort sobre una interfaz normal no significa automáticamente que pueda bloquear tráfico. El modo IPS requiere una ruta inline y una configuración adecuada.
02
PUESTA EN MARCHA

Instalación y primer arranque

Trabaja en una máquina virtual o una red de laboratorio. La instalación puede variar según la distribución; estos comandos muestran un flujo habitual para Debian/Ubuntu.

Instalar dependencias

BASH · UBUNTU / DEBIAN
sudo apt update
sudo apt install -y snort3 snort3-doc
snort -V
sudo ip addr

Lista de comprobación

Identificar la interfaz correcta
Conocer la red protegida
Tener permisos de administrador
Preparar una red de pruebas
i
Antes de continuar: anota el nombre de tu interfaz con ip addr. En los ejemplos se usa eth0, pero en tu sistema podría ser ens33, enp0s3 o similar.
03
OPERACIÓN

Comandos esenciales

COMANDOFUNCIÓN
snort -VVer la versión instalada
snort -hMostrar ayuda
snort -c archivoUsar una configuración concreta
snort -i eth0Seleccionar interfaz
snort -TValidar configuración
COMANDOS DE LABORATORIO
# Validar configuración
sudo snort -c /etc/snort/snort.lua -T

# Ejecutar sensor
sudo snort -c /etc/snort/snort.lua -i eth0

# Observar tráfico con más detalle
sudo snort -i eth0 -dev
04
CONFIGURACIÓN

El archivo snort.lua

Snort 3 utiliza Lua para su configuración. Una ruta frecuente es /etc/snort/snort.lua. El archivo conecta la red protegida, los inspectores, los outputs y los conjuntos de reglas.

HOME_NET

La red protegida que quieres vigilar.

EXTERNAL_NET

Tráfico externo respecto a la red protegida.

INSPECTORS

Componentes que analizan protocolos y tráfico.

OUTPUTS

Cómo se generan y presentan los eventos.

RULES

Dónde se cargan los conjuntos de reglas.

CONFIGURAR · VALIDAR · REPETIR
sudo nano /etc/snort/snort.lua

# Siempre validar después de editar
sudo snort -c /etc/snort/snort.lua -T
05
DETECCIÓN

Anatomía de una regla

Una regla define qué tráfico buscar y qué acción ejecutar cuando se encuentra una coincidencia. Empieza con reglas simples y añade contexto poco a poco.

REGLA · ICMP
alert icmp any any -> any any (
    msg:"LAB - ICMP detectado";
    sid:1000001;
    rev:1;
)
alertAcción de detección / alerta
icmpProtocolo que inspeccionar
any anyIP y puerto de origen
->Dirección del tráfico
msgMensaje descriptivo del evento
sidIdentificador único de la regla
revNúmero de revisión

Reglas base para practicar

# ICMP
alert icmp any any -> any any (msg:"LAB - ICMP detectado"; sid:1000001; rev:1;)

# HTTP
alert tcp any any -> any 80 (msg:"LAB - HTTP detectado"; sid:1000002; rev:1;)

# SSH
alert tcp any any -> any 22 (msg:"LAB - SSH detectado"; sid:1000003; rev:1;)

# DNS
alert udp any any -> any 53 (msg:"LAB - DNS detectado"; sid:1000004; rev:1;)
06
PRECISIÓN

Opciones de regla

content
content:"admin";

Busca una cadena concreta.

nocase
nocase;

Ignora mayúsculas y minúsculas.

flow
flow:to_server,established;

Refina dirección y estado.

offset
offset:0;

Controla dónde empieza la búsqueda.

depth
depth:10;

Limita el área inicial.

within
distance:0;
within:20;

Relaciona posiciones.

REGLA COMBINADA · HTTP
alert tcp any any -> any 80 (
    msg:"LAB - HTTP contiene admin";
    flow:to_server,established;
    content:"admin";
    nocase;
    sid:1000100;
    rev:1;
)
i
Consejo: usa flow:to_server,established cuando solo quieras inspeccionar solicitudes que van hacia el servidor y evitar coincidencias en tráfico de respuesta.
07
METODOLOGÍA

Flujos de trabajo

Crear una regla

01Definir objetivo
02Elegir protocolo
03Origen / destino
04Añadir condiciones
05SID + REV
06Validar
07Probar

Diagnosticar una alerta ausente

¿Hay tráfico?→¿Interfaz correcta?→¿Regla cargada?→¿Output correcto?
CICLO DE APRENDIZAJE
OBSERVAR → CAPTURAR → ENTENDER EL PROTOCOLO
       ↓
DEFINIR DETECCIÓN → CREAR REGLA → VALIDAR CON -T
       ↓
GENERAR TRÁFICO CONTROLADO → REVISAR ALERTA → AJUSTAR → DOCUMENTAR
08
MODO DETECCIÓN

Snort como IDS

INTERNET
↓
SWITCH / RED
↓
SNORT IDS
↓
ALERTAS

En modo IDS, Snort recibe una copia del tráfico, lo analiza y registra coincidencias. No se coloca en el camino crítico de los paquetes, por lo que es una forma segura de comenzar.

EJECUTAR SENSOR
sudo snort -c /etc/snort/snort.lua -i eth0

# Desde un host autorizado, generar tráfico de prueba
ping 192.168.1.20
09
MODO PREVENCIÓN

Snort como IPS

LADO WAN
↓
SNORT IPS · INLINE
↓
LADO LAN
↓
SERVIDORES

Para bloquear, Snort debe estar inline y la acción debe ser preventiva. Cambiar únicamente alert por drop no convierte una instalación IDS en IPS: la topología también debe permitir que Snort intercepte el tráfico.

SOLO EN LABORATORIO
drop icmp any any -> any any (
    msg:"LAB - ICMP bloqueado";
    sid:1000200;
    rev:1;
)
!
Importante: prueba primero con alert. Una regla drop puede cortar conectividad. Úsala únicamente en una red de laboratorio o infraestructura que controles.
10
OBSERVABILIDAD

Logs y alertas

REVISAR EVENTOS
sudo ls -lah /var/log/snort/
sudo tail -f /var/log/snort/alert.fast
grep -i "icmp" /var/log/snort/*
grep -i "ssh" /var/log/snort/*
pgrep -a snort
i
El nombre exacto del archivo de alerta depende de los outputs configurados en tu instalación. Si no encuentras eventos, revisa primero la configuración y valida con -T.
11
RESPUESTA

Snort + iptables

Snort detecta y analiza. iptables aplica filtros en el host. Snort por sí solo no modifica iptables automáticamente; juntos forman un flujo de detección y respuesta manual.

CADENAUSO
INPUTTráfico que entra al propio equipo
OUTPUTTráfico generado por el propio equipo
FORWARDTráfico que atraviesa el equipo
FIREWALL · LINUX
# Verificar reglas y contadores
sudo iptables -L -n -v
sudo iptables -S

# Registrar y bloquear una IP de laboratorio
sudo iptables -A INPUT -s 192.0.2.50 -j LOG --log-prefix "IPTABLES-BLOCK: "
sudo iptables -A INPUT -s 192.0.2.50 -j DROP

# Verificar contadores
sudo iptables -L INPUT -n -v --line-numbers
△
Precaución: una política DROP mal aplicada puede dejarte sin SSH. En remoto, mantén una sesión de administración abierta y define siempre cómo revertir el cambio.
12
PRÁCTICA GUIADA

Laboratorios defensivos

01

Detectar ICMP

Crea una regla alert para ping, valida con -T y genera tráfico desde un host autorizado.

Ver procedimiento
02

Detectar SSH

Observa conexiones al puerto 22 y comprueba el evento en los logs.

Ver procedimiento
03

Afinar HTTP

Añade content, nocase y flow para reducir falsos positivos.

Ver procedimiento
04

Respuesta manual

Analiza una alerta y aplica una regla iptables específica en el laboratorio.

Ver procedimiento
OBSERVARCAPTURARREGLAVALIDARALERTARDOCUMENTAR
13
DIAGNÓSTICO

Troubleshooting

No hay alertas

¿La interfaz es correcta? ¿Hay tráfico? ¿La regla está cargada? ¿El output apunta al archivo correcto?

La configuración falla

Ejecuta snort -T, revisa la ruta de snort.lua y corrige una cosa cada vez.

Demasiados falsos positivos

Haz la regla más específica con flow, content, puertos, dirección y contexto.

El ping sigue funcionando

Estás en IDS o fuera de una ruta inline. Cambiar alert por drop no basta por sí solo.

Perdí acceso SSH

Recupera la consola de la VM o elimina la regla por número antes de continuar.

14
DISEÑO

Arquitecturas de despliegue

01 · SPAN / TAP

IDS fuera de banda

Un switch envía una copia del tráfico a Snort. Es fácil de desplegar y no interrumpe la red.

02 · INLINE

IPS en línea

El tráfico atraviesa Snort. Permite prevenir, pero requiere alta disponibilidad y pruebas cuidadosas.

03 · HOST

Sensor local

Snort inspecciona tráfico de una máquina para aprendizaje y detecciones específicas.

16
APLICACIONES

Casos de uso reales

Snort puede cubrir desde un laboratorio educativo hasta sensores distribuidos en una red empresarial. El objetivo siempre es convertir señales de red en decisiones accionables.

Segmentación

Vigila el tráfico entre VLAN, DMZ y servidores críticos. Detecta protocolos que no deberían cruzar una frontera.

CONTROL ESTE-OESTE

Threat hunting

Busca patrones de escaneo, beaconing, DNS extraño y conexiones salientes no autorizadas.

INVESTIGACIÓN

Homelab / formación

Construye tráfico reproducible, escribe reglas locales y aprende a interpretar eventos sin afectar producción.

APRENDIZAJE
A

Servidor web

Detecta solicitudes a rutas sensibles, métodos inesperados, user-agents sospechosos y cargas con patrones conocidos.

Ver reglas
B

DNS corporativo

Observa consultas a dominios poco frecuentes, exceso de NXDOMAIN y tipos de consulta no esperados.

Ver protocolo
C

Acceso remoto

Controla SSH/RDP, intentos repetidos, conexiones fuera de horario y cambios en el patrón habitual.

Ver buenas prácticas
17
INSPECCIÓN

Protocolos y señales que conviene observar

PROTOCOLOSEÑALES ÚTILES
ICMPPing, tipos inesperados, frecuencia anómala
DNSConsultas, respuestas, NXDOMAIN y dominios
HTTPMétodo, URI, cabeceras y contenido
TLSSNI, versión, certificados y destinos
SSHConexiones, negociación y frecuencia
TCPFlags, puertos, estados y escaneos
i
Visibilidad antes que intuición: captura una muestra de tráfico autorizado y confirma cómo está codificado el protocolo antes de elegir content, pcre o un inspector.
18
PRECISIÓN

Más reglas para tu colección local

Usa SID privados altos para reglas propias, mensajes consistentes y revisiones incrementales. Ajusta cada ejemplo a tu red y evita alertar sobre tráfico que no puedes interpretar.

COLECCIÓN LOCAL · EJEMPLOS EDUCATIVOS
# Escaneo TCP SYN hacia un servidor
alert tcp any any -> $HOME_NET any (
    msg:"LAB - posible escaneo SYN";
    flags:S;
    flow:stateless;
    detection_filter:track by_src, count 10, seconds 5;
    sid:1001001; rev:1;
)

# DNS con consulta a un dominio de laboratorio
alert udp $HOME_NET any -> any 53 (
    msg:"LAB - consulta DNS observada";
    dns.query;
    content:"example"; nocase;
    sid:1001002; rev:1;
)

# HTTP con método sensible
alert tcp any any -> $HOME_NET 80 (
    msg:"LAB - método HTTP DELETE";
    flow:to_server,established;
    content:"DELETE"; http_method;
    sid:1001003; rev:1;
)

# Patrón PCRE: cuidado con el coste
alert tcp any any -> $HOME_NET 80 (
    msg:"LAB - patrón URI sensible";
    flow:to_server,established;
    http_uri; pcre:"/\/(admin|backup|debug)/Ui";
    sid:1001004; rev:1;
)
flagsFiltra banderas TCP concretas.
detection_filterReduce ruido por frecuencia.
http_methodLimita el contenido a métodos HTTP.
http_uriInspecciona la URI normalizada.
pcreExpresiones regulares con mayor coste.
metadataAñade contexto para clasificar.
△
Rendimiento: empieza con opciones específicas y usa PCRE solo cuando una combinación de inspectores y contenido no sea suficiente.
19
OPERACIÓN

Rendimiento, ruido y calidad de alertas

Checklist de optimización

01Definir HOME_NET
02Eliminar reglas duplicadas
03Restringir puertos
04Usar flow
05Medir eventos/min
06Revisar falsos positivos
07Documentar cambios
MEDIR · COMPARAR · AJUSTAR
# Contar eventos rápidamente
sudo grep -h "alert" /var/log/snort/* | wc -l

# Revisar procesos y consumo
pgrep -a snort
top -p $(pgrep -o snort)

# Registrar una captura de laboratorio
sudo tcpdump -ni eth0 -c 100 -w laboratorio.pcap
i
Calidad: una alerta útil explica qué ocurrió, dónde, cuándo y por qué la regla considera relevante el evento. El volumen por sí solo no es una métrica de éxito.
20
GOBERNANZA

Buenas prácticas para operar Snort

Separar laboratorio y producción

Prueba reglas nuevas en una interfaz o sensor aislado. Promueve cambios después de revisar falsos positivos, consumo y procedimiento de reversión.

Proteger la configuración

Limita permisos sobre snort.lua y los archivos de reglas. Versiona cambios y evita incluir secretos o datos sensibles en mensajes de alerta.

Sincronizar tiempo y contexto

Usa NTP, nombres de sensor, etiquetas de entorno y una convención de SID. Sin tiempo y contexto, correlacionar eventos resulta mucho más difícil.

Responder sin automatizar a ciegas

Define severidad, propietario, evidencia y reversión. Un bloqueo automático debe tener excepciones, monitorización y una salida segura.

!
Uso responsable: genera tráfico de prueba solo contra activos propios o autorizados. No uses estas reglas para escanear, bloquear o interferir con redes de terceros.
21
REFERENCIA RÁPIDA

Chuleta de bolsillo

Validarsudo snort -c /etc/snort/snort.lua -T
Ejecutarsudo snort -c /etc/snort/snort.lua -i eth0
Logssudo tail -f /var/log/snort/alert.fast
Interfazip addr · ip link · ip route
△
Regla de oro: primero observa, después detecta, luego valida. La prevención solo debe llegar cuando entiendes la topología y tienes un plan de reversión.