Instalando e configurando um servidor DNS (Bind+CHROOT) no Slackware

Nesse artigo explico como configurar um servidor DNS utilizando o BIND de uma maneira segura. Criei esse novo artigo atualizando o antigo e adicionando o CHROOT para melhor segurança do nosso sistema.

[ Hits: 320.009 ]

Por: João Paulo de Oliveira Faria em 14/03/2005 | Blog: http://www.jpfaria.com


Criando os arquivos de configuração



1 - Primeiramente precisamos gerar nossas config com as chaves com o seguinte comando:

# rndc-confgen

Você verá as seguintes informações:

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "Omr8iA0t9KOuW4jankgInQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "Omr8iA0t9KOuW4jankgInQ==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

O comando irá gerar dois conteúdos, um que vamos utilizar em /chroot/named/etc/rndc.conf e o outro para adicionar em /chroot/named/etc/named.conf.

LEMBRANDO QUE O SECRET MUDA DE GERAÇÃO PARA GERAÇÃO, PORTANDO SEU SECRET SERÁ DIFERENTE DO ACIMA.

2 - Crie o arquivo /chroot/named/etc/named.conf e coloque o conteúdo abaixo nele.

REPARE QUE EU COLOQUEI O CONTEÚDO QUE GERAMOS ACIMA, RETIRANDO SOMENTE AS TRALHAS

options {
        directory       "/conf";
        pid-file        "/var/run/named.pid";
        statistics-file "/var/run/named.stats";
        dump-file       "/var/run/named.db";
        transfer-format many-answers;
        # hide our "real" version number
        version         "[secured]";
};

# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
       algorithm hmac-md5;
       secret "Omr8iA0t9KOuW4jankgInQ==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf


# The root nameservers
zone "." {
        type   hint;
        file   "db.rootcache";
};

# localhost - forward zone
zone    "localhost" {
        type    master;
        file   "db.localhost";
        notify  no;
};

# localhost - inverse zone
zone    "0.0.127.in-addr.arpa" {
        type   master;
        file   "db.127.0.0";
        notify no;
};

zone "meudomínio.com.br" in {
        type master;
        file "meudomínio.com.br.domain";
};

3 - Vamos criar o conteúdo do /chroot/named/etc/rndc.conf com o conteúdo gerado:

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "Omr8iA0t9KOuW4jankgInQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

Agora vamos copiar o arquivo criado para /etc/rndc.conf:

# cp /chroot/named/etc/rndc.conf /etc/rndc.conf

4 - Vamos criar o /chroot/named/conf/db.rootcache com o seguinte comando:

# dig @a.root-servers.net . ns > /chroot/named/conf/db.rootcache

5 - Crie o arquivo /chroot/named/conf/db.localhost e coloque o conteúdo abaixo nele:

;
; db.localhost
;
$TTL    86400

@       IN SOA   @ root (
                   42              ; serial (d. adams)
                   3H              ; refresh
                   15M             ; retry
                   1W              ; expiry
                   1D )            ; minimum

        IN NS        @
        IN A         127.0.0.1

6 - Crie o arquivo /chroot/named/conf/db.127.0.0.0 e coloque o conteúdo abaixo nele:

;
; db.127.0.0
;
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                       1 ; Serial
                       28800      ; Refresh
                       14400      ; Retry
                       3600000    ; Expire
                       86400 )    ; Minimum
        IN      NS      localhost.
1       IN      PTR     localhost.

7 - Crie o arquivo /chroot/named/conf/meudomínio.com.br.domain e coloque o conteúdo abaixo nele, lembrando que se você for criar um domínio com outro nome por exemplo.: uol.com.br, você deverá substituir meudomínio.com.br por uol.com.br, mesmo no nome do arquivo que estamos criando agora.

$TTL    86400
; Authoritative data for meudomínio.com.br
;
@    IN       SOA localhost. root.meudomínio.com.br. (
             2005011297      ; Serial (yymmddxx)
             10800           ; Refresh 3 hours
             3600            ; Retry   1 hour
             36000           ; Expire  10 hours
             86400 )         ; Minimum 24 hours
      IN       NS            ns1.meudomínio.com.br.
      IN       NS            ns2.meudomínio.com.br.

;
;Recebimento de mensagens de mail
;

meudomínio.com.br.  IN      MX      0       mx
meudomínio.com.br.  IN      MX     10       mx

localhost   IN       A             127.0.0.1
            IN       HINFO         INTEL/110       LINUX
ns1         IN       A             100.100.100.100
ns2         IN       A             100.100.100.100
mx          IN       A             100.100.100.100
smtp        IN       A             100.100.100.100
pop         IN       A             100.100.100.100
www         IN       A             100.100.100.100
ftp         IN       A             100.100.100.100

OBS: Substitua o IP 100.100.100.100 para o IP correto.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Começando e organizando a instalação
   3. Preparando o CHROOT
   4. Criando os arquivos de configuração
   5. Criando o arquivo de permissão e de inicialização
   6. Excluindo a estrutura normal do named e alterando o resolv.conf
   7. Iniciando e testando
Outros artigos deste autor

Solução completa com o sendmail (segunda edição)

SpamAssassin no Sendmail usando o Procmail

Como hospedar um site/domínio de graça na sua casa

Controle de banda no Apache 1.3.X com mod_bandwidth (Slackware)

PEAR - Utilizando classes prontas e documentadas no PHP

Leitura recomendada

Personalizando o Blackbox

Compilando e instalando o XFCE 4.2 no SuSE através dos fontes

Capturando vídeo através do mencoder

Compilação distribuída usando o distcc

Como fazer hackergotchi (ou avatar de cabeça flutuante)

  
Comentários
[1] Comentário enviado por internero em 15/03/2005 - 13:57h

Excelente artigo!

um verdadeiro bê-a-bá de como instalar o BIND de uma forma segura!

Parabéns!

[2] Comentário enviado por agk em 17/03/2005 - 11:31h

Parabéns, está muito bom o artigo, apesar de ser para Slackware está bem explicado e fornece uma ótima base de conhecimento para poder instalar em outras distribuições.

[3] Comentário enviado por israel_agalmeida em 17/03/2005 - 11:50h

este artigo, resolveu meu problema com o DNS externo que esta bixado e nao funcionava direito como o named

Resolveu a te um Problema de e-mail,

[4] Comentário enviado por foxrcesar em 24/05/2005 - 20:37h

parabens pelo artigo, mas gostaria se possivel tirar algumas duvidas, por exemplo, para configurar um dns secundario, instalaria como no primario e copiaria os arquivos de configuração? qnd criasse um novo dominio vi em outros artigos sobre o alow transfer ip_secundario, como no secundario iria permitir essa transferencia? grato.

[5] Comentário enviado por Escadinha em 27/01/2006 - 21:55h

Gostei do artigo principalmente por tratar de um Slackware. Nunca tinha encontrado um tutorial passo a passo de bind para Slackware.
Segui todos os passos sem problemas.
O único problema que tive foi na hora de testar o bind.
Iniciei ele com o script rc.bind que criamos mas não houve nenhuma mensagem confirmando nada.
Dei um ps aux | grep bind e a mensagem que veio não foi nada parecida com a que devia aparecer.
Se alguem puder me ajudar eu agradeço.
Mas fora isso, provavelmente o erro foi meu mesmo, gostei muito do tutorial !!

[6] Comentário enviado por julinhoramones em 03/04/2006 - 15:56h

Ótimo artigo !!!!
Em relacao ao nosso amigo do VOL, Escadinha, saliento que:
o comando utilizado para realizar a filtragem da saida do comando ps aux, não irá retornar a palavra, pois simplesmente o daemon não possui este nome, e sim named.
Outra forma invés da listagem de processos ativos no sistema, seria a verificacao do status de portas em listen no sistema:
netstat -l -t -n -p |grep 53

T+

[7] Comentário enviado por wlademy em 04/05/2006 - 12:24h

Muito bom o artigo.
Tb me ajudou legal!
Meus parabens!
OBS: Implementei no FC5

Abraços!

Wl@demy
wlademy@gmail.com

[8] Comentário enviado por dtux em 10/08/2006 - 08:33h

eaí cara vou ver se fonuncia ou naum...
se der certo aki eu volto a escrever.....

[9] Comentário enviado por leaf em 11/10/2006 - 23:52h

Aew João Paulo ...

Fez um excelente artigo ...
Está de parabens ...

Abraço ...
Rafael

[10] Comentário enviado por leoberbert em 24/05/2007 - 14:54h

Congratulations pelo excelente artigo!!!!

Abração!!!

[11] Comentário enviado por renancortes em 15/06/2007 - 00:10h

aeee
mto blz o artigo parabens
soh q eu uso bsd fiz td no freebsd fazendo as mudancas e tal
mais ta ocorrendo um erro queria saber se algum de vcs
me ajuda...
olha quando vou colocar as permissoes da um erro na permissao chown root:root var/ invalid argument
ae do start no /etc/rc.d/rc.bind start
ae no fala assim

starting BIND 9.3.4 -t /chroot/named -u named -c /etc/named.conf
Jun 15 00:07:33 router named[33441]: command channel listening on 127.0.0.1#953
Jun 15 00:07:33 router named[33441]: errno2result.c:109: unexpected error:
Jun 15 00:07:33 router named[33441]: unable to convert errno to isc_result: 45: Operation not supported
Jun 15 00:07:33 router named[33441]: running
espero respostas obrigado =)

[12] Comentário enviado por rspaiva em 08/08/2007 - 12:18h

Excelente!! Instalei aqui no meu slack e foi tranquilo.... so que to com um probleminha quando consulto o DNS la pelo o registro, acusa falha no DNS (diz que o DNS não aceitou uma conexão DNS) e o status ta CREFUSED.... poderia me dar alguma dica ai.Grato
Ricardo Paiva. rspaiva@hotmail.com

[13] Comentário enviado por prgs.linux em 11/08/2007 - 11:24h

cara descobri uma forma bem parecida com essa sua de enjaular
assim que vc instala o dns pelo installpkg ele ja cria o diretorio dentro do /etc
entao vamos ao passo que fiz!!!!.............salientando que seu post fikou 10 e eu particulamente teste ele ...rsrsr

1- como root
#groupadd named
#adduser named

mkdir /etc/raiz
mkdir /etc/raiz/etc
mkdir /etc/raiz/var
mkdir /etc/raiz/var/named
mkdir /etc/raiz/var/run
mkdir /etc/raiz/var/run/named
mkdir /etc/raiz/dev
cp -R /var/named/* /etc/raiz/var/named
cp /etc/named.conf /etc/raiz/etc
ln /dev/random /etc/raiz/dev/random
chgrp named /etc/raiz/etc/named.conf
chown named /etc/raiz/var/run/named

agora e so inicializar o BIND

# /usr/sbin/named -u named -t /etc/raiz

Obs: para inicializar em todo boot
e so coloca-lo dentro do /etc/rc.d/rc.local



[14] Comentário enviado por escuro em 09/10/2007 - 11:49h

Ola João Paulo.
seu artigo esta muito bom. Parabéns.
porem.... quando efetuar o registro no site "registro.br".
ele acusa a DNS duplicado.

"Servidor DNS Slave 1: hostname duplicado"

Teria alguma solução ?

[15] Comentário enviado por gpr.ppg.br em 16/12/2007 - 02:56h


fiz www3.meusite.com.br

mas só no servidor que funciona.
como acesso pela rede intranet? o que pode estar errado?

abraços,
gpr.

[16] Comentário enviado por r0ckst4r em 18/12/2007 - 15:33h

#
# named.start
#
# Note: the path given to the "-c" parameter is relative
# to the jail's root, not the system root.
#
# Add "-n2" if you have multiple CPUs
#
# usage: named [-c conffile] [-d debuglevel] [-f|-g] [-n number_of_cpus]
# [-p port] [-s] [-t chrootdir] [-u username]

cd /chroot/named

# make sure the debugging-output file is writable by named
touch named.run
chown named:named named.run
chmod ug=rw,o=r named.run

PATH=/usr/local/sbin:$PATH named \
-t /chroot/named \
-u named \
-c /etc/named.conf

----------------

Lembrem-se, caso o endereço de instalação do named estiver diferente é necessário modificar o PATH...

PATH=/usr/sbin:$PATH named \

valew!

[17] Comentário enviado por malombrado em 26/12/2007 - 18:33h

Ola. gostaria de saber se e normal alguma lentidao... pois apos eu colocar o dns.. parece que a rede morreu xO... n presiza de nenhuma config de iptables?

[18] Comentário enviado por sequelinha em 24/01/2008 - 23:03h

Excelente Artigo ajudou muito valeu

[19] Comentário enviado por sequelinha em 25/01/2008 - 10:23h

Ola como que coloco no named.conf e na pasta secondaries as zonas secundarias
vlw

[20] Comentário enviado por fajo em 31/01/2008 - 19:36h

Tentei no Debian Etch mas o serviço não inicia

[21] Comentário enviado por diony em 24/04/2008 - 22:17h

Meus Parabéns!!!
Excelente Tutorial. Segui Seus Passos para configurar esse Servidor DNS e funcionou que é uma beleza!!!!
O Servidor DNS que configurei mudou totalmente... O Acesso SSH era muito lento acessando de outro link... Tipo entre o link IP Dedicado e o Speedy. Depois de configurar e ativar o BIND o Servidor mudou totalmente!!!! Ficou um avião!!!!!

Muito Obrigado Pelo Tutorial.

[22] Comentário enviado por xerxeslins em 25/07/2008 - 21:22h

Excelente tutorial!

Fiz tudo o que você disse com muita calma. Não acertei de primeira, mas depois ficou perfeito.

Valeu!!!

[23] Comentário enviado por l-x em 14/08/2008 - 11:50h

Esse tipo de configuração se aplica no debian, visto que o bind 9.5 q tenho aki cria uma pasta no /etc?????

[24] Comentário enviado por Marcelo_Reis em 12/09/2008 - 20:37h

Olá amigos.

Eu configurei o bind no meu server de firewall (Iptables), e minha duvida é qual o IP que eu devo colocar em "/chroot/named/conf/meudomínio.com.br.domain" substituindo ns1, n2 etc...?

Meu modem adsl, é roteado, e possui IP de internet fixo, para a rede externa ele usa 192.168.0.1, para o firewall na placa de rede externa ele está em dhcp 192.168.0.0/24, na placa de rede interna 10.0.0.1.

e qual dos Ip´s eu deveria colocar em resolv.conf? no momento está:
nameserver 192.168.0.1

No momento não faço muita questão de ter um dominio, seria mais para desafogar o trafego e agilizar o serviço, tipo um cache.

valeu!

[25] Comentário enviado por xuxurecordez em 04/11/2008 - 14:56h

E ae ... Obrigado pelo artigo, aqui esta funfando blza. Porem gostaria de saber como ficaria as configurações no slave, ja que ambos serao em CHROOT.

Fico no aguardo ..
Abração ae

[26] Comentário enviado por andriopj em 17/03/2009 - 21:39h

eu dei start
e me retornou o seguinte: # /etc/rc.d/rc.bind start
Starting named: done

[27] Comentário enviado por rensga em 14/05/2009 - 16:22h

Olá pessoal...

Pra mim funcionou tudo tranquilamente...
Entretanto, eu só consigo startar o bind na mao (/etc/rc.d/rc.bind start).
Quando eu tento automatizar a inicializacao do servidor colocando essa linha no /etc/rc.d/rc.local
Ele me aparece o seguinte erro:
"Starting named: named: chroot(): Permission denied"
Alguma sugestao???

Obrigado desde já
Léo Lenza

[28] Comentário enviado por diony em 30/05/2009 - 11:57h

Sim, Caro Amigo...

já deu permissão de execução ao script rc.bind dentro de /etc/rc.d/ ???

Caso não faça esses procedimentos...

# cd /etc/rc.d

# chmod +x rc.bind

Feito isso, você não precisará incluir o rc.bind dentro do arquivo rc.local para execução no boot.
Todos os arquivos que estiverem dentro da pasta rc.local será carregado no boot durante a inicialização do linux.
Obs: Somente serão carregados os arquivos na cor verde (arquivos com permissão de execução) caso sua distro seja slackware.

Remova a linha que você colocou no rc.local e digite os comando que eu passei acma e reinicie o linux.

Poste a Resposta se deu certo ou não.

Abraçoo.....

[29] Comentário enviado por ralfoasis em 18/06/2009 - 14:07h

Otimo , muitooo bommm mesmo !!! parabéns pelo artigo que mostra tudo simples e passo a passo!!!


Obrigado

forte abraço

[30] Comentário enviado por henriquefc em 07/01/2013 - 01:23h

Opa galera, gostaria de saber nessa configuração se consigo efetua-la com dns dinâmico, se consigo ao invés dos números, usar um endereço no-ip, ou melhor ainda, conseguir utilizar algum script que altera meu endereço ip automaticamente


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts