Você está na página 1de 11

Bind verso 9: Procedimento de Instalao e Configurao Thiago Alves da Silva <thiago@rnp.

br>> Rede Nacional de Ensino e Pesquisa (RNP) Resumo 1. Introduo 1.1 Onde encontrar? 1.2 Requisitos 2. Compilao 3. Segurana com chroot 3.1 Criao de usurio e grupo 3.2 Criao da rvore de diretrios e arquivos necessrios 3.3 Teste de configurao 4. Configuraes do BIND 4.1 Seo "acl" 4.2 Seo "options": 4.3 Seo "server" 4.4 Seo "logging" 4.5 Seo "view": 4.6 Seo "zone": 4.7 Finalizao 5. Ferramentas teis 5.1 named-checkconf 5.2 named-checkczone 6. Dicas teis 6.1 Escondendo a verso do BIND 6.2 "warning" com o named-checkconf 7. Concluso Referncias bibliogrficas Resumo O objetivo deste documento mostrar quais foram as principais mudanas da verso 9 em relao a verso 8 do software BIND, bem como a maneira correta de se configurar um servidor levando em considerao essas mudanas, segurana e desempenho. Esta fora do escopo deste documento a explanao do servio DNS, como ele funciona e para que serve. ^ 1. Introduo Muitas foram as melhorias e mudanas nesta nova verso do BIND, entre elas podemos citar:

Suporte a IPv6; DNSSEC e TSIG (Funes de segurana); Suporte a hardware com multiprocessadores; Dynamic update para uso em redes DHCP; Novos tipos de registros (RR Resource Record); IXFR Transferncia de zonas incremental; Views (Permite vrias visualizaes do espao de nomes); Etc.

^ 1.1 Onde encontrar? O software BIND se encontra na verso 9.1.2. Cdigo fonte: ftp://ftp.isc.org/isc/bind9/9.1.2/bind-9.1.2.tar.gz Assinatura PGP do cdigo fonte: ftp://ftp.isc.org/isc/bind9/9.1.2/bind-9.1.2.tar.gz.asc Chave Pblica PGP do ISC: http://www.isc.org/ISC/isckey.txt ^ 1.2 Requisitos O cdigo fonte do software j inclui os fontes do pacote de bibliotecas criptogrficas OpenSSL necessrios para as funes de segurana disponveis (DNSSEC e TSIG), mas para uma melhor performance das operaes de criptografia indicado que o pacote seja instalado separadamente e configurado atravs da opo do autoconf: #./configure --with-openssl=PATH Site oficial OpenSSL - www.openssl.org ^ 2. Compilao 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 compatveis esta em: http://www.isc.org/products/BIND/bind9.html. Aps baixar o arquivo e descomprimi-lo vem a tarefa de compilao. Existem vrias opes que podem ser usadas para compilar o BIND 9.1.2, para maiores informaes, consulte: $ ./configure --help Iremos usar as seguintes opes: $./configure --with-openssl=/usr/ssl --sysconfdir=/etc $ make $ su root Importante: Antes de instalar os binrios e bibliotecas recomendamos realizar o backup de todos os arquivos relacionados ao BIND que se encontram na mquina.Isso um texto simulado, indicando o tratamento do texto.

named.conf Diretrio do BIND. Ex.: /usr/local/bind Binrios: named, ndc, named-xfer, dig e outros.

# make install

^ 3. Segurana com chroot Para tornar seu sistema mais seguro contra possveis invases o ideal fazer com que o daemon do BIND rode em um ambiente protegido, mais conhecido como "in jail", e tambm como um usurio no privilegiado.. A seguir esto os passos que devem ser tomados para a criao desse ambiente seguro: ^ 3.1 Criao de usurio e grupo Crie o usurio que ser usado e o grupo ao qual ele pertencer. Nesse exemplo usaremos o usurio "named" e grupo "named". ^ 3.2 Criao da rvore de diretrios e arquivos necessrios importante lembrar que as modificaes citadas abaixo no se referem aos arquivos principais do sistema, deve-se apenas us-los como base ou partir do zero. O que queremos dizer que no se deve mexer, por exemplo, no "/etc/passwd". Os arquivos e diretrios devem ser criados sob o diretrio que ser designado raiz, em nosso exemplo "/var/named". dev/: null Para criar esse arquivo especial use o comando "mknod": Exemplo: # mknod null c x y onde "x" e "y" so o "minor number " e o "major number", respectivamente. Dica: Para descobrir os valores corretos de "x" e "y", faa: # ls -l /dev/null os valores sero listados no lugar do tamanho do arquivo. etc/ : passwd (somente com root e named e senha igual a '*') group (somente com sys e named) shadow ou master.passwd (Somente com root e named e senha igual a `*.) named.conf resolv.conf

localtime (link simblico para o arquivo de `time zone) usr/ : lib/ - Devem ser colocadas nesse diretrio todas as bibliotecas usadas pelo binrio `named. share/zoneinfo/Brazil/East (Arquivo de `time zone usado) Dica: Para descobrir as bibliotecas use o comando "ldd": # ldd named Resultado: named lcrypto.2 => /usr/lib/libcrypto.so.2.4 (0x40182000) lc_r.3 => /usr/lib/libc_r.so.3.1 (0x4022b000) ^ 3.3 Teste de configurao Com a configurao j feita precisamos testar se tudo est perfeito, para isso vamos executar o comando "chroot": # chroot /var/named /usr/local/sbin/named -u named -g Esse comando ir executar o daemon do BIND "enjaulado", como usurio "named" e no modo de depurao. A partir disso pode se constatar erros e realizar os acertos necessrios. Durante os testes alguns erros surgiram: "No ld.so" significa que a biblioteca "ld.so" esta faltando no diretrio dentro do ambiente seguro, ou seja, em /var/named/usr/lib ou /var/named/usr/libexec, dependo do sistema operacional; "User 'named' unknown" Em sistemas BSD necessrio que o arquivo master.passwd tambm esteja no diretrio "etc/", e mais, que o comando "pwd_mkdb" seja executado para a criao dos arquivos de contas do sistema: # pwd_mkdb -d /var/named/etc /var/named/etc/master.passwd ^ 4. Configuraes do BIND Com os arquivos instalados vem o momento da configurao de vrias diretivas do software. O arquivo de configurao o named.conf e deve ser criado no diretrio especificado no momento da compilao (--sysconfdir=DIR), no nosso caso "/etc". Neste exemplo que segue iremos mostrar as configuraes vitais de um servidor DNS, logging, zonas, servidores secundrios, diretivas de segurana e outros.

Algumas diretivas so, nesta verso, obrigatrias e precisam ser configuradas para que o servidor possa ser inicializado:

"$TTL" Cada arquivo de zona deve conter essa diretiva;

Usado como padro para todos os registros que no possuem TTL especificado. Deve constar na primeira linha do arquivo de zona.

"Serial Number" O nmero serial deve ser um valor inteiro (Integer);

Verses anteriores a 9 permitiam usar o nmeros seriais como este: "3.002". Ocorreram muitas modificaes no arquivo de configurao named.conf. Para saber detalhadamente quais foram as mudana de sintaxe, novas opes e opes que no so mais suportadas, pesquise na documentao distribuda com o BIND: Caminho relativo: "doc/misc/options" ou em "doc/arm" Para uma melhor explicao do named.conf foi feita uma diviso em sees, onde cada seo trata de um tipo de configurao: opo de configurao, logging, zonas e outras. ^ 4.1 Seo "acl" Com as ACL's (Access Control Lists) podemos criar listas de endereos IP's e designarmos nomes a essas listas, com o nico objetivo de quando formos nos referenciar a endereos IP usarmos nomes em vez de nmeros. Algumas acl's j existem e podem ser usadas:

any Todos os hosts; none Nenhum host; localhosts Todos os IP's das interfaces da mquina; localnets A rede inteira a qual a mquina faz parte;

Outros exemplos: acl intranet { 200.1.2.0/24; 200.1.3.0/24; }; acl slaves { 200.4.5.6/32; 200.5.6.7/32; }; ^ 4.2 Seo "options": ^ 4.3 Seo "server"

Master - Deve ser configurado no servidor primrio: server 200.2.1.1 { provide-ixfr yes; transfer-format ( many-answers ); }; Slave - Deve ser configurado no servidor secundrio: server 200.2.1.2 { request-ixfr yes; }; A transferncia de zona incremental (IXFR) tem como finalidade diminuir a quantidade de informaes trocadas, transferindo somente as mudanas feitas nas zonas do servidor primrio para o servidor secundrio. Com essa configurao estamos dizendo que o servidor primrio fornecer esse recurso de transferncia e o servidor secundrio sempre que possvel utilizar. Quando, por algum motivo, o servidor primrio recusar uma IXFR, uma AXFR, transferncia de zona convencional, ser realizada. ^ 4.4 Seo "logging" Registro das mensagens do BIND. importante saber que somente entrar em vigor as opes de logging depois que todo o arquivo named.conf for lido e o servidor for inicializado, antes disso as mensagens de erro sero enviadas para o sistema de syslog. logging { channel "named_log" { syslog local3; severity info; }; category "security" { "named_log"; }; category "xfer-out" { "named_log"; }; category "xfer-in" { "named_log"; }; category "general" { "named_log"; };

O registro de logs no BIND 9 divido da seguinte forma:

"channel" usado para especificar onde e que tipo de informao deve ser registrada nveis (error, info, dynamic, etc). Nele voc pode configurar o BIND tanto para usar o syslog, como um arquivo qualquer. No nosso exemplo utilizamos a categoria "local3" do syslog. "category" categorias de log do BIND. Existem vrias categorias que podem ser usadas, tais como: security, xfer-out, notify, xfer-in, network, etc. Como os prprios nomes dizem, em security informaes de segurana, em notify notificaes de mudana na zonas primrias, etc.

Diante disso especificamos como queremos registrar (channel) e o que queremos registar (category): erros, informaes de depurao, etc. Alguns problemas foram detectados e reportados ao time de desenvolvedores do BIND, mas at a data da publicao desse tutorial no havamos obtido respostas. Um dos problemas diz respeito ao modo como o novo BIND registra os eventos, por exemplo, a categoria "xfer-out" deveria registrar as transferncia de zona que so enviadas pelo servidor, mas isso no acontece, s conseguimos registrar tais eventos com o nvel de log igual a "severity debug 6", em "channel". Isso se torna invivel visto que muitas outras informaes tambm so registradas, informaes desnecessrias. Outra questo importante diz respeito ao contedo que registrado. Somente informaes superficiais so registradas. Por exemplo, se algum tentar realizar uma transferncia de zona, somente a mensagem "< IP#Porta > zone transfer denied" ir ser registrada. O nome da zona no constar nos logs. Novamente, s conseguiremos tal feito se utilizarmos nvel de depurao igual a 6. Em nosso exemplo usamos o nvel "info" para podermos registrar as informaes das categorias segurana, transferncias de zona e "general" informaes que no esto classificadas em nenhuma das outras categorias disponveis. Fica a critrio do administrador o modo de log do BIND. Como tambm, pretendemos utilizar o BIND em um ambiente seguro, no poderamos mais contar com o syslogd, pois no teramos mais o socket unix "/dev/log" que usado para receber as entradas de log. Isso pode ser contornado utilizando verses recentes do syslogd, onde um outro socket para recebimento de informaes pode ser utilizado na sua inicializao. Com a opo "-a" ou "-l", dependendo da plataforma, voc especifica onde se localiza o socket adicional: # syslogd -a /var/named/dev Outra forma seria fazer com que o BIND registre os logs em arquivos, mas ficaramos impossibilitados de usar um servidor de logs (loghost). ^ 4.5 Seo "view": Com essa nova opo de configurao pode-se fazer hoje o que antes era necessrio com dois ou mais servidores DNS.

A idia principal por detrs desta nova opo permitir que possa ser configurado o que se conhece como "split DNS", ou seja, separar em dois ou mais servidores DNS os registros que podem ser acessados por toda Internet e os que somente so de interesse da empresa. Isso usado principalmente em redes "desmilitarizadas", onde o servidor que se encontra na DMZ, de acesso publico, contm somente os registros dos hosts "visveis" na Internet e o interno, com os registros da rede interna. Bastante til, tambm, em sites que implementam NAT. Com a configurao abaixo ficar mais claro o entendimento deste novo recurso. view "public" IN { match-clients { any; }; zone-statistics yes; recursion no; zone "rnp.br" { type master; file "rnp-externo.br"; }; }; 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" contm o mapeamento dos hosts pblicos 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 seo de "Dica til". Dentro das "views" so especificadas a configurao das zonas primrias e secundrias. ^ 4.6 Seo "zone": Configurao das zonas as quais o servidor responder. Nela se configura as zonas primrias, secundrias, reversos e outros tipos. Tambm deve constar nessa configurao a zona "." do tipo "hint", raiz da Internet. zone "." { type hint; File "named.root"; }; 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 Finalizao Aps a configurao deste arquivo, criao dos arquivos de zona, inclusive os de reverso, necessrio que se obtenha a verso mais atual do arquivo (named.root) que contm o nome dos servidores de mais alto nvel, responsveis pelo domnio raiz ("."). Para tal visite: ftp://rs.internic.net/domain Com o ambiente seguro e o arquivo de configurao criados, edite os arquivos de inicializao do sistema para que o daemon possa ser inicializado, acrescentando a seguinte linha: # named -t /var/named -u named Parmetros usados -t - indica qual ser a raiz do ambiente seguro; -u - roda o daemon do BIND como o usurio especificado. ^ 5. Ferramentas teis Juntamente com o BIND 9 distribudo vrias ferramentas que ajudam a solucionar problemas de configurao, alm de outras j conhecidas. ^ 5.1 named-checkconf Verifica a sintaxe do arquivo de configurao do BIND. # named-checkconf [arquivo] ^

5.2 named-checkczone Verifica a sintaxe e consistncia 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 6.1 Escondendo a verso do BIND A maneira mais simples de ocultar aos olhos dos outros a verso do seu sistema incluindo em options a clusula version: version "Not Available"; Mas para podermos ir alm disso e registrar as consultas verso devemos criar uma zona especial que conter a seguinte configurao: view "version" CHAOS { match-clients { any; }; recursion no; zone "." { type hint; file "/dev/null"; }; zone "bind" chaos { allow-query { localhost; }; type master; "file bind.db"; }; }; Como vimos anteriormente, o BIND tratar todas as zonas como pertencendo a uma nica "view", se essa no for especificada, de classe IN. Para que possamos ento inserir uma zona de classe diferente, CHAOS, precisamos criar uma "view" prpria, e foi o que fizemos. Alm disso, a zona "." obrigatria para todas as "views". Aps configurar uma "view" necessrio que todas as outras zonas tambm faam parte de uma. ^ 6.2 "warning" com o named-checkconf Aps executar o comando "named-checkconf" o seguinte aviso emitido:

"the default for the 'auth-nxdomain' option is now 'no'". Nesta verso a opo auth-nxdomain por default desligada, para evitar essa mensagem de aviso acrescente esta linha na seo "options" do named.conf: auth-nxdomain no; ^ 7. Concluso Algumas funcionalidades no foram abordadas neste documento que visou principalmente a migrao da verso 8 para a 9 do software BIND, principais diferenas, aspectos de segurana e melhorias. Entre essas funcionalidades esto as que trazem mais segurana ao servio 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 informaes de transferncia de zonas e consultas recusadas so fundamentais para auditorias. Caso algum no tenha pacincia para esperar, o fonte esta a disposio para ser alterado. ^

Você também pode gostar