
Laboratório Snort 3 IDS → IPS no Kali. Regras de detecção personalizadas + aplicação de iptables contra reconhecimento ICMP, varreduras SYN do Nmap, força bruta FTP do Hydra e backdoor vsftpd 2.3.4 (CVE-2011-2523).
Um ciclo completo de implantação do Snort 3 como Sistema de Detecção de Intrusão (monitoramento passivo) e como Sistema de Prevenção de Intrusão (bloqueio ativo via iptables), validado contra quatro vetores de ataque em uma rede virtual de três máquinas no Kali Linux.
O laboratório demonstra a distinção operacional entre detecção e prevenção executando uma cadeia de ataque idêntica de quatro vetores duas vezes — primeiro contra um IDS que registra mas não pode bloquear, depois contra uma camada IDS + iptables IPS que elimina ataques seletivamente enquanto preserva o tráfego legítimo.
| Componente | Detalhes |
|---|---|
| Analisador / Roteador | Kali Linux — 3 adaptadores: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, host-only), eth2 LAN2 (192.168.50.1, host-only) |
| Atacante | Kali Linux — eth0 na VMnet9 (10.10.10.10) — gateway padrão 10.10.10.1 |
| Alvo | Metasploitable 2 — eth0 na VMnet10 (192.168.50.10) — gateway padrão 192.168.50.1 |
| Versão do Snort | Snort++ 3.12.1.0-0kali1 (instalado no Analisador) |
| Ferramentas de ataque | Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole) |
| Virtualização | VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (ambas host-only) |
Todo o tráfego entre o Atacante e o Metasploitable é forçado a passar pelo Analisador, tornando-o o ponto de estrangulamento natural tanto para monitoramento quanto para aplicação de regras.
┌─────────────────────────┐
│ Analisador / Roteador │
│ 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 │ │
└─────────────────────────┘
Substitua este esboço ASCII por
screenshots/01-network-topology.pngassim que tiver a figura no lugar:Topologia
O laboratório é executado em dois estágios com uma cadeia de ataque idêntica de quatro vetores em cada:
ping para descoberta de hostnmap -sS para enumeração de portas (1000 portas)Estágio 1 (IDS) executa o Snort passivamente no Analisador com cinco regras personalizadas — observe os alertas em tempo real, confirme que a exploração prossegue mesmo assim.
Estágio 2 (IPS) combina o Snort com uma camada de aplicação de regras iptables usando regras de descarte cirúrgicas — confirme que os ataques são bloqueados enquanto o ping ICMP e o login FTP legítimo permanecem funcionais.
MASQUERADE + FORWARD para que o Analisador roteie entre sub-redes e para a WAN — veja scripts/router_config.sh.scripts/ping_check.sh antes de instalar o Snort.O Snort é instalado via gerenciador de pacotes do Kali (sudo apt install snort -y) e configurado em /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 abrange ambas as sub-redes internas para que o Snort trate todo o tráfego entre sub-redes no Analisador como digno de inspeção. alert_fast produz alertas compactos de uma linha (o registro por pacote geraria volume excessivo).
Validação da configuração:
sudo snort -T -c /etc/snort/snort.conf
# Resultado: 652 regras carregadas (5 texto personalizado + 647 embutidas), 0 avisos
Cinco regras em /etc/snort/rules/local.rules (arquivo completo em scripts/local.rules):
| SID | Nome | Gatilho |
|---|---|---|
| 1000001 | Ping ICMP Detectado | Qualquer tráfego ICMP em qualquer direção — captura pings de reconhecimento |
| 1000002 | Tentativa de Conexão FTP | Qualquer conexão TCP para a porta 21 — captura tráfego legítimo e de força bruta |
| 1000003 | Possível Varredura SYN do Nmap | Pacotes TCP com apenas a flag SYN definida (flags:S) — a assinatura de uma varredura half-open |
| 1000004 | Tentativa de Backdoor VSFTPD 2.3.4 | content:":)" na porta FTP 21 — a string exata do gatilho do CVE-2011-2523 |
| 1000005 | Possível Shellcode do Metasploit | `content:" |
O Snort executa em modo passivo em ambas as interfaces internas:
sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
-A alert_fast -l /var/log/snort/
# Observe os alertas em um segundo terminal:
sudo tail -f /var/log/snort/alert_fast.txt
A saída de inicialização confirma que pcap DAQ configured to passive — o Snort vê cada pacote, mas não pode descartar ou modificar nenhum deles.
Após executar scripts/attack_simulator.sh a partir do Atacante:
| Ataque | Detecção | Resultado |
|---|---|---|
| Reconhecimento ICMP | ✅ SID 1000001 — alertas bidirecionais | Ping concluído |
| Varredura SYN do Nmap | ✅ SID 1000003 — milhares de alertas em <1 segundo | 23 portas abertas enumeradas |
| Força bruta FTP Hydra | ✅ SID 1000002 — alertas repetidos de conexão FTP | Credenciais msfadmin:msfadmin quebradas |
| Backdoor vsftpd 2.3.4 | ✅ SID 1000004 — correspondência de conteúdo :) disparada | Shell Meterpreter root obtida |
O IDS detectou tudo e não parou nada. Esta é a lição central do Estágio 1: um IDS funcional sem aplicação de regras é um sistema de alarme, não uma fechadura. Quando um analista de SOC lê os alertas, o atacante já é root.
Uma observação secundária: as regras embutidas do Snort (116:408, 116:414) disparam em tráfego de broadcast DHCP — não é malicioso, mas em uma implantação de produção precisariam de regras de supressão para manter o log de alertas acionável.
A camada IPS é implantada com scripts/ips_setup.sh, que:
-D) para registro contínuo