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

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


Criando o arquivo de permissão e de inicialização



1 - Crie o arquivo /chroot/named.perms e cole o conteúdo abaixo nele:

#
# named.perms
#
# Set the ownership and permissions on the named directory
#


cd /chroot/named


# By default, root owns everything and only root can write, but dirs
# have to be executable too. Note that some platforms use a dot
# instead of a colon between user/group in the chown parameters}


chown -R root:named .

find . -type f -print | xargs chmod u=rw,og=r # regular files
find . -type d -print | xargs chmod u=rwx,og=rx # directories

# the named.conf and rndc.conf must protect their keys
chmod o= etc/*.conf

# the "secondaries" directory is where we park files from
# master nameservers, and named needs to be able to update
# these files and create new ones.

touch conf/secondaries/.empty # placeholder
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/
chmod ug=rwx,o= conf/secondaries/

# the var/run business is for the PID file
chown root:root var/
chmod u=rwx,og=x var/

chown root:named var/run/
chmod ug=rwx,o=rx var/run/

# named has to be able to create logfiles
chown root:named logs/
chmod ug=rwx,o=rx logs/

2 - Agora execute o comando abaixo, para dar as devidas permissões em toda estrutura:

# sh -x /chroot/named.perms

Você verá a seguinte mensagem:

+ cd /chroot/named
+ chown -R root:named .
+ find . -type f -print
+ xargs chmod u=rw,og=r
+ find . -type d -print
+ xargs chmod u=rwx,og=rx
+ chmod o= etc/named.conf etc/rndc.conf
+ 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/
+ chmod ug=rwx,o= conf/secondaries/
+ chown root:root var/
+ chmod u=rwx,og=x var/
+ chown root:named var/run/
+ chmod ug=rwx,o=rx var/run/

3 - Crie o arquivo /chroot/named.start com o seguinte conteúdo:

#
# 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

Agora de a permissão nele para executar:

# chmod a+x /chroot/named.start

4 - Vamos recriar o arquivo de inicialização do bind:

# rm -r /etc/rc.d/rc.bind

Agora crie novamente o arquivo /etc/rc.d/rc.bind com o seguinte conteúdo:

#!/bin/sh
#
# named
#

export PATH=/usr/sbin:$PATH       # needed for rndc

case "$1" in
  start)
        # Start daemons.
        echo -n "Starting named: "
        sh /chroot/named.start
        echo "done"
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killall named
        echo "done"
        ;;
esac

Dê a permissão necessária no arquivo de inicialização:

# chmod +x /etc/rc.d/rc.bind

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

Instalando e configurando um servidor DNS (Bind)

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

Instalando o AWSTATS no Slackware

PEAR - Utilizando classes prontas e documentadas no PHP

SpamAssassin no Sendmail usando o Procmail

Leitura recomendada

Gravando área de trabalho em MP4 e depois transformando o vídeo em GIF

Slides em PDF com o LaTeX

Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg

Distro-VOL: Meta-pacotes e comandos

Análise do Syllable, mais um interresante sistema operacional livre

  
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