Conhecendo o DNS, BIND e sua nova versão 9.4.0

O BIND (Berkeley Internet Name Domain) é uma implementação do lado do servidor que atende ao protocolo de resolução de nomes na Internet. Ele geralmente é instalado em servidores para fins de suportar a resolução de seus próprios domínios, mas pode ter outros usos.

O BIND é a principal implementação de servidor DNS utilizado para resolver nomes de domínios da Internet para endereços IP. Todo endereço, externo à sua máquina, que você digita em um navegador, por exemplo, é muito provavelmente resolvido por um servidor BIND.

O resultado é o número IP do recurso que você requisitou, que agora será buscado através da mais variadas rotas estabelecidas por roteadores que utilizam o protocolo de mesmo nome para transportar o que você requisitou por um caminho de volta.

O conjunto da solução envolve o sofware servidor que atende às requisições de resolução, bibliotecas DNS e ferramentas para verificar se seu servidor BIND está funcionando corretamente.

Os servidores DNS hierarquicamente mais importantes são alvos constantes de ataques, pois uma vez que caiam, parte dos computadores que atendem por seus nomes ficam inacessíveis para uma boa parte da Internet.

Recentemente eu comentei sobre um ataque de forma parcialmente detalhada (acesse o artigo na link que está no final deste post), mas que permite ter uma boa idéia dos estragos que podem ser causados e como esses estragos podem ser feitos.

Basicamente, o que é necessário para manter um servidor DNS rodando é ter o BIND instalado e configurado para responder às requisições de resolução da forma que você desejar. É muito útil mesmo para uma rede interna, com IPs inválidos, pois assim as máquinas poderão identificar umas às outras através do nome, o que é muito mais prático do que ficar digitando IPs, sem precisar recorrer à resoluções baseadas no sistema operacional, como o espalhamento de nomes através do protocolo SMB/CIFS ou servidor WINS, ambas tecnologias da Microsoft.

É assim que ao conectar computadores que rodam Windows em rede, eles, depois de um certo tempo, passam a identificar-se automaticamente. Isso parece normal e obrigatório para usuários comuns, mas a implementação necessária para isto ocorrer foi basicamente explicada acima.

Desta forma, os nomes das máquinas e recursos ficam sob administração centralizada, que resolve grande parte dos problemas da maioria dos ambientes. Existem outras alternativas mais dinâmicas em descentralizadas, baseadas em computação/comunicação peer-to-peer como o nss-mdns através do zeroconf com IPv4LL, que fornece identificação automática, com negociação entre os peers instalados nos computadores, assim como distribuição de IPs em uma rede, sem precisar de configuração alguma, muito menos em um servidor que centraliza tudo. Mas isso é assunto para um próximo post.

Só para elucidar melhor o que significa “um servidor hierarquicamente superior”: o aspecto hierárquico do protocolo DNS se dá através da divisão dos domínios em partes, como em http://hypercast.info, a última parte corresponde ao domínio mais abragente, e um dos servidores DNS raíz (root-server) responde por ele, informando o IP de um outro servidor DNS, que este, por sua vez, tem autoridade para responder sobre o sub-domínio hypercast de info. Neste caso, o servidor DNS do hypercast indica o IP do servidor web que hospeda este blog, caso você esteja acessando o endereço do Hypercast pelo navegador web. Assim, o conteúdo HTML do blog é entregue ao seu navegador, renderizado para conteúdo visual e você pode ler, então, estes artigos! :)

Os servidores atacados recentemente, foram justamente os root-servers.

Recentemente uma nova versão do BIND foi lançada, a 9.4.0, e ela vem com muitos “features” (estes são mais para que conhece o BIND). Os mais interessantes que achei foram estes:

  • Segurança de assinaturas com DNSSEC;
  • Implementação IPv6;
  • Melhorias no DDNS (Dynamic DNS);
  • Suporte à arquiteturas multi-processadas;
  • Melhor portabilidade da solução;
  • Implementada nova framework interna de cache;
  • Novo tipo master-only;
  • Novas implementações no dig para suportar balanceamento;
  • Detecção de requisições UDP duplicadas;
  • Melhorias nos algoritmos de locking;
  • Suporte à criptografia SHA256;
  • Separação do allow-query-cache da diretiva allow-query;
  • Melhorias no sistema de logging.

Tive a idéia de escrever sobre DNS e BIND após ficar sabendo do lançamento da nova versão. Talvez eu escreva mais sobre o assunto, em nível de implementação mesmo, em futuros posts! Até lá!

Artigos Relacionados:


Sobre este artigo