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.