Tava a ver o Slashdot e deparei-me com uma noticia que dava conta de novos ataques DDoS usando nameservers que permitem recursion. A gravidade desta notícia não está no facto de quem a publicou não saber que este tipo de ataques já há muito que realizam, a gravidade está no facto de passado meia década estes ataques ainda serem possíveis.
O problema tem duas faces, a ignorância dos administradores e a estratégia de políticas de quem desenvolve os daemons dos nameservers pois parece-me que se o BIND tivesse a mesma política que o djbdns de vir por defeito com recursive desligado, hoje em dia não tinhamos milhões de máquinas a permitir terceiros de realizarem DoS.
O ataque é bastante simples, basta spoofar o pacote UDP que faz o dns request ao nameserver com o source IP da vítima, o problema reside no facto de que a resposta possuí 5-6 vezes (em média) o tamanho do pedido.
22:11:48.272469 neon.paradigma.pt.domain > icarus.fccn.pt.domain: [udp sum ok] 19791 [1au] A? ns02.fccn.pt. (41) (DF) [tos 0x10] (ttl 64, id 135, len 69)
22:11:48.358402 icarus.fccn.pt.domain > neon.paradigma.pt.domain: 43710*- 1/2/5 40.192.136.193.in-addr.arpa. (210) (ttl 57, id 5909, len 338)
Uma boa prática de modo a configurar um BIND seguro será algo deste género:
acl rede {
10.0.0.0/24;
69.69.69.64/28;
localhost;
};
options {
....
allow-query { rede; };
allow-recursion { rede; };
....
};
Mas a questão que eu ponho é: será que mesmo os nameservers com recursion desligado não estarão vulneráveis ao mesmo ataque? Que me impede de enviar o dns request spoofado mas em que o pedido é sobre um host em que o nameserver é o authoritative? È que neste processo não interessa qual o tipo de pedido, interessa o tamanho de bytes da resposta.
Já que estamos a falar de nameservers, alguem me explica porque é que a uminho tem uns linuxs a servir o dominio microsoft.pt? Ponham o recursive desligado pelo menos ;)