
Laboratorio de Snort 3 IDS → IPS en Kali. Reglas de detección personalizadas + aplicación de iptables contra reconocimiento ICMP, escaneos SYN de Nmap, fuerza bruta FTP de Hydra y backdoor de vsftpd 2.3.4 (CVE-2011-2523).
Un despliegue completo de Snort 3 como Sistema de Detección de Intrusiones (monitoreo pasivo) y como Sistema de Prevención de Intrusiones (bloqueo activo mediante iptables), validado contra cuatro vectores de ataque en una red virtual de tres máquinas sobre Kali Linux.
El laboratorio demuestra la distinción operativa entre detección y prevención ejecutando una cadena de ataque idéntica de cuatro vectores dos veces: primero contra un IDS que registra pero no puede bloquear, y luego contra un IDS + capa IPS con iptables que elimina ataques selectivamente mientras preserva el tráfico legítimo.
| Componente | Detalles |
|---|---|
| Analizador / Router | Kali Linux — 3 adaptadores: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, solo anfitrión), eth2 LAN2 (192.168.50.1, solo anfitrión) |
| Atacante | Kali Linux — eth0 en VMnet9 (10.10.10.10) — puerta de enlace predeterminada 10.10.10.1 |
| Objetivo | Metasploitable 2 — eth0 en VMnet10 (192.168.50.10) — puerta de enlace predeterminada 192.168.50.1 |
| Versión de Snort | Snort++ 3.12.1.0-0kali1 (instalado en el Analizador) |
| Herramientas de ataque | Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole) |
| Virtualización | VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (ambos solo anfitrión) |
Todo el tráfico entre el Atacante y Metasploitable se fuerza a través del Analizador, convirtiéndolo en el punto de estrangulamiento natural tanto para el monitoreo como para la aplicación.
┌─────────────────────────┐
│ Analizador / Router │
│ Kali + Snort 3 │
│ │
Atacante Kali ──VMnet9──┤ eth1: 10.10.10.1 │
10.10.10.10 │ │
│ eth0: 192.168.10.143 ───┼──> WAN (NAT)
│ │
Metasploitable 2 ─VMnet10┤ eth2: 192.168.50.1 │
192.168.50.10 │ │
└─────────────────────────┘
Reemplace este boceto ASCII con
screenshots/01-network-topology.pnguna vez que tenga la figura en su lugar:Topology
El laboratorio se ejecuta en dos etapas con una cadena de ataque idéntica de cuatro vectores en cada una:
ping para descubrimiento de hostnmap -sS para enumeración de puertos (1000 puertos)Etapa 1 (IDS) ejecuta Snort pasivamente en el Analizador con cinco reglas personalizadas — observe las alertas en tiempo real, confirme que la explotación continúa de todos modos.
Etapa 2 (IPS) combina Snort con una capa de aplicación de iptables utilizando reglas de descarte quirúrgicas — confirme que los ataques son bloqueados mientras que el ping ICMP y el inicio de sesión FTP legítimo permanecen funcionales.
MASQUERADE + FORWARD para que el Analizador enrute entre subredes y hacia la WAN — consulte scripts/router_config.sh.scripts/ping_check.sh antes de instalar Snort.Snort se instala a través del administrador de paquetes de Kali (sudo apt install snort -y) y se configura en /etc/snort/snort.conf:
HOME_NET = "10.10.10.0/24,192.168.50.0/24"
EXTERNAL_NET = "any"
ips = {
enable_builtin_rules = true,
include = "/etc/snort/rules/local.rules",
variables = default_variables
}
alert_fast = { file = true, packet = false }
HOME_NET cubre ambas subredes internas para que Snort trate todo el tráfico entre subredes en el Analizador como digno de inspección. alert_fast produce alertas compactas de una línea (el registro por paquete generaría un volumen excesivo).
Validación de configuración:
sudo snort -T -c /etc/snort/snort.conf
# Resultado: 652 reglas cargadas (5 personalizadas de texto + 647 integradas), 0 advertencias
Cinco reglas en /etc/snort/rules/local.rules (archivo completo en scripts/local.rules):
| SID | Nombre | Disparador |
|---|---|---|
| 1000001 | ICMP Ping Detectado | Cualquier tráfico ICMP en cualquier dirección — captura pings de reconocimiento |
| 1000002 | Intento de Conexión FTP | Cualquier conexión TCP al puerto 21 — captura tráfico legítimo y de fuerza bruta |
| 1000003 | Posible Escaneo SYN de Nmap | Paquetes TCP con solo el flag SYN establecido (flags:S) — la firma de un escaneo de media apertura |
| 1000004 | Intento de Puerta Trasera VSFTPD 2.3.4 | content:":)" en el puerto FTP 21 — la cadena exacta de activación de CVE-2011-2523 |
| 1000005 | Posible Shellcode de Metasploit | `content:" |
Snort se ejecuta en modo pasivo en ambas interfaces internas:
sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
-A alert_fast -l /var/log/snort/
# Observe las alertas en una segunda terminal:
sudo tail -f /var/log/snort/alert_fast.txt
La salida de inicio confirma pcap DAQ configured to passive — Snort ve cada paquete pero no puede descartar ni modificar ninguno.
Después de ejecutar scripts/attack_simulator.sh desde el Atacante:
| Ataque | Detección | Resultado |
|---|---|---|
| Reconocimiento ICMP | ✅ SID 1000001 — alertas bidireccionales | Ping completado |
| Escaneo SYN de Nmap | ✅ SID 1000003 — miles de alertas en <1 segundo | 23 puertos abiertos enumerados |
| Fuerza bruta FTP con Hydra | ✅ SID 1000002 — alertas repetidas de conexión FTP | Credenciales msfadmin:msfadmin descifradas |
| Puerta trasera vsftpd 2.3.4 | ✅ SID 1000004 — coincidencia de contenido :) disparada | Shell Meterpreter como root obtenida |
El IDS detectó todo y no detuvo nada. Esta es la lección central de la Etapa 1: un IDS funcional sin aplicación es un sistema de alarma, no una cerradura. Para cuando un analista de SOC lee las alertas, el atacante ya es root.
Una observación secundaria: las reglas integradas de Snort (116:408, 116:414) se disparan con tráfico de difusión DHCP — no es malicioso, pero en un despliegue de producción necesitarían reglas de supresión para mantener el registro de alertas accionable.
La capa IPS se despliega con scripts/ips_setup.sh, que: