Configurando
Seguindo o padrão do Slackware, acho que a maioria das distros tambem, 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 ACL'S ONDE SERÃO DEFINIDOS OS VALORES COMO REDE INTERNA E DNS'S SECUNDARIOS
*/
// 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 IP'S DE SEUS DNS'S SECUNDARIOS SE POSSUIR MAIS QUE UM, COLOQUE AQUI ASSIM AJUDA A MANTE-LOS ATUALIZADOS COM O DNS PRIMARIO
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 DIFICULTAR O TRABALHO DE IDENTIFICAR QUAL A VERSÃO DO BIND
version "Microsoft/DNS 7.0b";
// query-source address * port 53;
// NECESSARIO PARA O NOSSO REVERSO FUNCIONAR DE ACORDO COM OS DNS'S DA OPERADORA QUE FORNECEU OS IP'S E LIBERAMOS A OPÇÃO DE ATUALIZAR AS ZONAS DOS SECUNDARIOS
Allow-transfer {201.201.201.1; 201.201.201.2; 200.200.200.2; 200.200.200.3; };
// LIBERA OS IP'S 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 MAU
dnssec-enable yes;
};
// VAMOS AS VIEWS
view "interna" {
// AQUI DEFINIMOS QUAIS OS CLIENTES QUE FAZEM PARTE DESSA VIEW, QUE FORAM DEFINIDOS NAS ACL'S 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 DOMINIO 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 SISTEMATICA DA VIEW ANTERIOR, POREM 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á criado as Views, para uma melhor organização foi criado dentro do diretorio dos arquivos de zona dois subdiretorios /var/named/interno e /var/named/adrianobalani, sendo um responsavel 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's da empresa, sendo assim tivemos um excelente ganho de desempenho, diminuindo quase a zero as respostas negativas e ganhando muita velocidade, porem, abaixo seguem algumas regras do iptables para diminuir as tentativas de DOS e Envenenamento de Cache.
1.iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --update --seconds 10 --hitcount 3 -j DROP
2.iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --set -j ACCEPT
fonte: http://petryx.blogrs.com.br/2009/03/05/bloqueando-ataque-dns-query-cache-nsin-denied/
Essas regras exigem um tempo minimo de conexão de 10 as conexões que não respeitaram seram bloqueadas.
Espero poder contribuir, estou trabalhando uma maneira de integra-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.