06 - Fundamentos
video: https://youtu.be/... no frontmatter da nota.Fundamentos do Protocolo DNS
1. Definição e Contexto
O DNS (Domain Name System) é o sistema distribuído e hierárquico de resolução de nomes da Internet. Sua função é traduzir nomes amigáveis a humanos (ex.: www.exemplo.com.br) em endereços numéricos usados pela rede (IPv4/IPv6). Sem DNS, a Internet moderna seria inutilizável — usuários teriam que memorizar bilhões de endereços IP. O DNS foi definido originalmente em 1983 (RFC 882 e 883), sendo substituído em 1987 pelas RFCs 1034 (conceitos) e 1035 (implementação), que continuam vigentes. É um dos protocolos mais antigos ainda em uso e também um dos mais atacados.
Características Fundamentais
- Modelo: Cliente-servidor distribuído e hierárquico.
- Porta: 53/UDP (consultas) e 53/TCP (transferência de zona e respostas > 512 bytes).
- Caching: Obrigatório em todos os níveis (resolvedor, SO, aplicação).
- TTL: Controla tempo de vida da informação em cache (segundos).
- Escalabilidade: ~360 milhões de domínios registados, trilhões de consultas/dia.
2. Arquitetura Hierárquica
O DNS é organizado como uma árvore invertida com a raiz no topo. Cada nó é um domínio.
. (root)
│
┌─────────┼─────────┐
com br fr
│ │
exemplo exemplo exemple
│ │
www www
Componentes da Hierarquia
| Nível | Exemplo | Função |
|---|---|---|
| Root | . |
Início da árvore (13 clusters A-M) |
| TLD | .com, .br, .fr |
Top-Level Domains |
| SLD | exemplo.com.br |
Second-Level Domains (registráveis) |
| Subdomínio | www.exemplo.com.br |
Host ou subdomínio |
| FQDN | www.exemplo.com.br. |
Ponto final indica raiz absoluta |
3. Tipos de Servidores DNS
| Tipo | Função | Exemplos |
|---|---|---|
| Authoritative | Possui a zona autoritativamente | BIND, NSD, PowerDNS |
| Recursive Resolver | Busca respostas para clientes | Unbound, dnsmasq, 8.8.8.8 |
| Caching-only | Apenas cacheia respostas | dnsmasq |
| Forwarder | Repassa consultas a outro resolvedor | BIND forward mode |
4. Tipos de Registros DNS (Resource Records)
| Registro | RFC | Função | Exemplo |
|---|---|---|---|
A |
1035 | Nome → IPv4 | exemplo.com. IN A 203.0.113.10 |
AAAA |
3596 | Nome → IPv6 | exemplo.com. IN AAAA 2001:db8::1 |
NS |
1035 | Servidor de nome autoritativo | exemplo.com. IN NS ns1.exemplo.com. |
CNAME |
1035 | Apelido (alias) | www IN CNAME exemplo.com. |
MX |
1035 | Servidor de e-mail | exemplo.com. IN MX 10 mail.exemplo.com. |
TXT |
1035 | Texto livre (SPF, DKIM, etc.) | exemplo.com. IN TXT "v=spf1 -all" |
PTR |
1035 | IP → Nome (reverso) | 10.113.0.203.in-addr.arpa. IN PTR exemplo.com. |
SOA |
1035 | Start of Authority | Define servidor primário, contato, serial |
SRV |
2782 | Localização de serviço | _sip._tcp.exemplo.com. IN SRV 10 60 5060 sip.exemplo.com. |
DS |
4034 | Delegation Signer (DNSSEC) | Hash da chave KSK do filho |
DNSKEY |
4034 | Chave pública DNSSEC | KSK ou ZSK |
CAA |
6844 | Autoridade de emissão de certificados | Restringe quais CAs podem emitir |
HTTPS |
9460 | Service binding (SVCB) | Aponta para endpoint alternativo |
5. Processo de Resolução (Forward Lookup)
Quando um usuário digita www.exemplo.com.br no navegador:
- Cache local do browser: Verifica cache interno (Chrome mantém por ~60s).
- SO resolver: Sistema operacional consulta resolver configurado (ex.: 8.8.8.8 ou do ISP).
- Cache do resolver: Se resolver tem resposta em cache, devolve em ~1ms.
- Root server: Se não tem cache, pergunta à raiz: "Quem é autoritativo para
.br?" - TLD .br: Resolvedor pergunta ao
.br: "Quem é autoritativo paraexemplo.com.br?" - Authoritative final: Resolvedor pergunta: "Qual o IP de
www.exemplo.com.br?" - Resposta:
A 203.0.113.10com TTL 3600s. - Cache: Resolver e SO cacheiam pelo TTL; cliente recebe resposta final.
Exemplo de Trace
dig +trace www.exemplo.com.br
# Passo 1: consulta root servers
# Passo 2: referral para .br
# Passo 3: referral para exemplo.com.br
# Passo 4: resposta A final
6. UDP vs TCP
Por padrão, consultas DNS usam UDP na porta 53 (rápido, sem handshake). TCP é usado quando:
- Resposta excede 512 bytes (resposta DNSSEC tipicamente).
- Transferência de zona (AXFR/IXFR).
- UDP truncado (flag TC=1 na resposta; cliente refaz em TCP).
7. Caching e TTL
O caching é o que torna o DNS viável em escala global. Sem cache, cada consulta percorreria toda a hierarquia, e os root servers colapsariam sob carga.
Anatomia do TTL
| Componente | Valor típico | Efeito |
|---|---|---|
| SOA Minimum TTL | 86400s (1 dia) | TTL default para registros sem TTL |
| Registro A | 300-3600s | Estabilidade vs agilidade de migração |
| NXDOMAIN (negative) | 60-300s | Domínios inexistentes cacheiam pouco |
| Resolver default | 30s-3600s | Pode ser sobrescrito, mas respeitado |
Decisão de TTL por Cenário
- Site estável: 3600s (1h) — baixa carga na raiz e TLD.
- Migração iminente: 300s (5 min) — permite propagar IP novo em minutos.
- Anti-DDoS (CDN failover): 30-60s — failover rápido entre datacenters.
- Geo-DNS: 60-120s — responde conforme origem do cliente.
8. Resolução Reversa (IP → Nome)
A resolução reversa converte IP em nome de domínio. Usa o domínio especial in-addr.arpa (IPv4) e ip6.arpa (IPv6), com registros PTR.
Exemplo
Para o IP 203.0.113.10, a consulta é 10.113.0.203.in-addr.arpa. IN PTR. O IPv4 é invertido byte a byte. Resolução reversa é usada por:
- Servidores SMTP (anti-spam, verificação HELO).
- Logs de firewall/web (tradução de IP para nome legível).
- Serviços de autenticação (rlogin, NFS, sshd com
UseDNS yes).
9. DNSSEC — Cadeia de Confiança
DNSSEC (RFC 4033-4035) adiciona assinaturas criptográficas aos registros, permitindo ao cliente validar autenticidade da resposta. Sem DNSSEC, DNS é vulnerável a cache poisoning (ataque Kaminsky, 2008).
Tipos de Chave
- KSK (Key Signing Key): Assina a ZSK, publicada como DNSKEY.
- ZSK (Zone Signing Key): Assina registros individuais (RRSIG).
- DS (Delegation Signer): Hash da KSK, publicado na zona pai.
Cadeia de Confiança
Root KSK (Trust Anchor configurado no resolvedor)
└─ DS para .com (assinado pela Root)
└─ DS para exemplo.com (assinado pela .com)
└─ RRSIG do registro A (assinado por ZSK do exemplo.com)
Se qualquer passo falhar na validação, a resposta é marcada como SERVFAIL (DNSSEC validation failure).
10. Ferramentas de Diagnóstico
dig www.exemplo.com.br # consulta A
dig +short www.exemplo.com.br # apenas resposta
dig @8.8.8.8 www.exemplo.com.br # servidor específico
dig +trace www.exemplo.com.br # trace completo
dig +dnssec www.exemplo.com.br # validar DNSSEC
delv www.exemplo.com.br # cadeia de confiança
nslookup www.exemplo.com.br # legado
host www.exemplo.com.br # legado alternativo
dig -x 203.0.113.10 # reverso
11. Vulnerabilidades e Mitigações
| Ataque | Descrição | Mitigação |
|---|---|---|
| Cache Poisoning | Injeção de resposta falsa no cache | DNSSEC, 0x20 encoding, source port random |
| Kaminsky (2008) | Envenenamento massivo em segundos | DNSSEC obrigatório |
| Amplificação DDoS | UDP 53 aberto, resposta 60x maior que query | RRL (RFC 7873), fechar recursão aberta |
| Subdomain Takeover | CNAME aponta para serviço descomissionado | Auditoria de CNAMEs órfãos |
| Typosquatting | Domínio com erro de digitação | DTXT monitoring, defensive registration |
| Homograph Attack | аpple.com (cirílico) vs apple.com |
Browser exibe Punycode |
12. Resumo Técnico
| Atributo | Valor |
|---|---|
| Porta | 53 (UDP e TCP) |
| RFCs principais | 1034, 1035, 2181, 4033-4035 |
| Estrutura | Árvore hierárquica invertida |
| Caching | Multi-nível (SO, resolver, autoritativo) |
| DNSSEC | RFC 4033-4035 (cadeia root → TLD → SLD) |
| IDN | RFC 5890 (Punycode via RFC 3492) |
13. Conclusão
O DNS é o sistema de nomes que tornou a Internet usável por humanos. Sua arquitetura hierárquica e distribuída, combinada com caching agressivo e o protocolo leve UDP, permite escalar a trilhões de consultas diárias com latência de milissegundos. A evolução para DNSSEC resolveu as principais vulnerabilidades de integridade, mas novos desafios surgiram com o DNS-over-HTTPS (DoH, RFC 8484) e DNS-over-TLS (DoT, RFC 7858), que cifram consultas mas dificultam a visibilidade corporativa. Para administradores e analistas de segurança, dominar DNS é pré-requisito para qualquer tarefa de infraestrutura, desde configurar domínios próprios até investigar vazamentos de dados via DNS tunneling.