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

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

Operadoras de Banda Larga com Medição de Velocidade

Passos essenciais para configurar seu modem 3G no Linux

Tor Browser e Rede Tor no Arch Linux - Instalação e Utilização

Slackware 14 - Roteamento com duas placas wireless

Conectando Ajato com Linux

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts