No caso do DNS, o risco de ataque está em servidores DNS recursivos, quando é permitido que qualquer máquina na Internet realize consultas a estes servidores. Quando há servidores DNS recursivos abertos a consultas para toda a Internet, atacantes podem realizar consultas forjadas, geralmente a domínios falsos publicados pelo próprio atacante, tendo como endereço IP de origem o endereço IP da vítima. Desta forma, os atacantes podem fazer com que as respostas das consultas, que geram um grande volume de dados, sejam todas redirecionadas à máquina vítima do ataque.
Para prevenir que os servidores DNS em sua rede estejam vulneráveis a ataques de DRDoS, é necessário restringir a realização de consultas recursivas apenas à maquinas dentro da sua rede. Em servidores Linux rodando Bind9, isto pode ser feito de duas maneiras:
Executando os servidores DNS autoritativo e recursivo em uma mesma máquina, utilizando views – um exemplo de configuração para este caso é mostrado abaixo( arquivo named.conf):
// lista de redes ou maquinas que podem fazer consultas recursivas acl clientes { localhost; 192.0.2.64/26; 192.0.2.192/28; }; // definicao da view interna -- deve vir antes da view externa // esta view permite recursao para as redes da acl clientes view "interna" { match-clients { clientes; }; recursion yes; // dentro desta view sao colocadas as zonas padrao: // ".", localhost, etc, e qualquer outra zona que // seja somente interna para a rede em questao }; // definicao da view externa -- deve ser a ultima view definida // esta view permite consultas de qualquer rede, mas nao permite // consultas recursivas view "externa" { match-clients { any; }; recursion no; additional-from-auth no; additional-from-cache no; // aqui sao colocadas as zonas master // // zone "exemplo.com.br" { // type master; // file "master/exemplo.com.br"; // }; // aqui sao colocadas as zonas slave // // zone "exemplo.net.br" { // type slave; // file "slave/exemplo.net.br"; // masters { 192.0.2.1; [...;] }; // }; };Executando os servidores DNS autoritativo e recursivo em máquinas distintas – um exemplo de configuração para este caso é mostrado abaixo (arquivo named.conf):
- Servidor autoritativo:
// adicionar as diretivas abaixo dentro da clausula options // para desabilitar recursao no servidor autoritativo options { recursion no; additional-from-auth no; additional-from-cache no; };
- Servidor recursivo:
// colocar a seguinte diretiva na clausula options // permitindo recursao // IMPORTANTE: Esta opcao deve ser usada em conjunto com // regras de firewall ou ACL no serviço conforme mostrado na VIEW (Interna) options { recursion yes; };