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: 370.170 ]

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

openSUSE 12.1 - Instalando Oracle Java

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

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

Configurando um arquivo de zona

Autenticando o Speedy Business automaticamente em firewalls Linux

Leitura recomendada

Acesso remoto fácil, sem necessidade de instalação de programa

Básico do Apache no Debian

Sistemas Operacionais Online

Servidor Web com NetBSD (Apache + PHP + MySQL + *)

Compartilhamento de Internet via NAT/DHCP (Speedy Home)

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts