Pular para o conteúdo

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.
João Paulo de Oliveira Faria jpfaria
Hits: 322.554 Categoria: Linux Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

Introdução

Todas as informações contidas nesse documento foram testadas no Slackware 10.1.

Não me responsabilizo por qualquer problema que essas informações possam causar ao seu servidor.

Todos estão autorizados a publicar esse artigo, desde que preserve minha autoridade.

Antes vou explicar o que é um servidor DNS (Domain Name Server).

Um servidor DNS é responsável em responder pelo(s) domínio(s) e direcionar tudo que é relacionado à ele, nele por exemplo você vai apontar onde fica o www.domínio.com.br, vai apontar também quais são os servidores de entrada de email e por aí vai. Ele também possui outras utilidades, como por exemplo em uma rede interna, com ele configurado em um servidor de sua rede, você não precisará informar o servidor DNS do seu provedor, basta somente apontá-lo para ele e até fazer com que sua empresa toda responda por hosts, por exemplo: maquina-1.domínio.com.br, maquina-2.domínio.com.br.

Usaremos o BIND para ser responsável em servir o DNS, e vamos utilizar o CHROOT para colocar mos o BIND em "jauling", ou seja, vamos prender o bind para que mesmo que o invasor consiga entrar na maquina ele não consiga fazer nada, nem mesmo derrubar próprio BIND.

Sabemos que nosso bom e velho BIND tem algumas falhas de segurança e eu pude constatar isso quando fui invadido 2 vezes em menos de 3 dias, administro um server que hospeda mais de 3 mil domínios e o mesmo acabou virando alvo de vários ataques.

Então tive que estudar mais um pouquinho para aprender a fazer dessa forma a instalação e configuração do BIND.

   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

Instalando e configurando um servidor DNS (Bind)

PEAR - Utilizando classes prontas e documentadas no PHP

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

Sendmail com antivírus e autenticação SMTP

Qpopper (POP seguro) no Slackware

Reaproveitamento e meio ambiente

Cursos online grátis sobre Software Livre!

Gerenciamento de pacotes no Slackware Linux

Podman - um mecanismo de contêiner sem daemon

Rust - Uma nova linguagem de programação

#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

Entre na sua conta para comentar.