Configurando BIND 9 + chroot sem mistérios

Cansado de procurar como fazer uma coisa tão baba como esta e não encontrar? Acabou seu martírio, este artigo ensina como fazer configurar seu servidor DNS.

[ Hits: 357.632 ]

Por: Alexandre de Jesus Marcolino em 12/02/2003 | Blog: http://blog.marcolino.com.br/wordpress/


Controlando o daemon com rndc



O comando rndc é o substituto do antigo ndc e tem uma funcionalidade a mais: ao invés de usar um socket Unix para controlar o daemon ele utiliza um socket TCP possibilitando então o controle remoto do daemon. Como conseqüência, o uso de criptografia e chaves e inevitável.

Sua configuração também não é das mais fáceis. Abaixo a listagem do arquivo etc/rndc.conf
#
# /chroot/named/etc/rndc.conf
#

options {
    default-server 127.0.0.1;
    default-key "rndckey";
};

server 127.0.0.1 {
    key "rndckey";
};

key "rndckey" {
    algorithm "hmac-md5";
    secret "secret key here";
};

Como em named.conf, o formato é muito peculiar e requer que todos os tabs estejam no lugar certo. Neste arquivo, o marcador ``rndckey'' é exatamente o que o nome sugere: a chave.

Basicamente o que você precisa saber é que no lugar onde está o parâmetro secret você deve incluir entre aspas a chave que nós iremos gerar. ESTE É O SEGREDO !

Vamos gera a chave agora.

cd /chroot/named/etc
/usr/local/sbin/dnssec-keygen -a HMAC-MD5 -b 256 -n HOST rndc
Krndc.+157+13856

cat Krndc.+157+13856.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: hU9utBAdP6/dVKKfxOlv0bPOTnAd4A1qosMbs/dwVJI=

...


Pegue a string gerada após a palavra key e copie ela no arquivo rndc.conf, no marcador rndckey após o parâmetro secret entre aspas.

Após ter feito isso, por segurança vamos DELETAR o arquivo com a chave.

rm Krndc.+157+13856.*

Agora vamos fazer um link simbólico para o arquivo rndc.conf para facilitar a administração e o rndc.conf funcionar adequadamente.

ln -sf /chroot/named/etc/rndc.conf /etc/rndc.conf

Agora, o DNS Server precisa ser configurado para ser controlado pelo rndc. Vamos editar novamente o arquivo /chroot/named/etc/name.conf para adicionar as seções responsáveis por esta habilidade. Não se esqueça de copiar sua própria chave no lugar onde está o secret neste arquivo também.
controls {
    inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; };
};

key "rndckey" {
    algorithm "hmac-md5";
    secret "hU9utBAdP6/dVKKfxOlv0bPOTnAd4A1qosMbs/dwVJI=";
};

As seções control e key devem estar no começo do arquivo de configuração.

O arquivo acima permite que apenas a interface localhost escute e aceite instruções do rndc. É possível contudo que qualquer interface escute este comando para que a administração do named seja remota. Como consideramos isto inseguro demais, preferimos manter as coisas como estão.

Agora que tudo esta configuradinho, vamos restartar o processo do named...

killall -HUP named

Vamos testar se o rndc esta funcionando ...

rndc status
number of zones: 2
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running

Isto indica que esta tudo OK !

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O ambiente
   3. Compilando o BIND
   4. Tudo instalado, agora vamos ENGAIOLAR !
   5. Construindo os arquivos de configuração
   6. Verificando as permissões dentro da gaiola
   7. Inicializando o servidor NAMED
   8. Controlando o daemon com rndc
   9. Inicializando o named quando a máquina da BOOT !!!
   10. Consideracões finais
Outros artigos deste autor

Autenticando o Speedy Business automaticamente em firewalls Linux

openSUSE 12.1 - Instalando Oracle Java

Gerando estatísticas do seu servidor de email utilizando o isoqlog

Tutorial de Instalação do ClamAV - Anti-vírus open Source

Criando VPNs entre servidores Linux sem mistérios (parte I)

Leitura recomendada

Node.js para administradores de sistema

Tomcat com URL limpa

Sistema de backup com rsyncd

Criando relatórios estatísticos da web com o awstats

Servidor FTP externo no Ubuntu 12.04 - Criação e configuração

  
Comentários
[1] Comentário enviado por rsouza em 29/08/2003 - 13:11h

Meus parabéns o arquivo é muito BOM......

[2] Comentário enviado por gustavo_marcon em 04/09/2003 - 18:18h

configurei um server DNS master, mas p/ registrar dominios preciso de um master e no minimo um slave não é?
ñ posso configurar só c/ um né?

