Prólogo: O Dia em que o Relógio Quase Matou a Internet
Era 3 da manhã de uma quarta-feira aparentemente tranquila. O alerta de CPU do meu servidor principal disparou – não por pico de vendas, mas por uma anomalia no tráfego de entrada. O gráfico mostrava um padrão familiar para quem já lidou com ataques reflexivos, mas com uma assinatura estranha: picos de 12 Gbps saindo de portas UDP 123, todas apontando para o mesmo alvo: um servidor NTP público na Tailândia.
O ataque não vinha de fora. Vinha de dentro. Meu próprio VPS, configurado como servidor NTP interno, havia sido sequestrado por uma variação de malware que explorava a falta de rate-limiting. Em 40 minutos, aquele único nó ec2-micro estava refletindo tráfego amplificado 556x contra si mesmo, derrubando o load balancer e quase matando o serviço de DNS.
Foi o dia que aprendi: você não protege servidores. Você protege o caos que eles podem gerar sem sua permissão.
Parte I: O Dossiê do Espectro – NTP DDoS Amplification em VPS de Baixo Custo
1. O Vetor Ignorado: Por que todo mundo esquece do UDP 123?
Você já configurou um servidor NTP nos últimos 5 anos? Se sim, provavelmente deixou a porta UDP 123 aberta – e sem qualquer proteção contra spoofing. A técnica é clássica: um atacante forja o IP de origem para o da vítima, envia uma requisição monlist (agora obsoleta, mas ainda funcional em versões antigas) ao servidor NTP, e recebe uma resposta 556 vezes maior. O problema? Em VPS com IP flutuante e firewalls genéricos, essa porta é frequentemente liberada por padrão em painéis como CWP ou VestaCP.
Dado lógico: Um único servidor NTP mal configurado, com 1 Gbps de uplink, pode gerar até 556 Gbps de tráfego refletido. Sim, quinhentos e cinquenta e seis. Agora multiplique por 14 data centers.
2. O Caso Reverso: Quando o Atacante É o Seu Próprio Servidor
No meu caso, o malware não era um bot DDoS comum. Era um script Go que utilizava a biblioteca ntp para enviar requisições READVAR com IP spoofado. O pior: ele se auto-hospedava em um container Docker com recurso de rede host, ignorando completamente as regras de firewall do painel. A solução? Não foi aumentar a banda, mas sim implementar mitigação preditiva baseada em anomalias de taxa de pacotes por segundo (PPS) na porta NTP.
Parte II: O Manifesto Técnico – Como Construir um Sistema Imune a Reflexão
1. Rate-Limiting por IP: A Barreira Invisível
No nível do kernel, use iptables com limite de conexões por segundo:
iptables -A INPUT -p udp --dport 123 -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j DROP
Isso impede requisições em massa, mas cuidado: teste com tráfego real de clientes NTP. Um burst de 20 pacotes é suficiente para sincronização de horário.
2. Desativação de Serviços Reflexivos
No /etc/ntp.conf, remova a diretiva restrict default kod nomodify notrap nopeer noquery e adicione restrict default ignore. Melhor ainda: use ntpd -4 com bind explícito a um IP interno. Em servidores VPS, nunca exponha NTP para a WAN a menos que seja estritamente necessário e com ACLs.
3. Monitoramento Preditivo com PPS Anômalo
Use ntpq -c rv para monitorar o número de requisições. Crie alertas no Prometheus com a métrica ntp_packets_received_total (exportada pelo ntp_exporter). Um aumento de 300% em 30 segundos é sinal de ataque reflexivo – mesmo que o tráfego pareça legítimo.
Epílogo: O Custo da Ignorância
Após o incidente, migrei para um VPS com proteção DDoS integrada (Cloudflare Spectrum + NTP proxy). O custo dobrou, mas o peace of mind não tem preço. Se você tem um servidor NTP público em um VPS de $5/mês, está sentado em uma bomba-relógio. Desligue-o agora. Use pools públicos com cache local, mas nunca como servidor aberto.
O bastidor é sujo, mas a lição é clara: em infraestrutura, o que você não vê pode te derrubar mais rápido que um DDoS de 1 Tbps. Porque o ataque não vem de fora. Vem do seu próprio relógio.