DNS Recursivo
Ir para navegação
Ir para pesquisar
Requisitos
SO: Ubuntu Server 22.04.2 LTS
Memória: 4Gb
Disco: 40Gb
CPU: 2vCPU
Firewall Entrada
TCP 22 - Confiáveis
TCP/UDP 53 - Somente hosts clientes de consultas (Se tiver DNS Autoritativo ou Reverso junto, estas portas devem estar aberta externamente)
Pacotes Essenciais
apt-get install net-tools -y apt-get install vim -y apt-get install nmap -y apt-get install cockpit -y
Instalação bind9
apt-get install bind9 dnsutils -y
Configurar consultas localmente
echo "nameserver 127.0.0.1" > /etc/resolv.conf echo "nameserver ::1" >> /etc/resolv.conf
Testes de funcionamento
dig @localhost google.com.br dig @127.0.0.1 google.com.br dig @::1 google.com.br +short host google.com.br
Localizando erros de consulta
dig @localhost google.com.br +trace
Configurando Recursivo (Master)
vim /etc/bind/named.conf.options
// ACL "autorizados" essa colocamos os IPs que são autorizados a fazer consultas recursivas neste servidor. // Neste caso vou incluir os IPs que foram nos delegados bem como de localhost e todos IPs privados. acl autorizados { 127.0.0.1; ::1; 192.168.0.0/16; 172.16.0.0/12; 100.64.0.0/10; 10.0.0.0/8; 45.80.48.0/22; 2804:f123::/32; df00::/8; 2001:db8::/32; fe80::/64; }; options { // O diretório de trabalho do servidor // Quaisquer caminho não informado será tomado como padrão este diretório directory "/var/cache/bind"; //Suporte a DNSSEC dnssec-validation auto; // Conforme RFC1035 // https://www.ietf.org/rfc/rfc1035.txt // Se o servidor deve responder negativamente (NXDOMAIN) para consultas de domínios que não existem. auth-nxdomain no; // Respondendo para IPv4 e IPv6 // Porta 53 estará aberta para ambos v4 e v6 (pode ser informar apenas os IPs que ficarão ouvindo) // ex listen-on { 127.0.0.1; 45.80.48.2; }; // ex listen-on-v6 { ::1; 2804:f123:bebe:cafe::2; }; // ou any para todos os IPs das interfaces (recomendado, pricipalmente em anycast) listen-on { any; }; listen-on-v6 { any; }; // Serve como uma ferramenta de mitigação para o problema de ataques de amplificação de DNS // No momento, a implementação de RRL (Response Rate Limiting)é recomendada apenas para servidores autoritativos // Se seu servidor será apenas autoritativo descomente as linhas a baixo. (https://kb.isc.org/docs/aa-00994) //rate-limit { // responses-per-second 15; // window 5; //}; // Informações adicionais em suas respostas DNS // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída. // O padrão BIND é (no) não. minimal-responses yes; // Reduzir o tráfego da rede e aumentar o desempenho, o servidor armazena respostas negativas. // é usado para definir um tempo máximo de retenção para essas respostas no servidor. (segundos) // Determina por quanto tempo o servidor irá acreditar nas informações armazenadas em cache de // respostas negativas (NXDOMAIN) antes de buscar novamente informações. max-ncache-ttl 300; // Desativar recursão. Por padrão já é yes. // recursion no; // Especifica quais hosts estão autorizados a fazer consultas // recursivas através deste servidor. // Aqui que você vai informar os IPs da sua rede que você irá permitir consultar os DNS. allow-recursion { autorizados; }; // Endereço estão autorizados a emitir consultas ao cache local, // sem acesso ao cache local as consultas recursivas são inúteis. allow-query-cache { autorizados; }; // Especifica quais hosts estão autorizados a “fazer perguntas” ao seu DNS. // Se for apenas recursivo pode informa a ACL “autorizados” // allow-query { autorizados; }; allow-query { any; }; // Especifica quais hosts estão autorizados a receber transferências de zona a partir do servidor. // Seu servidor Secundário, no nosso ex vou deixar então o ips dos dois servidores v4 e v6. allow-transfer { 45.80.48.3; 2804:f123:bebe:cafe::3; }; also-notify { 45.80.48.3; 2804:f123:bebe:cafe::3; }; // Esta opção faz com que o servidor slave ao fazer a transferência de zonas // mastes deste servidor no formato binário (raw) do arquivo ou texto (text) // text será legível por humanos, já raw formato é mais eficiente em termos de desempenho. // masterfile-format raw; masterfile-format text; // Para evitar que vase a versao do Bind, definimos um nome // Reza a lenda que deixar RR DNS Server seu servidor nunca sofrerá ataques. version "RR DNS Server – Do good"; // Define a quant. máxima de memória a ser usada para o cache do servidor (bytes ou porcentagem) // Por padrão no debian 10/bind9 ele reserva 90% da memoria física. Então não se apavore com log ex.: // Servidor com 2GB: none:106: 'max-cache-size 90%' - setting to 1795MB (out of 1994MB) // Recomendo não alterar // max-cache-size 512M; // max-cache-size 50%; // Isso define o tempo mínimo para o qual o servidor armazena // em cache as respostas positivas, em segundos. // Ex o tiktok.com manda tempo de ttl de 20 segundos, // e você quer ignorar esse valor 20 e setar que o minimo seja 90. // que é o máximo permitido. min-cache-ttl 90; // Não recomendado alterar para menos que 24h. // Define o tempo máximo durante o qual o servidor armazena (informado pelo dono do domínio) // em cache as respostas positivas, em segundos. O max-cache-ttl padrão é 604800 (uma semana) // max-cache-ttl 86400; // 24h };
Configurando LOGs
vim /etc/bind/named.conf
logging { channel security_file { file "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; channel file_log { file "/var/log/named/bind.log" versions 3 size 1m; severity info; #severity debug 3; print-time yes; print-severity yes; print-category yes; }; channel dnssec_log { file "/var/log/named/dnssec.log" versions 3 size 1m; severity warning; print-time yes; }; category security { security_file; }; category default { file_log; }; category dnssec { dnssec_log; }; category lame-servers { null; }; category edns-disabled { null; }; category resolver { null; }; category unmatched { null; }; }; include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
Criar diretório onde ira ficar os LOGs
mkdir /var/log/named/ chown bind. /var/log/named/
Checando as configurações do arquivo
named-checkconf /etc/bind/named.conf.options
Mostra todas configurações
named-checkconf -p
Reiniciar o bind9
systemctl restart bind9 systemctl status bind9 systemctl enable named