Tema LinuxBSD Ver. 0.2 lnx
 http://www.linuxbsd.com.br 

  


  

  

Atualizações Dinâmicas em seu Servidor DNS (BIND)

Enviado por DarkWarrior em Qua, 2007-01-17 10:05.
Autor: Jean Carlos Oliveira Guandalini
eMail: darkwarrior[nospam]linuxbsd.com.br
Data: 11/2005


ATENÇÃO:
Neste tutorial irei explicar somente como implementar esse recurso a um servidor de DNS que esteja funcionando 100%, não estarei explicando como configurar um servidor DNS completo.

Atualizações Dinâmicas é um método para adicionar, remover e atualizar registros em seu servidor DNS mestre, enviando formulários especiais com mensagens de DNS, através do programa "nsupdate".

Para tornarmos essa atualização segura, precisaremos criar uma chave secreta para fazer a atualização do DNS, lembrando que quem possuir essa chave pode fazer alterações arbitrárias em seu servidor de nomes. Iremos utilizar a opção “allow-update” na configuração de seu named.conf.

Em nosso exemplo, trabalharei com o domínio “linuxbsd.com.br” e o nome de meu servidor é “servidor.linuxbsd.com.br”.

Nosso arquivo named.conf contém o domínio configurado da seguinte maneira:

zone “linuxbsd.com.br” IN {
type master;
file “pri/linuxbsd.com.br.zone”;
allow-update { none; };
};

Vamos então gerar nossa chave secreta para atualização do DNS.
Vou salvar minha chave na pasta /var/bind/, você pode escolher o que achar melhor.

# dnssec-keygen –a HMAC-MD5 –b 128 –n HOST linuxbsd.com.br.

No meu caso foram gerados dois arquivos:
Klinuxbsd.com.br. +157+15055.key
Klinuxbsd.com.br. +157+15055.private

No arquivo Klinuxbsd.com.br.+157+15055.key temos:
linuxbsd.com.br. IN KEY 512 3 157 Aefw1I5iSPaGXz/SURYg==

E no arquivo Klinuxbsd.com.br.+157+15055.private temos:
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: Aefw1I5iSPaGXz/SURYg==

Esses arquivos é que teremos de ter em nossos “clientes” que irão fazer a atualização de DNS para que os mesmos tenham a permissão necessária para tal.
Guarde esse valor: Aefw1I5iSPaGXz/SURYg==
Pois ele é nossa chave secreta, outra vez venho dizer que tenha muito cuidado com esses arquivos não deixe eles com permissões para qualquer usuário, deixe somente para o root.

Vamos agora configurar o named.conf:

Antes da declaração da zona você deve jogar as informações sobre a chave secreta da seguinte maneira:
key “linuxbsd.com.br.”
{
algorithm hmac-md5;
secret “Aefw1I5iSPaGXz/SURYg==”;
};

Após feito isso altere a configuração da zona da seguinte maneira:
zone “linuxbsd.com.br” IN {
type master;
file “pri/linuxbsd.com.br.zone”;
allow-update { key “linuxbsd.com.br.”; };
};

Reinicie seu servidor BIND e se ele for levantado corretamente sua configuração funcionou. Para termos certeza absoluta, precisamos testar né!? Então vamos lá.

Copie os arquivos Klinuxbsd.com.br.+157+15055.key e Klinuxbsd.com.br. +157+15055.private, para o computador cliente, jogue em um lugar onde somente o usuário root possa ter acesso aos mesmos, inclusive para leitura. De preferência faça essa transferência utilizando o sftp.

Em nossa máquina cliente precisaremos ter o programa nsupdate, em algumas distribuições o mesmo vem junto com o bind-tools, dnsutils, bind. Isso você terá que descobrir, no meu caso eu testei em um slackware e o programa vem no pacote “bind”.

Antes de executar a atualização devemos estar cientes que os relógios de ambas as máquinas estejam na mesma hora, nesse caso o correto é fazer uma atualização com o comando ntpdate(Exemplo:)
# ntpdate ntp.usp.br

Após isso...
Supondo que copiamos os arquivos para a pasta /root, então teremos a seguinte lista de comandos:
# nsupdate –d –k /root/Klinuxbsd.com.br.+157+15055.key
Creating key...
> server servidor.linuxbsd.com.br
before getaddrinfo()
> update delete maquina1.linuxbsd.com.br
> update add maquina1.linuxbsd.com.br 90 A 200.200.200.200
> send
Reply from SOA query:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50
;; flags: qr aa rd ra ; QUESTION: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
; maquina1.linuxbsd.com.br. IN SOA

;; AUTHORITY SECTION:
linuxbsd.com.br. 60 IN SOA servidor.linuxbsd.com.br. root.linuxbsd.com.br. 2005100309 3600 900 3600000 3600


Found zone name: linuxbsd.com.br
The master is: servidor.linuxbsd.com.br

Reply from update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 25
;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1
;; TSIG PSEUDOSECTION:
linuxbsd.com.br. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1127896442 300 16 Aefw1I5iSPaGXz/SURYg== 25 NOERROR 0


Onde está em negrito são comandos à serem digitados, e onde está normal é a saída dos comandos que você executou. Lembrando que onde está “200.200.200.200” é o endereço de IP de sua máquina cliente.

Este foi um exemplo bem simples do que podemos fazer com essa ótima opção oferecida pelo BIND. Você pode usar isso até em sua rede interna com máquinas que rodam dhcp, sempre que a máquina pegar um novo IP executar um script para que faça a troca do nome no domínio de sua empresa. Pode ser implementado de várias maneiras, facilitando o dia a dia do administrador de redes.

»