então como faço p/ criar um DNS secundário?

Preciso valida-lo em alguma organização??

[3] Comentário enviado por L1nuxer em 26/03/2004 - 12:16h

O cara explico uma configuracao de DNS de uma forma que nao precisa disso tudo, ja que explicou dessa forma explica-se detalhadamente. e mesmo assim explique de uma forma configurando um dominio, vamos dizer que 40% desse artigo e aproveitavel!

Gustavo_marcon sim vc precisa de outra maquina para fazer o slave que seria o secundario.

[4] Comentário enviado por crildo em 11/06/2004 - 15:11h

Muito bom o seu artigo...

[5] Comentário enviado por cmarcelo em 05/07/2004 - 22:58h

Muito útil o chroot!

Segui os passos e está funcionado legal

Porém estou com uma dúvida, qual a utilizade do diretório log, já que ele sempre está vazio?

Carlos Marcelo

[6] Comentário enviado por reimassupilami em 04/08/2004 - 11:20h

Olá, eu estava seguindo todos os passos mas me ferrei na hora de executar aquele script que trata das permissões. Nem root conseguia acessar mais nada, daí até a inicialização ferrou. Resumindo, tive q reinstalar o sistema. O que posso ter feito de errado?

[7] Comentário enviado por rbn_jesus em 19/11/2004 - 09:59h

Help!
cara estou seguindo o teu tutorial para o fedora 2, apos a configuração do bind tentei executar o ./make, entretanto apareceu o seguinte erro:

[root@localhost bind-9.2.1]# ./make
bash: ./make: is a directory

como posso contornar isto, já tentei executar o cdm make detro do diretorio make, e outras tentativas inuteis...

agradeço a compreenção


[8] Comentário enviado por ace rush em 24/11/2004 - 01:22h

Poutz muito bom!!!

mas eu achei que realmetne ia rolar um #chroot /chroot/named...

mas vi que se faz de oturo modo (setando permissoes).... e nao tem jeito se alguem der um buffer overflow e cair de shell ali dentro, de poder subir pro filesystem ?

[9] Comentário enviado por icasol em 17/01/2005 - 15:45h

Cara,


Le seu artigo...estou da pra vc mandar uma dica para do DNS secundario no Slakware 10....o DNS primario eu fiz usando seu DOC...muito bom...

Valew

Rubens Andrade

[10] Comentário enviado por jehpy em 05/04/2005 - 23:34h

Oi é o seguinte... tentei instalar o servidor conforme suas dicas, mas na hora de executar o named.start ele da um erro: bash: PATH: command not found.

Estou usando o CL10...

[11] Comentário enviado por leandroalmeida em 18/11/2005 - 11:20h

Excelente artigo...
mas quando executo o rndc status ele apresenta o seguinte erro..

rndc: Couldn't find server 'localhost': Name or service not known

outra pergunta de iniciante.. o dns server para resolucionar nomes? por exemplo
transformar 200.171.171.171 em www.meudominio.com.br?

[12] Comentário enviado por gustavo_marcon em 18/11/2005 - 15:26h

leandroalmeida, é ao contrário que o DNS funciona, ele transporma nome para ip e não ip para nome.

Ou seja ela faz vc ir de www.seudominio.com.br para 200.171.171.171 mas não ir de 200.171.171.171 para www.seudominio.com.br, até porque é por IP diretamente que a internet trabalha, então nem faria sentido essa ordem.

[13] Comentário enviado por julinhoramones em 16/03/2006 - 21:40h

Caro gustavo_marcon, o uso básico do DNS a priori é para realizar a resolução de nomes para endereços IP. Mas há casos onde necessitamos utilizar o servidor DNS para realizar resolução reversa, onde através do IP é possível obter o nome.
Sendo assim, você pode criar base de dados para resolução comum e reversa.

[14] Comentário enviado por Tyreon em 11/07/2006 - 19:29h

Vlw!! Me ajudou mto!!

[15] Comentário enviado por guga_osicom em 10/08/2006 - 13:06h

A configuração proposta pelo artigo foi implementada. Os resultados usando o nslookup foram aceitaveis. Porém quando uso o ping em outra máquina da rede para acessar o servidor DNS ele não encontra. Alguma sugestão será bem vinda.

[16] Comentário enviado por scristina4 em 24/09/2006 - 16:07h

Gostaria de ler o artigo, mas não consegui ainda, preciso dele para efetuar um trabalho de faculdade, sou novata na área de rede principalmente preciso configurar o servidor DNS linux mas não encontrei nenhum material apropriado, tipo passo a passo, porque em linux sou leiga, sei pouca coisa. Então depois faço meus comentários sobre o artigo.
Atenciosamente,
Sogeamfe

[17] Comentário enviado por alexandrecorrea em 25/09/2006 - 03:19h

gustavo_marcon:

o bind/named converte tanto nome.com.br para ip e ip para nome.com.br !!

veja um exemplo de ip para nome:

supondo que temos o bloco 200.200.200.1.0/24

named.conf

zone "1.200.200.in-addr.arpa" IN {
type master;
notify yes;
file "reverso.200.200.200.1.zone";
};


arquivo reverso.200.200.200.1.zone

$TTL 14400
$ORIGIN 1.200.200.IN-ADDR.ARPA.
@ 14440 IN SOA ns1.dominio.com.br. hostmaster.dominio.com.br. (
2006061404
1H
15M
1W
20M
)

@ 7200 IN NS ns1.dominio.com.br.
@ 7200 IN NS ns2.dominio.com.br.


1 7200 IN PTR ip01.dominio.com.br.
2 7200 IN PTR ip02.dominio.com.br.

$GENERATE 10-254 $ PTR ip$.dominio.com.br.



-------

esse ultimo ai.. $GENERATE gera automaticamente.... do 10 ao 254 :)





[18] Comentário enviado por maickelpc em 26/11/2007 - 17:36h

bacana...enfim conclui meu dns

[19] Comentário enviado por peace em 04/12/2007 - 16:56h

show de bola o artigo. Botei meu dns pra rodar rapidinho. como é útil, vou linkar o aritigo no meu blog, ok?

abraço.

Tiago Lima

[20] Comentário enviado por edivaldocaj em 19/12/2007 - 15:39h

parabéns, otimo tutorial...

[21] Comentário enviado por linuxss em 25/06/2008 - 22:05h

Quando configuro este script e mando executar o teste através do comando descrito acima, sou informado que os paramentros:

[root@localhost chroot]# sh -x /chroot/named.perms
+ cd /chroot/named
+ chown -R root.named
chown: operando em falta após `root.named'
Tente `chown --help' para mais informação.
+ find .-type f -print
+ xargs chmod u=rw,og=r
find: .-type: Arquivo ou diretório não encontrado
find: f: Arquivo ou diretório não encontrado
chmod: operando em falta após `u=rw,og=r'
Tente `chmod --help' para mais informação.
+ find .-type d -print
find: .-type: Arquivo ou diretório não encontrado
find: d: Arquivo ou diretório não encontrado
++ u=rwx,og=rx
+ xargs chmod
chmod: operando em falta
Tente `chmod --help' para mais informação.
+ chmod 'o=etc/*.conf'
chmod: operando em falta após `o=etc/*.conf'
Tente `chmod --help' para mais informação.
+ touch conf/secondaries/.empty
+ find conf/secondaries/ -type f -print
+ xargs chown named.named
+ find conf/secondaries/ -type f -print
+ xargs chmod ug=r,o=
+ chown root.named conf/secondaries/
++ ug=rwx,o
+ chmod = conf/secondaries/
+ chown root.root var/
+ chmod u=rwx,og=x var/
+ chown root.named var/run/
+ chmod ug=rwx,o=rx var/run/
+ chown root.named logs/
+ chmod ug=rwx,o=rx logs/

Ja tentei colocar aspas de todas as maneiras mas naum funciona, por favor preciso de ajuda obrigado.

[22] Comentário enviado por aurelio.silva em 30/06/2008 - 15:21h

Se tenho um server com dois IPs, como posso fazer o master e slave na mesma maquina?

[23] Comentário enviado por cpaynes em 22/07/2009 - 16:03h

velhoo .. bom tutorial ...
so to com uma duvida ..
eu tenhu um servidor dhcp rodando ..
o que eu coloco na linha option domain-name-servers ???
e no resolv ... ???
abracos ..

[24] Comentário enviado por rcorrea em 28/10/2009 - 20:40h

Estou configurando o DNS numa maquina com Ubuntu Jaunty 9.04 kernel 2.6.28.16.
Quando tento criar o arquivo db.rootcache ocorre falha de permissao, veja abaixo:
"sudo +tcp dig @a.root-servers.net . ns > /chroot/named/conf/db.rootcache"
bash: /chroot/named/conf/db.rootcache: Permissão negada

o revolv.conf aparentemente esta ok.

o que pode estar errado?

[25] Comentário enviado por DiegocostaJ em 17/10/2018 - 03:50h

Para mim não funcionou, estou utilizando o Centos. Os script de inicialização acho que estão errados. Eu fiz conforme o KB porém sem sucesso.


Contribuir com comentário