DNS Open Resolvers em IPv6

Em conjunto com a área de P&D, o LACNIC CSIRT lança o projeto “Resolvedores de DNS abertos / DNS Open Resolvers com IPv6”, para conhecer o estado atual da região, identificar resolvedores abertos e, de forma proativa, alertar e recomendar uma possível correção na configuração deste serviço.

Ter resolvedores de DNS abertos é bastante prejudicial, tanto para quem deixa o serviço aberto quanto para a segurança na internet em geral. Estes servidores são usados como vetor de ataques DDoS por amplificação, já que a partir de uma mensagem de consulta pequena pode ser obtida uma resposta muito maior. Desta forma, esse servidor DNS se torna um amplificador de tráfego muito poderoso, já que suas consultas amplificadas podem ser direcionadas para um IP específico, que receberia todo esse volume de tráfego, causando a indisponibilidade de seus serviços. Para este ataque, o hardware não precisa ser controlado pelo atacante.

Um servidor DNS recursivo apenas deveria responder consultas (queries) de todos os clientes dentro de sua mesma rede, rejeitando qualquer consulta que venha de fora.


Como resolver isso?

É altamente recomendável reconfigurar os servidores e resolvedores de DNS. A seguir, algumas medidas que podem ajudar:

** O servidor deve responder apenas aos seus clientes e não a consultas de IPs que estejam fora de sua rede (no BIND, isso é feito definindo-se um grupo limitado de computadores na regra “allow-query” [“permitir consultas”]). Exemplo:

options {
allow-query {
192.168.196.0/24;
2001:db8::/32;
localhost;
} // end of allow-query
} // end of options

* Atender apenas domínios que fazem parte da sua zona autoritativa (no BIND, isso é feito definindo-se um conjunto limitado de hosts na regra “allow-query” para o servidor geral, mas configurando “allow-query” como “any” para cada zona). Exemplo:

zone “example.com”{
type master;
file “example.com.db”;
allow-query {
192.168.196.0/24;
2001:db8::/32;
localhost;
} // end of allow-query
} // end of zone example.com

* No unbound, pode-se alcançar o mesmo comportamento usando a diretiva access-control (controle de acesso) no arquivo unbound.conf. Ficaria assim:

server:
access-control: 2001:db8::/32 allow

Além disso, se a sua empresa for um ISP, verifique a configuração de sua rede e não permita que o spoofed traffic (que finge ser de endereços IP externos) saia da sua rede. Redes e equipamentos que permitem spoofed traffic (tráfego com endereços IP falsos) tornam este e outros tipos de ataques possíveis.

Como identificar um resolvedor de DNS aberto com IPv6?

Identificar resolvedores ou servidores de DNS abertos no universo IPv4 é muito simples. Como o espaço do IPv4 não é muito grande (2**32), é relativamente fácil executar esses testes de endereço IPv4 em endereços IPv4.
No universo IPv6, é praticamente impossível verificar cada um dos endereços IP e executar um teste de resolvedor aberto, uma vez que o teste poderia durar milhares de anos e provavelmente seria de pouca utilidade.

O LACNIC gerencia um servidor chamado Root Server Reverso, especificamente a letra “D”, ou seja, d.ip6-servers.arpa. Um grande número de consultas para endereços IP inversos da região do LACNIC é feito através deste servidor. Em geral, este servidor APENAS recebe consultas de servidores DNS. É aqui que os endereços IPv6 dos DNS que fazem consultas são obtidos.

A identificação é feita consultando um nome de domínio nos servidores DNS. Caso o servidor DNS responda com uma resposta válida, será considerado resolvedor aberto. Se, pelo contrário, ele responder com uma rejeição (“query refused”) ou se simplesmente apresentar erro de time out, está bem configurado, não sendo portanto um resolvedor aberto.