A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

BIND (DNS) na jaula

Qui

16

Mar

2006


01:00

(13 votos, média 4.23 de 5) 


Existem vários blocos no arquivo de configuração named.conf. Cada um deles será explicado em detalhes:

Bloco options

O bloco options define o comportamento default de todas as zonas listadas. A primeira coisa é definir os diretórios de trabalho. Lembre-se que, como definimos uma jaula para o BIND, ele enxerga o diretório raiz como sendo /jaula/named e todos os outros diretórios são relativos a este. É por isto que indicamos o diretório dos registros com directory "/conf"; e NÃO como /jaula/named/conf. A indicação da localização dos arquivos de identificação do processo (named.pid), de estatística (named.stats) e de dump (named.db) segue o mesmo princípio.

A declaração version indica a versão do BIND que estamos usando. Se não quisermos tornar pública esta informação (por motivo de segurança e para atrapalhar um pouco os possíveis abelhudos de plantão tongue ), podemos fornecer uma string qualquer. Bom seria indicar version "[vá lamber sabão]";, mas isto seria indelicado com outros administradores. Por isto optei por version "[bloqueada]";.

Para se proteger contra spoofing (ou seja, que o seu servidor de nomes seja usado para fornecer informações que não estejam sob a sua autoridade) e para reduzir o uso desnecessário da sua máquina, o melhor é bloquear todos os IPs com exceção do localhost. Para isto, use a declaração allow-query { localhost; } (permite solicitação) indicando APENAS o localhost. Lembre-se de que, se usar esta configuração, este será o comportamento default do seu servidor de nomes - ele fornece apenas informações a respeito do localhost. E como ficam as zonas declaradas no named.conf? Também ficam bloqueadas! É por este motivo que, para liberar uma zona listada, o bloco da zona precisa de uma declaração própria allow-query { any; }; (permite-solicitação { todas; };) para ficar acessível.

Além disso, bloqueando solicitações recursivas (novamente com exceção do localhost), reduzimos o risco de ataques do tipo cache poisoning (envenenamento do cache). A declaração allow-recursion { localhost; }; nos dá esta segurança.

Bloco key

O bloco key contém o nome e o valor da chave que o cliente DNS precisa apresentar para que seja autorizado a acionar o servidor de nomes. key é identificado pelo nome da chave "rndc-key" e as declarações algorithm e secret indicam o tipo de algoritmo (HMAC-MD5) e a chave propriamente dita. O nome da chave pode ser qualquer um da sua escolha. Para que cliente e servidor se entendam, não custa repetir que esta identificação e declarações precisam ser iguais tanto no arquivo named.conf quanto no arquivo rndc.conf (que veremos adiante).

Bloco controls

A declaração controls especifica os canais de controle usados pelos administradores para controlar o servidor de nomes. Estes canais de controle são usados pelo rndc (cliente) para enviar comandos e para obter resultados não-DNS do servidor de nomes.

Um canal de controle inet é um socket TCP escutando uma dada porta IP num determinado endereço IP (que pode ser IPv4 ou IPv6). Como usaremos o rndc apenas no localhost, indicamos o endereço loopback 127.0.0.1. Se não for especificada nenhuma porta, a 953 é usada.

Com allow { 127.0.0.1; } damos apenas permissão para o IP 127.0.0.1 utilizar a conexão disponibilizada e isto apenas se a chave keys { "rndc-key"; } conferir com a do servidor de nomes. Quando há mais de um administrador, pode-se definir mais de um endereço IP e mais de uma chave. Depois, é só adicionar os endereços e as chaves nas respectivas listas como, por exemplo, allow { 127.0.0.1; 10.20.30.0/24; } keys { "rndc-key"; "chave2"; };

Bloco zone "."

Este bloco declara a zona dos servidores de nomes raiz. De acordo com a nota técnica ISC-TN-2002-2, o mais correto é configurar o tipo da zona "." como sendo do tipo hint (sugestão) porque não temos autoridade sobre servidores raiz.

O arquivo que contém a lista dos servidores raiz que serão sugeridos se encontra no diretório /conf (indicado pela declaração directory "/conf";) e tem o nome db.rootcache (você pode escolher o nome que quiser não só para este arquivo como para todos os outros de todas as zonas).

Bloco localhost - zona remetente

A zona do localhost é do tipo master (pudera, se não temos autoridade sobre o localhost então estamos perdidos :roll: ) e o arquivo de registro chama-se db.localhost. Além disso, usamos a declaração notify no; para que não sejam enviadas mensagens de notificação DNS para outros servidores de nome listados em registros NS da zona quando houver alterações nesta zona (o default é yes). É que modificações no localhost só interessam ao próprio localhost.

Bloco localhost - zona inversa

Para que o servidor de nomes possa fazer a tradução inversa, ou seja, fornecer o nome da zona que corresponde a determinado endereço IP, é preciso declarar zonas inversas. Para o localhost, isto é feito com zone "0.0.127.in-addr.arpa". Note que o nome da zona é uma parte do endereço IP 127.0.0.1 virado ao contrário. O arquivo com os registros é o db.0.0.127 e, novamente, não queremos que as modificações sejam notificadas.

Informações adicionais