Configurando o Bind para ser ou não recursivo

Este material foi construído com base no material do Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no Brasil (CERT). Maiores detalhes podem ser vistos Aqui

Recursivo X Autoritativo

Dois tipos bastante utilizados de servidores DNS (Domain Name System) são o autoritativo e o recursivo, que embora possam ser executados em uma mesma máquina, possuem características distintas:

  • O autoritativo é responsável por manter os mapas referentes a uma zona local e responder a requisições vindas de máquinas de todo o mundo, que precisarem resolver nomes de domínio da zona sobre a qual este servidor tem autoridade;
  • O recursivo é responsável por receber as consultas DNS dos clientes locais e consultar os servidores externos, de modo a obter respostas às consultas efetuadas.

Um problema bastante comum de configuração é permitir que qualquer máquina na Internet faça consultas ao servidor DNS recursivo de uma determinada rede. Servidores com esse problema são comumente chamados de servidores DNS recursivos abertos, pois apenas o servidor autoritativo é que deve responder a consultas vindas de máquinas externas.

Configurando o Servidor como Autoritativo

O Debian organiza os arquivos de configuração do Bind de uma maneira diferente. O arquivo /etc/bind/named.conf.options é destinado a definição das opções que valem para o Bind como um todo. Para configurar um servidor como autoritativo, deve-se inserir no arquivo /etc/bind/named.conf.options as configurações abaixo:

// 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;
};

Configurando o Servidor como Recursivo

Por padrão o Bind já é configurado como Recursivo. Portanto não se faz necessário realizar nenhuma configuração. Realize um teste para saber se ele está trabalhando como recursivo. Esse teste pode ser realizado fazendo uma consulta na qual ele não saiba a resposta, fazendo com que ele tenha que buscar de forma recursiva.

No entanto, caso ele não tenha esse comportamento como padrão, para que ele passe a funcionar como recursivo, deve-se inserir no arquivo /etc/bind/named.conf.options as configurações abaixo:

// colocar a seguinte diretiva na clausula options
// permitindo recursao
options {
        recursion yes;
};

Realização dos Testes

Após o término das configurações e sempre que qualquer mudança for feita nos arquivos de configuração do bind, precisa-se reiniciar o serviço para que as novas configurações entrem em vigor. Para isso utilize o comando abaixo com poderes de root. Caso tudo tenha sido configurado corretamente, o serviço será reiniciado sem mensagens de erro.

/etc/init.d/bind9 restart

Para ter certeza que tudo está funcionando corretamente, deve-se utilizar algum utilitário de teste de funcionamento de resposta à requisições de resolução de nomes de servidores DNS. Existem diversas ferramentas que permitem esse teste, porém, a ferramenta mais utilizada é o utilitário dig.

Após instalado, o utilitário dig pode ser utilizado da seguinte forma:

dig <tipo_registro> <name> @<server>

Onde <tipo_registro> deve ser substituído pelo tipo de RR do domínio que se deseja pesquisar (por exemplo, o(s) registro(s) NS do domínio), <name> deve ser substituído pelo nome do RR e <server> pelo endereço do servidor que deseja consultar.

Para verficar se o servidor está configurado como não recursivo, pode-se fazer uma consulta de algo que ele não conheça. Supondo que o teste esteja sendo feito dentro do servidor configurado, um exemplo de consulta seria:

dig www.google.com @localhost

O resultado deve ser similiar ao quadro abaixo, indicando que não houve resposta pois seria necessária a recursão. Caso o resultado indique o endereço IP do host www.google.com, o servidor deverá estar configurado como recursivo.

; <<>> DiG 9.7.3-P3 <<>> www.google.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 14263
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.google.com.			IN	A

;; Query time: 1170 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr  9 02:55:33 2012
;; MSG SIZE  rcvd: 32
ensino/semestres/2011.1/admso/material/dicas/dicas-importantes/configurando_o_bind_para_ser_ou_nao_recursivo.txt · Última modificação: 2012/04/09 03:11 (edição externa)