Configuração
Thiago Alves da Silva <thiago@rnp.br>>
Rede Nacional de Ensino e Pesquisa (RNP)
Resumo
1. Introdução
1.1 Onde encontrar?
1.2 Requisitos
2. Compilação
3. Segurança com chroot
3.1 Criação de usuário e grupo
3.2 Criação da árvore de diretórios e arquivos necessários
3.3 Teste de configuração
4. Configurações do BIND
4.1 Seção "acl"
4.2 Seção "options":
4.3 Seção "server"
4.4 Seção "logging"
4.5 Seção "view":
4.6 Seção "zone":
4.7 Finalização
5. Ferramentas úteis
5.1 named-checkconf
5.2 named-checkczone
6. Dicas úteis
6.1 Escondendo a versão do BIND
6.2 "warning" com o named-checkconf
7. Conclusão
Referências bibliográficas
Resumo
O objetivo deste documento é mostrar quais foram as principais mudanças da versão 9 em relação a
versão 8 do software BIND, bem como a maneira correta de se configurar um servidor levando em
consideração essas mudanças, segurança e desempenho. Esta fora do escopo deste documento a
explanação do serviço DNS, como ele funciona e para que serve.
^
1. Introdução
Muitas foram as melhorias e mudanças nesta nova versão do BIND, entre elas podemos citar:
• Suporte a IPv6;
• DNSSEC e TSIG (Funções de segurança);
• Suporte a hardware com multiprocessadores;
• Dynamic update para uso em redes DHCP;
• Novos tipos de registros (RR – Resource Record);
• IXFR – Transferência de zonas incremental;
• Views (Permite várias visualizações do espaço de nomes);
• Etc.
^
1.2 Requisitos
O código fonte do software já inclui os fontes do pacote de bibliotecas criptográficas OpenSSL
necessários para as funções de segurança disponíveis (DNSSEC e TSIG), mas para uma melhor
performance das operações de criptografia é indicado que o pacote seja instalado separadamente e
configurado através da opção do autoconf:
#./configure --with-openssl=PATH
Site oficial OpenSSL - www.openssl.org
^
2. Compilação
A plataforma utilizada foi SPARCStation 20 com sistema operacional SUN Solaris 8 e NetFinity
3500 com sistema operacional OpenBSD 2.8. A lista de sistemas compatíveis esta em:
http://www.isc.org/products/BIND/bind9.html.
Após baixar o arquivo e descomprimi-lo vem a tarefa de compilação. Existem várias opções que
podem ser usadas para compilar o BIND 9.1.2, para maiores informações, consulte:
$ ./configure --help
Iremos usar as seguintes opções:
$./configure --with-openssl=/usr/ssl --sysconfdir=/etc
$ make
$ su root
Importante: Antes de instalar os binários e bibliotecas recomendamos realizar o backup de todos os
arquivos relacionados ao BIND que se encontram na máquina.Isso é um texto simulado, indicando
o tratamento do texto.
• named.conf
• Diretório do BIND. Ex.: /usr/local/bind
• Binários: named, ndc, named-xfer, dig e outros.
# make install
^
usr/ :
lib/ - Devem ser colocadas nesse diretório todas as bibliotecas usadas pelo
binário `named´.
4. Configurações do BIND
Com os arquivos instalados vem o momento da configuração de várias diretivas do software. O
arquivo de configuração é o named.conf e deve ser criado no diretório especificado no momento da
compilação (--sysconfdir=DIR), no nosso caso "/etc".
Neste exemplo que segue iremos mostrar as configurações vitais de um servidor DNS, logging,
zonas, servidores secundários, diretivas de segurança e outros.
Algumas diretivas são, nesta versão, obrigatórias e precisam ser configuradas para que o servidor
possa ser inicializado:
• "$TTL" – Cada arquivo de zona deve conter essa diretiva;
Usado como padrão para todos os registros que não possuem TTL especificado. Deve constar na
primeira linha do arquivo de zona.
• "Serial Number" – O número serial deve ser um valor inteiro (Integer);
Versões anteriores a 9 permitiam usar o números seriais como este: "3.002".
Ocorreram muitas modificações no arquivo de configuração named.conf. Para saber detalhadamente
quais foram as mudança de sintaxe, novas opções e opções que não são mais suportadas, pesquise
na documentação distribuída com o BIND:
Caminho relativo: "doc/misc/options" ou em "doc/arm"
Para uma melhor explicação do named.conf foi feita uma divisão em seções, onde cada seção trata
de um tipo de configuração: opção de configuração, logging, zonas e outras.
^
acl slaves {
200.4.5.6/32;
200.5.6.7/32;
};
request-ixfr yes;
};
category "xfer-out" {
"named_log";
};
category "xfer-in" {
"named_log";
};
category "general" {
"named_log";
};
view "private" IN {
match-clients { 200.1.2.0/24; };
zone-statistics yes;
recursion yes;
zone "rnp.br" {
type master;
file "rnp-interno.db";
};
};
Neste exemplo, a zona "rnp-externo.db" contém o mapeamento dos hosts públicos e pode ser
acessada por todos. Já a zona "rnp-interno.db" somente é acessada pelos hosts internos, ou seja,
todos da rede 200.1.2.0.
Se nenhuma "view" for especificada, o BIND tratará, por default, as zonas como sendo da classe IN
(Internet). Esse fato é importante, pois voltaremos a falar sobre isso na seção de "Dica útil".
Dentro das "views" são especificadas a configuração das zonas primárias e secundárias.
^
zone "0.0.127.in-addr.arpa" {
type master;
file "127.0.0.db";
};
zone "1.2.200.in-addr.arpa" {
type master;
file "200.2.1.db";
};
zone "rnp.br" {
type master;
file "rnp.br";
};
4.7 Finalização
Após a configuração deste arquivo, criação dos arquivos de zona, inclusive os de reverso, é
necessário que se obtenha a versão mais atual do arquivo (named.root) que contém o nome dos
servidores de mais alto nível, responsáveis pelo domínio raiz (".").
Para tal visite:
ftp://rs.internic.net/domain
Com o ambiente seguro e o arquivo de configuração criados, edite os arquivos de inicialização do
sistema para que o daemon possa ser inicializado, acrescentando a seguinte linha:
# named -t /var/named -u named
Parâmetros usados
-t - indica qual será a raiz do ambiente seguro;
-u - roda o daemon do BIND como o usuário especificado.
^
5. Ferramentas úteis
Juntamente com o BIND 9 é distribuído várias ferramentas que ajudam a solucionar problemas de
configuração, além de outras já conhecidas.
^
5.1 named-checkconf
Verifica a sintaxe do arquivo de configuração do BIND.
# named-checkconf [arquivo]
^
5.2 named-checkczone
Verifica a sintaxe e consistência dos arquivos de zona.
Sintaxe:
named-checkzone [-dq] [-c class] zona [arquivo]
Exemplo:
# named-checkzone rnp.br rnp.db
Irá verificar se o arquivo de zona "rnp.db" está correto para a zona "rnp.br".
^
6. Dicas úteis
Como vimos anteriormente, o BIND tratará todas as zonas como pertencendo a uma única "view",
se essa não for especificada, de classe IN. Para que possamos então inserir uma zona de classe
diferente, CHAOS, precisamos criar uma "view" própria, e foi o que fizemos. Além disso, a zona
"." é obrigatória para todas as "views". Após configurar uma "view" é necessário que todas as
outras zonas também façam parte de uma.
^
7. Conclusão
Algumas funcionalidades não foram abordadas neste documento que visou principalmente a
migração da versão 8 para a 9 do software BIND, principais diferenças, aspectos de segurança e
melhorias.
Entre essas funcionalidades estão as que trazem mais segurança ao serviço de DNS (DNSSEC e
TSIG) e suporte a IPv6. Com toda a certeza depois que essas funcionalidades tiverem sido testadas
um outro documento será produzido.
Com os problemas referentes aos logs esperamos que os desenvolvedores do BIND possam corrigi-
los, pois as informações de transferência de zonas e consultas recusadas são fundamentais para
auditorias. Caso alguém não tenha paciência para esperar, o fonte esta a disposição para ser
alterado.
^
Referências bibliográficas
[1] Documentação fornecida com o software ; Em bind-9.x.x/doc/.
[2] Site oficial: http://www.isc.org/products/BIND
[3] Topics for System Administration, 1 - What's New in BIND9 – LISA 2000; Evi Nemeth –
University of Colorado;CAIDA – San Diego Supercomputer Center, UC San Diego;
[4] Chroot-BIND HOWTO; http://www.losurs.org/docs/howto/Chroot-BIND.html Scott Wunsch,
scott at wunsch.org;
^
NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004