03 - Servidor Recursivo (Caching)
video: https://youtu.be/... no frontmatter da nota.Servidor Recursivo (Recursive Resolver / Caching DNS)
O Servidor Recursivo (Recursive Resolver) é o motor de busca e o intermediário inteligente do sistema de nomes global. Diferente do servidor autoritativo, que detém a resposta final de um domínio, o servidor recursivo é o "trabalhador" que recebe a pergunta do cliente (navegador, sistema operacional, aplicação) e percorre toda a árvore hierárquica do DNS (Raiz → TLD → Autoritativo) até encontrar o IP solicitado. Sua eficiência baseada em Caching é o que torna a navegação na Internet suportável e veloz para bilhões de usuários simultaneamente, reduzindo latência de segundos para milissegundos.
1. O Processo de Recursão: A Jornada da Consulta
Quando uma consulta DNS é enviada a um servidor recursivo, ele inicia um dos algoritmos de busca distribuída mais robustos da computação, completando tipicamente em 3 saltos após o cache local estar morno.
Etapas da Recursão
- Check de Cache: O servidor verifica primeiro seu cache em memória RAM. Se a resposta estiver lá e o TTL não tiver expirado, entrega imediatamente (latência < 1ms).
- Consulta à Raiz (
.): Se não estiver em cache, pergunta a um dos 13 root servers lógicos (a.root-servers.net até m.root-servers.net). A raiz responde com uma referência aos servidores TLD do gTLD correspondente (ex:.com). - Consulta ao TLD: O servidor TLD (
.com) responde com a lista de servidores autoritativos para o domínio específico (ex:ns1.empresa.com). - Consulta ao Autoritativo: O recursivo pergunta finalmente ao autoritativo e obtém o IP (registro A ou AAAA).
- Resposta Final: O recursivo retorna o IP ao usuário que fez a consulta e guarda a resposta em seu próprio cache pelo tempo definido no TTL do registro.
Diagrama de Fluxo
[Cliente] → [Resolver Recursivo]
↓ (cache miss)
[Root Server .]
↓ (refere TLD .com)
[TLD .com Server]
↓ (refere autoritativo)
[ns1.empresa.com]
↓ (resposta A)
[Cache + Cliente]
2. A Magia do Caching e a Latência de Rede
O servidor recursivo é um dos maiores economizadores de tráfego de rede do mundo, processando bilhões de consultas por dia.
Evitando Repetição
Se mil pessoas em uma cidade acessam o facebook.com, o servidor recursivo do provedor (ISP) local faz a busca completa apenas uma vez. Para os 999 usuários seguintes, a resposta é entregue instantaneamente a partir da memória RAM (Cache), em milissegundos. Estima-se que 95-99% das consultas DNS são servidas pelo cache, evitando tráfego desnecessário para os servidores autoritativos.
Time to Live (TTL)
O servidor recursivo respeita rigorosamente o TTL definido pelo dono do domínio. Se o TTL é de 3600 segundos, o recursivo não perguntará nada à Internet sobre aquele host pela próxima hora. Após o TTL expirar, a entrada é descartada do cache e a próxima consulta refaz o caminho completo.
Tabela: TTL por Cenário
| Cenário | TTL Recomendado | Justificativa |
|---|---|---|
| Servidor estável (corp) | 86400s (24h) | Reduz carga nos autoritativos |
| Migração planejada | 300s (5min) | Permite propagação rápida |
| CDN com failover | 30-60s | Rápida resposta a outages |
| Registro MX | 3600s | Estabilidade de e-mail |
| Registro DKIM/SPF | 3600s | Estabilidade de e-mail |
| A recém-publicado | 60s | Permite rollback rápido |
Negative Caching
O recursivo também armazena respostas negativas (NXDOMAIN, NODATA) por um tempo especificado no campo SOA MINIMUM TTL, evitando consultas repetidas a domínios inexistentes.
3. Perspectiva de Cyber Security: O Resolver como Alvo e Arma
Para um analista de Cyber Security, os servidores recursivos são pontos críticos de falha e de manipulação de tráfego em escala global.
Envenenamento de Cache (DNS Cache Poisoning)
Ocorre quando um atacante consegue enviar uma resposta DNS falsa para o servidor recursivo antes que a resposta legítima do autoritativo chegue. O ataque Kaminsky (2008) demonstrou uma variante devastadora que explorava a previsibilidade de Transaction IDs e Source Ports:
- Efeito: O servidor recursivo armazena o IP malicioso no cache e passa a redirecionar todos os seus usuários para um site de phishing de forma invisível por até 24h (ou até o TTL expirar).
- Defesa: O uso de Source Port Randomization (RFC 5452) e a validação de DNSSEC (onde o recursivo verifica a assinatura digital RRSIG da resposta) são as principais defesas contra este ataque.
O Perigo dos Open Resolvers (Servidores Abertos)
Configurar um servidor recursivo para responder a qualquer IP da Internet transforma-o em um Open Resolver, listado em databases como openresolver.com:
- Amplificação DNS (DDoS): Atacantes usam estes servidores para realizar ataques de DDoS. Eles enviam uma pequena consulta forjando o IP da vítima (UDP spoofing). O servidor DNS responde com um pacote enorme para a vítima, amplificando o poder do ataque em 50-100x. Em 2013, o ataque Spamhaus usou amplificação DNS e atingiu 300 Gbps.
- Mitigação: Administradores devem restringir o acesso recursivo apenas aos seus próprios blocos de IP internos via ACLs:
bash # BIND named.conf allow-recursion { 192.168.0.0/16; 10.0.0.0/8; }; allow-query-cache { 192.168.0.0/16; 10.0.0.0/8; };
DNS Tunneling (Exfiltração via DNS)
Atacantes encapsulam dados em consultas DNS para burlar firewalls que permitem tráfego DNS outbound. Ferramentas como iodine, dns2tcp e dnscat2 codificam dados binários em subdomínios. Mitigação: inspeção de tamanho de consulta DNS, bloqueio de TLDs suspeitos e análise de padrões em SIEMs.
4. Resolvers Públicos Modernos e Privacidade
Empresas como Google, Cloudflare, Quad9 e OpenDNS operam servidores recursivos massivos que utilizam Anycast (RFC 4786) para estar fisicamente próximos de todos os usuários do mundo, com centenas de instâncias globais.
Tabela: Resolvers Públicos Populares
| Provedor | IPv4 | IPv6 | DoH | DoT | Política Privacidade |
|---|---|---|---|---|---|
| 8.8.8.8 / 8.8.4.4 | 2001:4860:4860::8888 | Sim | Sim | Logs temporários | |
| Cloudflare | 1.1.1.1 / 1.0.0.1 | 2606:4700:4700::1111 | Sim | Sim | Nunca logs |
| Quad9 | 9.9.9.9 | 2620:fe::fe | Sim | Sim | Bloqueia malware |
| OpenDNS | 208.67.222.222 | - | Sim | - | Filtragem opcional |
| Verisign | 64.6.64.6 | 2620:74:1b::1 | Não | Não | Sem filtros |
| AdGuard | 94.140.14.14 | - | Sim | Sim | Bloqueia anúncios |
Evolução de Privacidade: DoH e DoT
A adoção de protocolos criptográficos protege a consulta do usuário contra a interceptação por curiosos e ISPs:
- DoT (DNS over TLS, RFC 7858): Consultas DNS tradicionais encapsuladas em TLS na porta 853. Implementado em Android 9+ nativamente.
- DoH (DNS over HTTPS, RFC 8484): Consultas DNS encapsuladas em HTTPS na porta 443. Implementado em Firefox, Chrome, Edge e iOS 14+.
- DNSCrypt: Protocolo predecessor, não padronizado IETF, mas ainda usado por algumas ferramentas.
5. Implementações de Resolvers
| Software | Tipo | Licença | Destaque |
|---|---|---|---|
| BIND | Recursivo + Auth | ISC | Mais usado historicamente |
| Unbound | Recursivo | BSD | Otimizado para caching, valida DNSSEC |
| Knot Resolver | Recursivo | GPLv3 | Alto desempenho, CZ.NIC |
| PowerDNS Recursor | Recursivo | GPLv2 | Integrado com PowerDNS Auth |
| dnsmasq | Recursivo leve | GPLv2 | Home routers, pequenas redes |
| systemd-resolved | Recursivo local | LGPLv2 | Padrão em Ubuntu/Debian moderno |
| Microsoft DNS | Recursivo + Auth | Comercial | Integrado ao Active Directory |
Exemplo: Configuração Unbound com DNSSEC
# /etc/unbound/unbound.conf
server:
interface: 0.0.0.0
port: 53
access-control: 192.168.0.0/16 allow
access-control: 10.0.0.0/8 allow
auto-trust-anchor-file: "/var/lib/unbound/root.key" # DNSSEC
harden-dnssec-stripped: yes
qname-minimisation: yes # privacidade RFC 7816
prefetch: yes
msg-cache-size: 256m
rrset-cache-size: 512m
num-threads: 4
forward-zone:
name: "."
forward-addr: 1.1.1.1@53
forward-addr: 8.8.8.8@53
6. Diagnóstico e Auditoria de Servidores Recursivos
Validar a performance e a segurança do resolver é indispensável para uma rede corporativa saudável:
# Testando a velocidade de resposta de um servidor recursivo
dig @8.8.8.8 www.google.com
# Identificando cache quente (QUERY TIME próximo a 0ms)
dig @1.1.1.1 www.facebook.com
# Validando DNSSEC (flag AD = Authenticated Data)
dig @1.1.1.1 dnssec.works +dnssec
# Testando DoT (DNS over TLS)
kdig -d @1.1.1.1 +tls example.com
# Testando DoH (DNS over HTTPS)
curl -H 'accept: application/dns-json' 'https://1.1.1.1/dns-query?name=example.com&type=A'
# Detectando Open Resolver (vulnerabilidade)
nmap -sU -p 53 --script dns-recursion alvo.com
# Monitorando queries em BIND
rndc status && rndc dumpdb -all
Análise de DNSSEC Validation: Servidores recursivos configurados com segurança devem possuir a flag AD (Authenticated Data) na resposta ao lidar com domínios assinados digitalmente. Sem a flag AD, o recursivo não está validando a integridade criptográfica da resposta, ficando vulnerável a ataques de envenenamento mesmo com Source Port Randomization.
7. Resumo Técnico
| Atributo | Valor |
|---|---|
| RFC de referência | 1034, 1035, 2181, 5452 (Source Port Randomization), 4033-4035 (DNSSEC), 4786 (Anycast) |
| Porta | UDP/TCP 53 |
| Cache | Em RAM, com TTL por registro |
| Negative Cache | SOA MINIMUM TTL |
| DNSSEC | Validado com chain-of-trust a partir da raiz |
| DoT | Porta 853 (RFC 7858) |
| DoH | Porta 443 (RFC 8484) |
| Implementações | BIND, Unbound, Knot, PowerDNS, dnsmasq |
8. Conclusão: O Farol da Navegação
O Servidor Recursivo é o silencioso guia que permite a bilhões de pessoas navegarem sem nunca precisarem ver um endereço IP. Sua inteligência na gestão de cache e sua capacidade de processar árvores hierárquicas complexas em milissegundos são milagres da engenharia de redes. Compreender o fluxo de recursão completo, implementar controles de acesso rigorosos (ACLs anti-Open-Resolver), validar respostas via DNSSEC (flag AD), configurar QNAME minimisation para privacidade, e migrar para protocolos modernos (DoH/DoT) são competências essenciais para garantir que a porta de entrada da sua rede para a Internet seja veloz, privada e, acima de tudo, fidedigna em ambientes corporativos e ISPs modernos.