segunda-feira, 12 de fevereiro de 2007

DNS e os Ataques de Negação de Serviço

Desde a última semana nós temos ouvido falar de ataques de DoS (ou negação de serviço) e de servidores DNS e, por isso, acho interessante observar o que está acontecendo na rede mundial.

Não é de hoje que sabemos da existência de algumas falhas no protocolo de resolução de nomes na Internet (DNS) que permitem a exploração e a amplificação dos ataques de negação de serviço. Por exemplo, a própria escolha de rodar o DNS sobre o UDP (protocolo não orientado a conexão e que pode ser facilmente forjado para enviar falsas requisições) é uma falha que é muito discutida - veja o draft do Frederico Neves (Registro.br) e do João Damas (ISC) no Working Group dnsop do IETF: "Preventing Use of Recursive Nameservers in Reflector Attacks" e o white paper da Verisign intitulado "Anatomy of Recent DNS Reflector Attacks from the Victim and Reflector Point of View".

A principal questão é: o que eu estou fazendo para me proteger? A resposta desta pergunta pode parecer simples, mas não é. Eu comecei a perceber isso quando me deparei com administradores de DNS que nem ao menos sabiam dizer o que é uma "DNS recursivo". Então, vamos lá:

Um servidor de DNS recursivo está configurado para responder a qualquer requisição de DNS independentemente do IP de origem da requisição ou do tipo da requisição. Esta é uma configuração que permite fazer funcionar qualquer servidor DNS em qualquer rede conectada à Internet - e acredito que muitos servidores estejam configurados desta forma.

O problema começa a ocorrer quando alguém resolve atacar o IP 10.10.10.1 (note: somente como exemplo estamos utilizando endereços inválidos). Este atacante envia uma requisição de DNS com IP de origem 10.10.10.1 para um servidor DNS recursivo qualquer e este servidor responde para o IP 10.10.10.1. Multiplique esta resposta pelo número de servidores que respondem requisições recursivas na Internet e você poderá estimar a quantidade de pacotes (teórica) que pode ser gerada para a vítima do ataque. Mais informações técnicas estão disponíveis no site o CERT.br.

No entanto, adotar políticas de segurança pontuais quando o "burburinho" está acontecendo não é a solução de todos os problemas. Por exemplo, como o endereço IP de requisições de DNS pode ser facilmente falsificado é relativamente fácil fazer um ataque utilizando servidores de DNS recursivos configurados para responder consultas recursivas para um grupo restrito de hosts e atacar um host desse grupo restrito, principalmente se existe um grupo grande de servidores DNS recursivos para este grupo de hosts. Por isso é importante implementar políticas de anti-spoofing no perímetro da rede - ou seja, não é permitido tráfego da parte externa para a parte interna da minha rede com endereço de origem de um host interno.

Apesar da possibilidade remota de fazer um ataque que seja suficientemente grande para prejudicar o funcionamente normal de um servidor vítima, o exemplo acima ilustra perfeitamente como a segurança deve ser implementada em diversas camadas quanto possível e que é absolutamente necessário conhecer todos os aspectos do ambiente que queremos proteger.

Para verificar se o servidor de DNS do seu domínio responde consultas recursivas, basta utilizar um das ferramentas publicamente disponíveis neste site. Destaque para o site DNSreport (ou DNSstuff).

Nenhum comentário: