Recurso de Views no Bind

O recurso de Views no Bind é uma mão na roda para o administrador de redes. Com esse recurso é possível fazer diversas implementações como, quem tem um DNS para uso interno e externo, limitar os recursos como cache e recursividade e autoridade sob um domínio.

[ Hits: 25.992 ]

Por: Adriano Rodrigues Balani em 22/09/2009 | Blog: http://blogdobalani.blogspot.com


Arquivo named.conf



Seguindo o padrão do Slackware, acho que a maioria das distros também, o arquivo named.conf fica dentro de /etc/. É nesse arquivo que faremos a alteração. Abaixo segue um exemplo do named.conf, suas diretrizes serão comentadas.

# vim /etc/named.conf

/* PRIMEIRO CRIAMOS AS ACLs ONDE SERÃO DEFINIDOS OS VALORES COMO REDE INTERNA E DNS SECUNDÁRIOS */
// AQUI SEGUE O ENDEREÇO DA REDE INTERNA, SE POSSUIR MAIS QUE UM COLOQUE AQUI
acl "internos" {
   192.168.1.0/24;
   127.0.0.1;
};

// COLOQUE AQUI OS IPs DE SEUS DNS SECUNDÁRIOS SE POSSUIR MAIS QUE UM, COLOQUE AQUI, ASSIM AJUDA A MANTÊ-LOS ATUALIZADOS COM O DNS PRIMÁRIO
acl "dns_interno" {
   192.168.1.3;
   192.168.1.4;
};

acl "dns_externo" {
   200.200.200.2;
   200.200.200.3;
};

options {
   directory "/var/named"; // AJUDA A DIFICULTAR O TRABALHO DE IDENTIFICAR QUAL A VERSÃO DO BIND  
   version "Microsoft/DNS 7.0b";
   // query-source address * port 53;  
   // NECESSÁRIO PARA O NOSSO REVERSO FUNCIONAR DE ACORDO COM OS DNS DA OPERADORA QUE FORNECEU OS IPs E LIBERAMOS A OPÇÃO DE ATUALIZAR AS ZONAS DOS SECUNDÁRIOS  
   Allow-transfer {201.201.201.1; 201.201.201.2; 200.200.200.2; 200.200.200.3; };
   // LIBERA OS IPs ONDE SERÃO ENTREGUES AS CONSULTAS  
   listen-on { 200.200.200.1; 192.168.1.2;127.0.0.1; };
   // DESABILITA O PROTOCOLO IPV6  
   listen-on-v6 { none; };
   // UM POUCO DE SEGURANÇA NÃO FAZ MAL
   dnssec-enable yes;
};

// VAMOS AS VIEWS
view "interna"  {
// AQUI DEFINIMOS QUAIS OS CLIENTES QUE FAZEM PARTE DESSA VIEW, QUE FORAM DEFINIDOS NAS ACLs ACIMA  
   match-clients { internos; };
   // AQUI ESTÁ HABILITADO A OPÇÃO DE RECURSÃO (A BUSCA DE SITES NA NET)  
   recursion yes;

   //AQUI COMEÇA A CONFIGURAÇÃO DE DNS CACHE E RECURSIVO  
   zone "." IN {
      type hint;
      file "caching-example/named.root";
   };

   zone "localhost" IN {
      type master;
      file "caching-example/localhost.zone";
      allow-update { none; };
   };

   zone "0.0.127.in-addr.arpa" IN {
      type master;
      file "caching-example/named.local";
      allow-update { none; };
   };
   // AQUI TERMINA A OPÇÃO ANTERIOR E COMEÇA A CONFIGURAÇÃO DO MEU DOMÍNIO INTERNO, AS ZONAS DIRETAS E REVERSA
   zone "adrianobalani.com.br" IN {
      type master;
      file "interno/adrianobalani.int.zone";
      allow-update { dns_interno; };
   };

   zone "1.168.192.in-addr.arpa" IN {
      type master;
      file "interno/adrianobalani.int.rev";
      allow-update { dns_interno; };
   };

};

// AQUI COMEÇA A VIEW EXTERNA, SEGUE A MESMA SISTEMÁTICA DA VIEW ANTERIOR, PORÉM COM ALGUMAS DIFERENÇAS
view "externa" {
   // TIPO DE CLIENTE QUE TERÁ ACESSO, NESSE CASO QUALQUER UM  
   match-clients { any; };
   // SEM RECURSÃO, OU MELHOR, RESOLUÇÃO DE NOMES  
   recursion no;

   zone "adrianobalani.com.br" IN {
      type master;
      file "adrianobalani/adriano.zone";
      allow-update { 200.200.200.2; 200.200.200.3; };
   };

   zone "8-1.200.200.200.in-addr.arpa" IN {
      type master;
      file "adrianobalani/adriano.rev";
      allow-update { 200.200.200.2; 200.200.200.3; };
   };
};

Pronto, estão criadas as Views, para uma melhor organização foi criado, dentro do diretório dos arquivos de zona, dois subdiretórios, /var/named/interno e /var/named/adrianobalani, sendo um responsável por armazenar os arquivos de zona interno e outro as externas.

Essa foi uma das maneiras em que eu consegui diminuir o uso externo dos DNS da empresa, sendo assim tivemos um excelente ganho de desempenho, diminuindo quase a zero as respostas negativas e ganhando muita velocidade, porém, abaixo seguem algumas regras do Iptables para diminuir as tentativas de DOS e Envenenamento de Cache.

iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --update --seconds 10 --hitcount 3 -j DROP
iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --set -j ACCEPT

Fonte: Petryx :: » Bloqueando ataque DNS query (cache) ‘./NS/IN’ denied

Essas regras exigem um tempo mínimo de conexão de 10 segundos. As conexões que não respeitarem serão bloqueadas.

Espero poder contribuir, estou trabalhando uma maneira de integrá-lo com dhcpd e Active Directory para fazer buscas mais conclusivas na rede interna e com o dhcpd para adicionar os micros direto na zona direta e reversa.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Arquivo named.conf
Outros artigos deste autor

Imspector, um proxy para mensageiros instantâneos no Linux

Leitura recomendada

Radius - Freeradius com MySQL no Debian

Hugo - Gerador de Site Estático

Entendendo TCP/IP (Parte 3) - Resolução de nomes

FreeBSD 6.2 com MySQL 5 + Apache 2 + PHP 5 + phpMyAdmin

Instalando e configurando a placa 3G EVDO da Vivo no Ubuntu 6.06 LTS

  
Comentários
[1] Comentário enviado por magnolinux em 22/09/2009 - 08:48h

Otimo artigo!

Especifico para usuarios que já utilizam o bind.

continue contribuindo com bons artigos.

[2] Comentário enviado por balani em 22/09/2009 - 09:27h

Valeu amigo, obrigado!!!

[3] Comentário enviado por maxhfm em 01/01/2010 - 22:27h

ola, galera do linux
estou com um problema em meu dns, nao consigo acessar meu dominio externamente, so consigo internamente, apresenta o seguinte erro no log:
client 200.165.xxx.xxx#31224: view externa: query 'www.amigosunidos.com.br/A/IN' denied

Se alguem pudere me ajudar


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts