1. DNS, DNSSEC e Boas Pr´aticas
David Robert Camargo de Campos
Wilson Rogerio Lopes
<tutorial-dnssec@registro.br>
Registro.br
21 de outubro de 2010
1 / 54
2. DNS - Domain Name System
O Sistema de Nomes de Dom´ınio ´e um banco de dados distribu´ıdo. Isso
permite um controle local dos segmentos do banco de dados global,
embora os dados em cada segmento estejam dispon´ıveis em toda a rede
atrav´es de um esquema cliente-servidor.
- Arquitetura hier´arquica
- Distribu´ıda eficientemente, sistema descentralizado e com cache
- O principal prop´osito ´e a resolu¸c˜ao de nomes de dom´ınio em
endere¸cos IP e vice-versa
exemplo.foo.eng.br ←→ 200.160.10.251
www.cgi.br ←→ 200.160.4.2
www.registro.br ←→ 2001:12ff:0:2::3
2 / 54
3. Registro de dom´ınios (.br)
Reserva o direito da pessoa f´ısica ou jur´ıdica sobre um determinado
nome de endere¸co na Internet.
Dom´ınios n˜ao registrados n˜ao podem ser encontrados na Internet.
Sistema WEB
A interface WEB permite de maneira pr´atica gerenciar os dom´ınios de
qualquer pessoa f´ısica ou jur´ıdica.
− http://registro.br/suporte/tutoriais/novo-registro.html
3 / 54
4. Publica¸c˜ao quasi-on-line
O que ´e uma Publica¸c˜ao?
As modifica¸c˜oes que s˜ao realizadas pela interface de provisionamento n˜ao
s˜ao efetivadas imediatamente. A cada intervalo de tempo pr´e-determinado
ocorre uma publica¸c˜ao DNS a qual atualiza o sistema DNS.
4 / 54
5. Publica¸c˜ao quasi-on-line
O que ´e uma Publica¸c˜ao?
As modifica¸c˜oes que s˜ao realizadas pela interface de provisionamento n˜ao
s˜ao efetivadas imediatamente. A cada intervalo de tempo pr´e-determinado
ocorre uma publica¸c˜ao DNS a qual atualiza o sistema DNS.
As publica¸c˜oes DNS ocorrem a cada 30 minutos
No caso do registro de um novo dom´ınio ele j´a estar´a vis´ıvel na
Internet ap´os a pr´oxima publica¸c˜ao.
No caso da altera¸c˜ao de dados de um dom´ınio, ap´os a pr´oxima
publica¸c˜ao, o dom´ınio passar´a por um per´ıodo de transi¸c˜ao que
poder´a durar at´e 24 horas.
4 / 54
6. Tipos de servidores
Servidor Autoritativo
Ao receber requisi¸c˜oes de resolu¸c˜ao de nome, responde um endere¸co caso
possua, uma referˆencia caso conhe¸ca o caminho da resolu¸c˜ao ou uma
nega¸c˜ao caso n˜ao conhe¸ca
Servidor Recursivo
Ao receber requisi¸c˜oes de resolu¸c˜ao de nomes, faz requisi¸c˜oes para os
servidores autoritativos e conforme a resposta recebida dos mesmos
continua a realizar requisi¸c˜oes para outros servidores autoritativos at´e
obter a resposta satisfat´oria
5 / 54
7. Tipos de dados que podem ser armazenados
Os dados associados com os nomes de dom´ınio est˜ao contidos em
Resource Records ou RRs (Registro de Recursos)
Atualmente existe uma grande variedade de tipos
Alguns Tipos Comuns de Records
SOA Indica onde come¸ca a autoridade a zona
NS Indica um servidor de nomes para a zona
A Mapeamento de nome a endere¸co (IPv4)
AAAA Mapeamento de nome a endere¸co (IPv6)
MX Indica um mail exchanger para um nome (servidor de email)
CNAME Mapeia um nome alternativo (apelido ou indire¸c˜ao)
TXT Campo de texto livre
6 / 54
8. Exemplo de requisi¸c˜ao de endere¸co
Resolver
Servi¸co localizado
no cliente que tem
como
responsabilidade
resolver as
requisi¸c˜oes DNS
para diversos
aplicativos
7 / 54
9. Exemplo de requisi¸c˜ao de endere¸co
Supondo que o
cache est´a vazio ou
sem informa¸c˜oes
relevantes
8 / 54
18. Fluxo de dados
1 Resolver faz consultas no Recursivo
2 Recursivo faz consultas no Autoritativo (Master ou Slave)
3 Master tem os dados originais
4 Slave recebe os dados do Master
17 / 54
24. Exemplo de Ataque
Polui¸c˜ao de Cache
O atacante responde mais r´apido, spoofando endere¸co do autoritativo
23 / 54
25. Exemplo de Ataque
Polui¸c˜ao de Cache
O atacante responde mais r´apido, spoofando endere¸co do autoritativo
24 / 54
26. Exemplo de Ataque
Polui¸c˜ao de Cache
O atacante responde mais r´apido, spoofando endere¸co do autoritativo
25 / 54
27. DNSSEC
Domain Name System SECurity extensions
Extens˜ao da tecnologia DNS
(o que existia continua a funcionar)
Possibilita maior seguran¸ca para o usu´ario na Internet
(corrige falhas do DNS)
Garantias do DNSSEC
Origem (Autenticidade)
Integridade
26 / 54
29. Como configurar DNSSEC no servidor autoritativo
Objetivo
Implantar DNSSEC no servidor autoritativo para determinado dominio
Todas as opera¸c˜oes ser˜ao executadas no servidor principal (Master)
Requisitos
Bind 9.7 − http://www.isc.org/downloads
28 / 54
30. Passo 1 − Cria¸c˜ao de Chaves
Utiliza¸c˜ao do comando dnssec-keygen para gera¸c˜ao de chaves:
$ dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -b 1024 -n ZONE dominio.com.br
Onde, dominio.com.br deve ser substituido pelo seu dominio.
- O comando ira gerar dois arquivos com extens˜oes .key e .private
29 / 54
31. Passo 2 − Assinar o dominio (arquivo de zona)
Utiliza¸c˜ao do comando dnssec-signzone para assinatura
$ dnssec-signzone -S -z -o dominio.com.br db.dominio.com.br
Onde, dominio.com.br deve ser substituido pelo nome do dominio e
db.dominio.com.br pelo nome do arquivo de zona.
- O comando ira gerar um novo arquivo de zona com a extens˜ao .signed
30 / 54
32. Passo 3 − Atualiza¸c˜ao do named.conf
Altera¸c˜ao da referˆencia para o arquivo de zona
zone "dominio.com.br" {
auto-dnssec maintain;
type master;
file "/etc/namedb/db.dominio.com.br";
key-directory "/etc/namedb/dominio.com.br/";
...
};
Onde, dominio.com.br deve ser substituido pelo nome do domino e
db.dominio.com.br deve ser substituido pelo nome do arquivo de zona.
31 / 54
33. Passo 4 − Reiniciar o Bind
Reiniciar o Bind
32 / 54
34. Passo 5 − Adicionar o DS no site do Registro.br
Copiar os dados de KeyTag e Digest do arquivo dsset-dominio.com.br para a
interface no site do Registro.br.
Exemplo: $ cat dsset-dominio.com.br.| head -1
KeyTag Digest
dominio.com.br IN DS 15469 5 1 5EC0184678E0B7DC3AACFFA5D0EB9DBA1F3F6C37
- Onde, dominio.com.br deve ser substituido pelo nome do domino
33 / 54
35. Passo 6 − Aguardar nova publica¸c˜ao
Aguardar nova publica¸c˜ao no site do Registro.br
34 / 54
36. Roteiro − Configurar um Servidor Autoritativo
1 Criar chave (dnssec-keygen) (slide 30)
2 Assinar a zona (dnssec-signzone) (slide 31)
3 Modificar o named.conf (slide 32)
4 Restartar o BIND (named) no servidores Master
5 Adicionar o DS no site do Registro.br (slide 34)
6 Aguardar nova publica¸c˜ao
35 / 54
38. Como configurar DNSSEC no servidor recursivo
Objetivo
Implamntar DNSSEC no servidor recursivo
Requisitos
Bind 9.7 − http://www.isc.org/downloads
37 / 54
39. Passo 1 − Obtendo a chave a da raiz da Internet
Como obter a chave da raiz no formato do Bind
https://registro.br/dominio/root-anchor.html
Exemplo de resultado:
. initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
QxA+Uk1ihz0=";
38 / 54
40. Passo 2 − Inclus˜ao no arquivo de configura¸c˜ao
Habilitar a op¸c˜ao dnssec-validation
Colar a chave da raiz (obtida no slide anterior)
named.conf
options {
...
dnssec-validation yes;
...
};
managed-keys {
. initial-key 257 3 8
"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
QxA+Uk1ihz0=";
};
...
39 / 54
41. Passo 3 − Reiniciar o Bind
Reiniciar o Bind
40 / 54
43. DNS Reverso
Motiva¸c˜ao
Identifica¸c˜ao do host − dom´ınio de origem
Servi¸cos consultam DNS reverso − Ex. smtp
Maior facilidade no tratamento de incidentes e comunica¸c˜ao com
outros provedores
42 / 54
44. Recursivos abertos
Riscos
Ser v´ıtima de ataques de envenenamento de cache
Uso do servidor para desferir ataques DoS
Consultas/Respostas indevidas acarretam consumo de banda e
recursos computacionais
Possibilidade de ser responsabilizado por ataques
43 / 54
46. Separar Recursivo do Autoritativo
Servidor fisicamente separado
Configura¸c˜ao simplificada
ACLs e Regras de firewall espec´ıficas
Dimensionamento espec´ıfico de recursos
Mesmo servidor f´ısico − Views
Configura¸c˜ao de maior complexidade
Consultas recursivas/autoritativas usando mesmo recursos
45 / 54
47. Recursivo pr´oprio
1 Controle sobre a infraestrutura
2 Possibilidade de habilitar valida¸c˜ao DNSSEC
3 Garantia de uso da estrutura regional
◮ Alguns autoritativos respondem de acordo com o IP do cliente
46 / 54
48. Servi¸co DNS do google − 8.8.8.8
M´aquina nos EUA
$ traceroute -q1 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 40 byte packets
1 vrrp1-hosting.lax.dns.icann.org (199.4.28.210) 2.477 ms
2 ge0-0-3.J6352.lax.dns.icann.org (199.4.30.50) 2.709 ms
3 67.17.195.233 (67.17.195.233) 1.709 ms
4 72.14.197.161 (72.14.197.161) 1.711 ms
5 216.239.46.40 (216.239.46.40) 30.448 ms
6 209.85.253.178 (209.85.253.178) 14.208 ms
7 209.85.251.94 (209.85.251.94) 17.329 ms
8 google-public-dns-a.google.com (8.8.8.8) 12.707 ms
47 / 54
50. Traceroute local para IP recebido na consulta nos EUA
traceroute -q1 72.14.213.105
traceroute to 72.14.213.105 (72.14.213.105), 30 hops max, 60 byte packets
1 xxx.REGISTRO.BR (200.160.xx.xx) 0.228 ms
2 xxx.registro.br (200.160.xx.xx) 1.570 ms
3 xxx.registro.br (200.160.xx.xx) 1.182 ms
4 as15169.sp.ptt.br (200.219.130.55) 1.197 ms
5 209.85.250.246 (209.85.250.246) 1.277 ms
6 209.85.243.198 (209.85.243.198) 1.167 ms
7 72.14.238.49 (72.14.238.49) 46.466 ms
8 209.85.249.229 (209.85.249.229) 171.007 ms
9 72.14.232.85 (72.14.232.85) 194.361 ms
10 209.85.250.144 (209.85.250.144) 197.207 ms
11 64.233.174.101 (64.233.174.101) 197.476 ms
12 209.85.253.6 (209.85.253.6) 203.432 ms
13 pv-in-f105.1e100.net (72.14.213.105) 197.467 ms
49 / 54
51. M´aquina no Brasil
$ traceroute -q1 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 xx.REGISTRO.BR (200.160.xx.xx) 0.135 ms
2 xx.registro.br (200.160.xx.xx) 1.181 ms
3 xx.registro.br (200.160.xx.xx) 0.992 ms
4 as15169.sp.ptt.br (200.219.130.55) 1.143 ms
5 209.85.250.246 (209.85.250.246) 1.253 ms
6 209.85.243.200 (209.85.243.200) 1.615 ms
7 72.14.233.93 (72.14.233.93) 1.900 ms
8 64.233.175.62 (64.233.175.62) 13.092 ms
9 google-public-dns-a.google.com (8.8.8.8) 2.087 ms
50 / 54
52. M´aquina no Brasil
$ dig @8.8.8.8 google.com +short
64.233.163.104
$traceroute -q1 64.233.163.104
traceroute to 64.233.163.104 (64.233.163.104), 30 hops max, 60 byte packets
1 xx.REGISTRO.BR (200.160.xx.xx) 0.301 ms
2 xx.registro.br (200.160.xx.xx) 1.258 ms
3 xx.registro.br (200.160.xx.xx) 1.168 ms
4 as15169.sp.ptt.br (200.219.130.55) 1.175 ms
5 209.85.250.246 (209.85.250.246) 1.396 ms
6 209.85.243.200 (209.85.243.200) 1.773 ms
7 72.14.233.93 (72.14.233.93) 1.995 ms
8 64.233.175.18 (64.233.175.18) 5.963 ms
9 bs-in-f104.1e100.net (64.233.163.104) 2.217 ms
51 / 54
53. Implementa¸c˜ao de um recursivo est´avel e escal´avel
S.O. Unix-like
BIND
Quagga − OSPF+ECMP
ftp://ftp.registro.br/pub/gter/gter23/05-DNSrecEstavelEscalavel.pdf
52 / 54
55. Referˆencias
Como configurar DNSSEC no seu dominio (servidor autoritativo)
ftp://ftp.registro.br/pub/doc/configuracao dnssec dominio.pdf
Como configurar DNSSEC no servidor recursivo
ftp://ftp.registro.br/pub/doc/configuracao dnssec servidor recursivo.pdf
Tutorial de DNSSEC
https://registro.br/suporte/tutoriais/dnssec.html
Recomenda¸c˜oes para Evitar o Abuso de Servidores DNS Recursivos Abertos
http://www.cert.br/docs/whitepapers/dns-recursivo-aberto/
RFC 5358 / BCP 140: Preventing Use of Recursive Nameservers in Reflector Attacks
http://www.ietf.org/rfc/rfc5358.txt
54 / 54