SlideShare uma empresa Scribd logo
1 de 135
Baixar para ler offline
Tutorial DNS
3 PTT F´orum
David Robert Camargo de Campos <david@registro.br>
Rafael Dantas Justo <rafael@registro.br>
Wilson Rog´erio Lopes <wilson@registro.br>
Registro.br
Dezembro de 2009
1 / 135
Objetivos
Entender os conceitos de DNS
Configurar servidores autoritativos
Configurar servidores recursivos
Entender as diferen¸cas entre DNS e DNSSEC
Configurar corretamente o firewall
Testar performance dos servidores
Planejar escalabilidade de recursivos
Monitorar os servidores
2 / 135
Cronograma
1 DNS
Conceitos
Arquitetura
2 Servidores DNS Autoritativos
Cen´ario
Arquivos de Zona
Configura¸c˜ao BIND
Configura¸c˜ao NSD
3 Servidores DNS Recursivos
Cen´ario
Configura¸c˜ao BIND
Servidores DNS Recursivos abertos
4 Recursivo e Autoritativo
5 DNSSEC
Vulnerabilidades do DNS
Conceito
Configura¸c˜ao do Autoritativo
Configura¸c˜ao do Recursivo
6 Firewalls
DNS
EDNS0
Configura¸c˜ao
7 Testes de Performance
Recursivo
Autoritativo
8 Escalabilidade de Recursivos
9 Monitoramento
Autoritativo
Recursivo
3 / 135
Parte I
Conceitos DNS
4 / 135
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, dados dispostos em uma ´arvore invertida
- 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
5 / 135
Hierarquia
"."
br
eng
foo
tutorial
DNS
database
tutorial.foo.eng.br
/
usr
local
bin
imake
UNIX
filesystem
/usr/local/bin/imake
6 / 135
Dom´ınio Vs Zona
Zona gov.br
Zona nom.br
Zona eng.br
Domínio br
Zona joao.silva.nom.brZona tutorial.foo.eng.br
Zona foo.eng.br
Zona br
"."
com
eng
br org
nom gov
foo
tutorial
joao
Zona fazenda.gov.br
fazenda
Delegação
silva
Delega¸c˜ao
Indica uma transferˆencia
de responsabilidade na
administra¸c˜ao apartir
daquele ponto na ´arvore
DNS
7 / 135
Resource Records
Os dados associados com os nomes de dom´ınio est˜ao contidos em
Resource Records ou RRs (Registro de Recursos)
S˜ao divididos em classes e tipos
Atualmente existe uma grande variedade de tipos
O conjunto de resource records com o mesmo nome de dom´ınio,
classe e tipo ´e denominado RRset
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)
PTR Mapeamento de endere¸co a nome
8 / 135
Tipos de servidores
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
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
9 / 135
Exemplo de requisi¸c˜ao de endere¸co
Supondo que o
cache est´a vazio ou
sem informa¸c˜oes de
br, eng.br,
foo.eng.br,
exemplo.foo.eng.br
Resolver
Servi¸co localizado
no cliente que tem
como
responsabilidade
resolver as
requisi¸c˜oes DNS
para diversos
aplicativos
10 / 135
Exemplo de requisi¸c˜ao de endere¸co
Supondo que o
cache est´a vazio ou
sem informa¸c˜oes de
br, eng.br,
foo.eng.br,
exemplo.foo.eng.br
11 / 135
Exemplo de requisi¸c˜ao de endere¸co
12 / 135
Exemplo de requisi¸c˜ao de endere¸co
13 / 135
Exemplo de requisi¸c˜ao de endere¸co
14 / 135
Exemplo de requisi¸c˜ao de endere¸co
15 / 135
Exemplo de requisi¸c˜ao de endere¸co
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
"."
BR
ENG
FOO
TUTORIAL
16 / 135
Exemplo de requisi¸c˜ao de endere¸co
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
200.160.10.251
"."
BR
ENG
FOO
TUTORIAL
17 / 135
Exemplo de requisi¸c˜ao de endere¸co
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
200.160.10.251
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
200.160.10.251
"."
BR
ENG
FOO
TUTORIAL
18 / 135
Exemplo de requisi¸c˜ao de endere¸co
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
200.160.10.251
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
200.160.10.251
"."
BR
ENG
FOO
TUTORIAL
19 / 135
Fluxo de dados
1 Resolver faz consultas no Recursivo
2 Recursivo faz consultas no Master ou Slave
3 Master tem a zona original (via arquivo ou Dynamic Update)
4 Slave recebe a zona do Master (AXFR ou IXFR)
20 / 135
Parte II
Configurando Servidores DNS Autoritativos
21 / 135
Cen´ario
Organiza¸c˜ao Foo Engenharia Ltda.
Possui o dom´ınio foo.eng.br registrado no Registro.br;
Possui o bloco 200.160.0/24 designado de um provedor;
Possui o bloco 2001:12ff::/32 alocado pelo Registro.br.
Cliente A
Possui o dom´ınio a.foo.eng.br delegado pela organiza¸c˜ao Foo;
Possui o bloco 200.160.0.127/28 designado pela organiza¸c˜ao Foo.
Cliente B
Possui o dom´ınio b.foo.eng.br delegado pela organiza¸c˜ao Foo;
Possui o bloco 200.160.0.191/26 designado pela organiza¸c˜ao Foo.
22 / 135
Cen´ario
Cliente BCliente A
Organização Foo Engenharia Ltda.
200.160.0/24
200.160.0.127/28 200.160.0.191/26
foo.eng.br
a.foo.eng.br b.foo.eng.br
2001:12ff::/32
23 / 135
Cen´ario
200.160.0/24
200.160.0.0/25
200.160.0.191/26
200.160.0.127/28
200.160.0.143/28
200.160.0.159/27
Alocados Livres
24 / 135
Organiza¸c˜ao Foo - Arquivo de zona
db.foo.eng.br
foo.eng.br. 86400 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona
foo.eng.br. 86400 IN NS ns1.foo.eng.br.
foo.eng.br. 86400 IN NS ns2.foo.eng.br.
;; Cliente A
a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br.
a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br.
;; Cliente B
b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br.
b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br.
25 / 135
Organiza¸c˜ao Foo - Arquivo de zona (continua¸c˜ao...)
db.foo.eng.br
;; Tradu¸c˜ao nomes → IPs (GLUEs)
ns1.foo.eng.br. 86400 IN A 200.160.0.1
ns2.foo.eng.br. 86400 IN A 200.160.0.2
ns1.foo.eng.br. 86400 IN AAAA 2001:12ff::1
ns2.foo.eng.br. 86400 IN AAAA 2001:12ff::2
ns1.a.foo.eng.br. 86400 IN A 200.160.0.128
ns2.a.foo.eng.br. 86400 IN A 200.160.0.129
ns1.b.foo.eng.br. 86400 IN A 200.160.0.192
ns2.b.foo.eng.br. 86400 IN A 200.160.0.193
;; Web server
www.foo.eng.br. 86400 IN A 200.160.0.3
www.foo.eng.br. 86400 IN AAAA 2001:12ff::3
26 / 135
Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4
db.0.160.200.in-addr.arpa
0.160.200.in-addr.arpa. 172800 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona reverso
0.160.200.in-addr.arpa. 172800 IN NS ns1.foo.eng.br.
0.160.200.in-addr.arpa. 172800 IN NS ns2.foo.eng.br.
;; Cliente A (200.160.0.127 → 200.160.0.142 = 200.160.0.127/28)
127/28.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br.
127/28.0.160.200.in-addr.arpa. 172800 IN NS ns2.a.foo.eng.br.
128.0.160.200.in-addr.arpa. 172800 IN CNAME 128.127/28.0.160.200.in-addr.arpa.
129.0.160.200.in-addr.arpa. 172800 IN CNAME 129.127/28.0.160.200.in-addr.arpa.
...
142.0.160.200.in-addr.arpa. 172800 IN CNAME 142.127/28.0.160.200.in-addr.arpa.
27 / 135
Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4
db.0.160.200.in-addr.arpa (continua¸c˜ao...)
;; Cliente B (200.160.0.191 → 200.160.0.255 = 200.160.0.191/26)
191/26.0.160.200.in-addr.arpa. 172800 IN NS ns1.b.foo.eng.br.
191/26.0.160.200.in-addr.arpa. 172800 IN NS ns2.b.foo.eng.br.
192.0.160.200.in-addr.arpa. 172800 IN CNAME 192.127/28.0.160.200.in-addr.arpa.
193.0.160.200.in-addr.arpa. 172800 IN CNAME 193.127/28.0.160.200.in-addr.arpa.
...
254.0.160.200.in-addr.arpa. 172800 IN CNAME 254.127/28.0.160.200.in-addr.arpa.
;; Endere¸cos reversos
1.0.160.200.in-addr.arpa. 86400 IN PTR ns1.foo.eng.br.
2.0.160.200.in-addr.arpa. 86400 IN PTR ns2.foo.eng.br.
3.0.160.200.in-addr.arpa. 86400 IN PTR www.foo.eng.br.
...
28 / 135
Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4
Mas por que ´e necess´ario o CNAME?
Porque a RFC 2317 recomenda;
Esta solu¸c˜ao n˜ao exige altera¸c˜oes nos softwares dos servidores DNS;
Altera¸c˜ao de hosts no reverso dos clientes n˜ao implicam em altera¸c˜oes
na zona reverso da organiza¸c˜ao Foo.
29 / 135
Organiza¸c˜ao Foo - Arquivo de zona reverso IPv6
db.f.f.2.1.1.0.0.2.ip6.arpa
f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona
f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN NS ns1.foo.eng.br.
f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN NS ns2.foo.eng.br.
°ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.2.1.1.0.0.2.ip6.arpa.
1 86400 IN PTR ns1.foo.eng.br.
2 86400 IN PTR ns2.foo.eng.br.
3 86400 IN PTR www.foo.eng.br.
Dificuldade
A inviabilidade de listar todos os reversos dos hosts de um bloco IPv6
gerou diversas discuss˜oes. O draft draft-howard-isp-ip6rdns-01 aborda este
tema.
30 / 135
Publica¸c˜ao de Reverso
Informa¸c˜ao
Para as delega¸c˜oes informadas diretamente na interface do Registro.br
(/24 ou maior) as publica¸c˜oes das altera¸c˜oes ocorrem a cada 4 horas com
´ınicio as 2hs.
31 / 135
Cliente A - Arquivo de zona
db.a.foo.eng.br
a.foo.eng.br. 86400 IN SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona
a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br.
a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br.
;; Tradu¸c˜ao nomes → IPs (GLUEs)
ns1.a.foo.eng.br. 86400 IN A 200.160.0.128
ns2.a.foo.eng.br. 86400 IN A 200.160.0.129
;; Web server
www.a.foo.eng.br. 86400 IN A 200.160.0.142
32 / 135
Cliente A - Arquivo de zona reverso
db.127.0.160.200.in-addr.arpa
127/28.0.160.200.in-addr.arpa. 172800 IN SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona reverso
127/28.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br.
127/28.0.160.200.in-addr.arpa. 172800 IN NS ns2.a.foo.eng.br.
;; Endere¸cos reversos
128.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns1.a.foo.eng.br.
129.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns2.a.foo.eng.br.
...
142.127/28.0.160.200.in-addr.arpa. 172800 IN PTR www.a.foo.eng.br.
33 / 135
Cliente B - Arquivo de zona
db.b.foo.eng.br
b.foo.eng.br. 86400 IN SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona
b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br.
b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br.
;; Tradu¸c˜ao nomes → IPs (GLUEs)
ns1.b.foo.eng.br. 86400 IN A 200.160.0.192
ns2.b.foo.eng.br. 86400 IN A 200.160.0.193
;; Web server
www.b.foo.eng.br. 86400 IN A 200.160.0.254
34 / 135
Cliente B - Arquivo de zona reverso
db.191.0.160.200.in-addr.arpa
191/26.0.160.200.in-addr.arpa. 172800 IN SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. (
2009120200 ; serial
3600 ; refresh
3600 ; retry
3600 ; expire
900 ) ; minimum
;; Servidores DNS que respondem por esta zona reverso
191/26.0.160.200.in-addr.arpa. 172800 IN NS ns1.b.foo.eng.br.
191/26.0.160.200.in-addr.arpa. 172800 IN NS ns2.b.foo.eng.br.
;; Endere¸cos reversos
192.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns1.b.foo.eng.br.
193.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns2.b.foo.eng.br.
...
254.191/26.0.160.200.in-addr.arpa. 172800 IN PTR www.b.foo.eng.br.
35 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND)
Gerando chave TSIG
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-foo
named.conf no master (200.160.0.1)
options {
listen-on { 200.160.0.1; };
listen-on-v6 { 2001:12ff::1; };
recursion no;
};
key ‘‘key-foo’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.2 {
keys { key-foo; };
};
server 2001:12ff::2 {
keys { key-foo; };
};
36 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND)
named.conf no master (200.160.0.1) (continua¸c˜ao...)
zone ‘‘foo.eng.br’’ {
type master;
file ‘‘db.foo.eng.br’’;
allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; };
};
zone ‘‘0.160.200.in-addr.arpa’’ {
type master;
file ‘‘db.0.160.200.in-addr.arpa’’;
allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; };
};
zone ‘‘f.f.2.1.1.0.0.2.ip6.arpa’’ {
type master;
file ‘‘db.f.f.2.1.1.0.0.2.ip6.arpa’’;
allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; };
};
37 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND)
named.conf no slave (200.160.0.2)
options {
listen-on { 200.160.0.2; };
listen-on-v6 { 2001:12ff::2; };
recursion no;
};
key ‘‘key-foo’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.1 {
keys { key-foo; };
};
server 2001:12ff::1 {
keys { key-foo; };
};
38 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND)
named.conf no slave (200.160.0.2) (continua¸c˜ao...)
zone ‘‘foo.eng.br’’ {
type slave;
file ‘‘db.foo.eng.br’’;
masters { 200.160.0.1; 2001:12ff::1; };
};
zone ‘‘0.160.200.in-addr.arpa’’ {
type slave;
file ‘‘db.0.160.200.in-addr.arpa’’;
masters { 200.160.0.1; 2001:12ff::1; };
};
zone ‘‘f.f.2.1.1.0.0.2.ip6.arpa’’ {
type slave;
file ‘‘db.f.f.2.1.1.0.0.2.ip6.arpa’’;
masters { 200.160.0.1; 2001:12ff::1; };
};
39 / 135
Cliente A - Arquivo de configura¸c˜ao (BIND)
Gerando chave TSIG
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-a
named.conf no master (200.160.0.128)
options {
listen-on { 200.160.0.128; };
recursion no;
};
key ‘‘key-cliente-a’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.129 {
keys { key-cliente-a; };
};
zone ‘‘a.foo.eng.br’’ {
type master;
file ‘‘db.a.foo.eng.br’’;
allow-transfer { 200.160.0.129; key key-cliente-a; };
};
zone ‘‘127/28.0.160.200.in-addr.arpa’’ {
type master;
file ‘‘db.127.0.160.200.in-addr.arpa’’;
allow-transfer { 200.160.0.129; key key-cliente-a; };
};
40 / 135
Cliente A - Arquivo de configura¸c˜ao (BIND)
named.conf no slave (200.160.0.129)
options {
listen-on { 200.160.0.129; };
recursion no;
};
key ‘‘key-cliente-a’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.128 {
keys { key-cliente-a; };
};
zone ‘‘a.foo.eng.br’’ {
type slave;
file ‘‘db.a.foo.eng.br’’;
masters { 200.160.0.128; };
};
zone ‘‘127/28.0.160.200.in-addr.arpa’’ {
type slave;
file ‘‘db.127.0.160.200.in-addr.arpa’’;
masters { 200.160.0.128; };
};
41 / 135
Cliente B - Arquivo de configura¸c˜ao (BIND)
Gerando chave TSIG
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-b
named.conf no master (200.160.0.192)
options {
listen-on { 200.160.0.192; };
recursion no;
};
key ‘‘key-cliente-b’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.193 {
keys { key-cliente-b; };
};
zone ‘‘b.foo.eng.br’’ {
type master;
file ‘‘db.b.foo.eng.br’’;
allow-transfer { 200.160.0.193; key key-cliente-b; }
};
zone ‘‘191/26.0.160.200.in-addr.arpa’’ {
type master;
file ‘‘db.191.0.160.200.in-addr.arpa’’;
allow-transfer { 200.160.0.193; key key-cliente-b; };
};
42 / 135
Cliente B - Arquivo de configura¸c˜ao (BIND)
named.conf no slave (200.160.0.193)
options {
listen-on { 200.160.0.193; };
recursion no;
};
key ‘‘key-cliente-b’’ {
algorithm hmac-md5;
secret ‘‘VgMNxtub39M=’’;
};
server 200.160.0.192 {
keys { key-cliente-b; };
};
zone ‘‘b.foo.eng.br’’ {
type slave;
file ‘‘db.b.foo.eng.br’’;
masters { 200.160.0.192; };
};
zone ‘‘191/26.0.160.200.in-addr.arpa’’ {
type slave;
file ‘‘db.191.0.160.200.in-addr.arpa’’;
masters { 200.160.0.192; };
};
43 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD)
Gerando chave TSIG - Com uma ferramenta do BIND!
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-foo
nsd.conf no master (200.160.0.1)
key:
name: key-foo
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: foo.eng.br
zonefile: db.foo.eng.br
notify: 200.160.0.2 NOKEY
notify: 2001:12ff::2 NOKEY
provide-xfr: 200.160.0.2 key-foo
provide-xfr: 2001:12ff::2 key-foo
44 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD)
nsd.conf no master (200.160.0.1) (continua¸c˜ao...)
zone:
name: 0.160.200.in-addr.arpa
zonefile: db.0.160.200.in-addr.arpa
notify: 200.160.0.2 NOKEY
notify: 2001:12ff::2 NOKEY
provide-xfr: 200.160.0.2 key-foo
provide-xfr: 2001:12ff::2 key-foo
zone:
name: f.f.2.1.1.0.0.2.ip6.arpa
zonefile: db.f.f.2.1.1.0.0.2.ip6.arpa
notify: 200.160.0.2 NOKEY
notify: 2001:12ff::2 NOKEY
provide-xfr: 200.160.0.2 key-foo
provide-xfr: 2001:12ff::2 key-foo
Observa¸c˜ao
O NSD quando utilizado como master n˜ao envia IXFR para os slaves. Mas
caso o NSD seja utilizado como slave, ele entende requisi¸c˜oes IXFR.
45 / 135
Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD)
nsd.conf no slave (200.160.0.2)
key:
name: key-foo
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: foo.eng.br
zonefile: db.foo.eng.br
allow-notify: 200.160.0.1 NOKEY
allow-notify: 2001:12ff::1 NOKEY
request-xfr: 200.160.0.1 key-foo
request-xfr: 2001:12ff::1 key-foo
zone:
name: 0.160.200.in-addr.arpa
zonefile: db.0.160.200.in-addr.arpa
allow-notify: 200.160.0.1 NOKEY
allow-notify: 2001:12ff::1 NOKEY
request-xfr: 200.160.0.1 key-foo
request-xfr: 2001:12ff::1 key-foo
zone:
name: f.f.2.1.1.0.0.2.ip6.arpa
zonefile: db.f.f.2.1.1.0.0.2.ip6.arpa
allow-notify: 200.160.0.1 NOKEY
allow-notify: 2001:12ff::1 NOKEY
request-xfr: 200.160.0.1 key-foo
request-xfr: 2001:12ff::1 key-foo
46 / 135
Cliente A - Arquivo de configura¸c˜ao (NSD)
Gerando chave TSIG - Com uma ferramenta do BIND!
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-a
nsd.conf no master (200.160.0.128)
key:
name: key-cliente-a
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: a.foo.eng.br
zonefile: db.a.foo.eng.br
notify: 200.160.0.129 NOKEY
provide-xfr: 200.160.0.129 key-cliente-a
zone:
name: 127/28.0.160.200.in-addr.arpa
zonefile: db.127.0.160.200.in-addr.arpa
notify: 200.160.0.129 NOKEY
provide-xfr: 200.160.0.129 key-cliente-a
47 / 135
Cliente A - Arquivo de configura¸c˜ao (NSD)
nsd.conf no slave (200.160.0.129)
key:
name: key-cliente-a
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: a.foo.eng.br
zonefile: db.a.foo.eng.br
allow-notify: 200.160.0.128 NOKEY
request-xfr: 200.160.0.128 key-cliente-a
zone:
name: 127/28.0.160.200.in-addr.arpa
zonefile: db.127.0.160.200.in-addr.arpa
allow-notify: 200.160.0.128 NOKEY
request-xfr: 200.160.0.128 key-cliente-a
48 / 135
Cliente B - Arquivo de configura¸c˜ao (NSD)
Gerando chave TSIG - Com uma ferramenta do BIND!
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-b
nsd.conf no master (200.160.0.192)
key:
name: key-cliente-b
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: b.foo.eng.br
zonefile: db.b.foo.eng.br
notify: 200.160.0.193 NOKEY
provide-xfr: 200.160.0.193 key-cliente-b
zone:
name: 191/26.0.160.200.in-addr.arpa
zonefile: db.191.0.160.200.in-addr.arpa
notify: 200.160.0.193 NOKEY
provide-xfr: 200.160.0.193 key-cliente-b
49 / 135
Cliente B - Arquivo de configura¸c˜ao (NSD)
nsd.conf no slave (200.160.0.193)
key:
name: key-cliente-b
algorithm: hmac-md5
secret: ‘‘VgMNxtub39M=’’
zone:
name: b.foo.eng.br
zonefile: db.b.foo.eng.br
allow-notify: 200.160.0.192 NOKEY
request-xfr: 200.160.0.192 key-cliente-b
zone:
name: 191/26.0.160.200.in-addr.arpa
zonefile: db.191.0.160.200.in-addr.arpa
allow-notify: 200.160.0.192 NOKEY
request-xfr: 200.160.0.192 key-cliente-b
50 / 135
Parte III
Configurando Servidores DNS Recursivos
51 / 135
Cen´ario
A organiza¸c˜ao Foo deseja disponibilizar um servidor DNS recursivo para
sua infra-estrutura local e para todos os seus clientes. Este servidor DNS
recursivo ter´a o IPv4 200.160.0.6 e o IPv6 2001:12ff::6.
52 / 135
Organiza¸c˜ao Foo (BIND)
named.conf
acl clientes { 127.0.0.0/8; 200.160.0.0/24; 2001:12ff::/32; };
options {
listen-on { 127.0.0.1; 200.160.0.6; };
listen-on-v6 { 2001:12ff::6; };
directory ‘‘/etc’’;
pid-file ‘‘/var/run/named/pid’’;
statistics-file ‘‘/var/stats/named.stats’’;
allow-query { clientes; };
allow-query-cache { clientes; };
allow-recursion { clientes; };
max-cache-size 512M;
clients-per-query 0;
max-clients-per-query 0;
};
Aviso
N˜ao utilizem a op¸c˜ao “query-source”. Ao fixar uma porta de origem o
servidor DNS fica muito mais vulner´avel a ataques de polui¸c˜ao de cache.
Principalmente aos ataques descritos por Dan Kaminsky.
53 / 135
Organiza¸c˜ao Foo (BIND)
named.conf (continua¸c˜ao...)
logging {
channel all {
file ‘‘/var/log/named.log’’;
versions 5 size 1M;
print-time yes;
};
category default { all; };
category security { all; };
};
zone ‘‘.’’ {
type hint;
file ‘‘named.root’’;
};
zone ‘‘0.0.127.in-addr.arpa’’ {
type master;
file ‘‘db.127.0.0’’;
};
54 / 135
Organiza¸c˜ao Foo (Unbound)
unbound.conf
server:
port: 53
interface: 127.0.0.1
interface: 200.160.0.6
interface: 2001:12ff::6
access-control: 0.0.0.0/0 refuse
access-control: 200.160.0.0/24 allow
access-control: 127.0.0.0/8 allow
access-control: ::0/0 refuse
access-control: 2001:12ff::/32 allow
directory: ‘‘/usr/local/unbound/etc/unbound’’
chroot: ‘‘/usr/local/unbound/etc/unbound’’
username: ‘‘unbound’’
logfile: ‘‘unbound.log’’
do-ip4: yes
do-ip6: yes
55 / 135
Cuidado com Recursivos Abertos!
Causa
O administrador n˜ao configura o servidor DNS recursivo para responder
apenas para os clientes de sua rede.
Efeito
Aceitam consultas DNS vindas de qualquer computador da Internet.
Possibilita ataques de amplifica¸c˜ao de respostas DNS e uso de banda por
terceiros.
Solu¸c˜ao
Configura¸c˜ao correta do firewall.
BIND:
acl clientes { 127.0.0.0/8; 200.160.0.0/24; };
allow-query { clientes; };
allow-query-cache { clientes; };
allow-recursion { clientes; };
NSD:
access-control: 0.0.0.0/0 refuse
access-control: 200.160.0.0/24 allow
access-control: 127.0.0.0/8 allow
56 / 135
Cuidado com Recursivos Abertos!
57 / 135
Parte IV
Importˆancia da Separa¸c˜ao de Autoritativo e Recursivo
58 / 135
Por que separar?
Motivo
Possibilita ataques ao servidor DNS recursivo;
Aumenta a complexidade na administra¸c˜ao do servidor.
Explicando...
Recursivo e autoritativo possui configura¸c˜oes de acesso diferentes;
As regras de firewalls s˜ao distintas;
Sem “recursos” para separar os servidores?
Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizada
para separar os cen´arios.
59 / 135
Parte V
O que muda com DNSSEC?
60 / 135
Vulnerabilidades do DNS
61 / 135
Vulnerabilidades do DNS - Solu¸c˜oes
62 / 135
O que ´e DNSSEC?
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)
O que garante?
Origem (Autenticidade)
Integridade
A n˜ao existˆencia de um nome ou tipo
O que N˜AO garante?
Confidencialidade
Prote¸c˜ao contra ataques de nega¸c˜ao de servi¸co (DOS)
63 / 135
O que ´e DNSSEC?
DNSSEC utiliza o conceito de chaves assim´etricas
− chave p´ublica e chave privada
64 / 135
O que ´e DNSSEC?
DNSSEC utiliza o conceito de chaves assim´etricas
− chave p´ublica e chave privada
65 / 135
O que ´e DNSSEC?
O resolver recursivo j´a
possui a chave p´ublica
da zona “.br”
ancorada.
66 / 135
O que ´e DNSSEC?
Nesta simula¸c˜ao de
resolu¸c˜ao supomos que
a raiz n˜ao est´a
assinada.
67 / 135
O que ´e DNSSEC?
Retorna sem resposta,
mas com referˆencia
para os Records: NS
do “.br”.
68 / 135
O que ´e DNSSEC?
O servidor recursivo
requisita a DNSKEY
ao verificar que o nome
da zona ´e igual ao
nome da zona que
consta em sua
trusted-key.
69 / 135
O que ´e DNSSEC?
O servidor DNS
responde enviando
DNSKEY e o RRSIG
70 / 135
O que ´e DNSSEC?
Compara a trusted-key
com a DNSKEY, caso
for v´alida continua
com as requisi¸c˜oes
71 / 135
O que ´e DNSSEC?
72 / 135
O que ´e DNSSEC?
Retorna sem resposta,
mas com referˆencia
para os Records:
- NS do “foo.eng.br”
e com autoridade sobre
os Records:
- DS do “foo.eng.br”
- RRSIG do Record DS
73 / 135
O que ´e DNSSEC?
O servidor DNS
recursivo utiliza a
DNSKEY para checar
a assinatura (RRSIG)
do Record DS
74 / 135
O que ´e DNSSEC?
75 / 135
O que ´e DNSSEC?
76 / 135
O que ´e DNSSEC?
O servidor DNS
recursivo verifica
atrav´es do DS e da
DNSKEY, se este
servidor DNS ´e v´alido.
77 / 135
O que ´e DNSSEC?
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
78 / 135
O que ´e DNSSEC?
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
200.160.10.251
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
Retorna o Record A e
sua assinatura RRSIG.
79 / 135
O que ´e DNSSEC?
Resolver
Servidor DNS
Recursivo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
Servidor DNS
Autoritativo
exemplo.foo.eng.br?
exem
plo.foo.eng.br ?
Referencia servidores .br
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
exemplo.foo.eng.br ?
200.160.10.251
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
O servidor DNS
recursivo utiliza a
DNSKEY para checar
a assinatura (RRSIG)
do Record A
80 / 135
O que ´e DNSSEC?
81 / 135
O que muda com DNSSEC no DNS autoritativo?
Startup
Gerar a chave assim´etrica;
Incluir a chave na zona;
Assinar a zona;
Mudar a referˆencia para o arquivo de zona nas configura¸c˜oes;
Incluir o DS na interface do Registro.br.
Manuten¸c˜ao
Reassinar periodicamente a zona.
82 / 135
E como fazer isso no DNS autoritativo? (BIND)
Startup
1 Execute o comando (gera um arquivo .key e um .private):
dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom foo.eng.br
2 Inclua no final do arquivo de zona db.foo.eng.br (incremente o SOA):
°include Kfoo.eng.br+005.5423.key
3 Execute o comando (gera um arquivo .signed):
dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br
4 Altere a referˆencia no arquivo de configura¸c˜ao named.conf:
file ‘‘db.foo.eng.br.signed’’;
5 Incluir o DS no website do Registro.br.
http://registro.br/cgi-bin/nicbr/dscheck
Manuten¸c˜ao
1 Altere o arquivo de zona db.foo.eng.br incrementando o SOA;
2 Execute o comando:
dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br
83 / 135
DNSSHIM - DNS Secure Hidden Master
http://registro.br/dnsshim/
Open-Source
Automatiza o processo de provisionamento de zonas
Suporte a DNSSEC
Interface Automatiz´avel
Manuten¸c˜ao de chaves/assinaturas
P´ublico Alvo
Provedores de hospedagem ou qualquer outra institui¸c˜ao respons´avel por
administrar servidores DNS autoritativos para muitas zonas
84 / 135
O que muda com DNSSEC no DNS recursivo?
Startup
Ancorar a chave p´ublica do.BR
Manuten¸c˜ao
Para servidores DNS com suporte a RFC 5011:
Nada!
Para servidores DNS sem suporte a RFC 5011:
Trocar a chave ancorada todas as vezes em que ocorrer um rollover
no .BR
85 / 135
E como fazer isso no DNS recursivo?
Startup
BIND (named.conf):
trusted-keys {
br. 257 3 5
‘‘AwEAAdDoVnG9CyHbPUL2rTnE22uN66gQCrUW5W0NTXJB
NmpZXP27w7PMNpyw3XCFQWP/XsT0pdzeEGJ400kdbbPq
Xr2lnmEtWMjj3Z/ejR8mZbJ/6OWJQ0k/2YOyo6Tiab1N
GbGfs513y6dy1hOFpz+peZzGsCmcaCsTAv+DP/wmm+hN
x94QqhVx0bmFUiCVUFKU3TS1GP415eykXvYDjNpy6AM=’’;
};
Unbound (unbound.conf):
trust-anchor: ‘‘br. DS 18457 5 1 1067149C134A5B5FF8FC5ED0996E4E9E50AC21B1’’
Manuten¸c˜ao
1 Obtenha a nova chave em https://registro.br/ksk/;
2 Ancore a nova chave no servidor DNS recursivo.
86 / 135
Parte VI
Firewalls
87 / 135
DNS
Definido nas RFCs 1034 e 1035;
Servidores aceitam consultas em transporte TCP/UDP, porta 53;
Payload maximo em transporte UDP de 512 bytes;
Payload maximo por mensagem DNS em TCP de 64 Kbytes.
88 / 135
DNS
Quando TCP ´e utilizado
Transferˆencias de zona (AXFR);
Respostas com payload maior do que 512 bytes:
1 Consulta inicial via UDP;
2 Resposta maior do que 512 bytes, flag TC e marcada para indicar que
sua resposta est´a truncada;
3 Cliente refaz consulta via TCP.
89 / 135
EDNS0 - Extension Mechanisms for DNS
Definido na RFC 2671;
Extens˜ao do protocolo DNS original para eliminar alguns limites do
protocolo;
Permite:
◮ mais flags e RCODEs ao cabe alho DNS;
◮ novos tipos de labels;
◮ payloads maiores em transporte UDP (limitado a 64 Kbytes);
◮ define um novo pseudo-RR: OPT.
90 / 135
EDNS0 - Extension Mechanisms for DNS
Depende de suporte tanto no cliente como no servidor;
Cliente envia consulta UDP com pseudo-RR OPT na se¸c˜ao Additional
da mensagem DNS, informando qual o tamanho m´aximo de respostas
UDP que pode processar;
Se servidor suportar EDNS0, pode aumentar o limite para o tamanho
da resposta que vai retornar ao cliente, evitando re-query via TCP;
Se servidor n˜ao suportar EDNS0, envia resposta com at´e 512 bytes de
payload DNS.
91 / 135
EDNS0 - Extension Mechanisms for DNS
Alguns exemplos de servidores que suportam EDNS0:
Bind (desde 8.3.x - 2001);
Microsoft DNS server (Windows 2003);
NSD (auth only - desde 1.x - 2003);
ANS/CNS.
92 / 135
Configurando o Firewall
Por que configurar corretamente?
Garantir qualidade na resolu¸c˜ao DNS, ou seja, evitar atrasos e,
principalmente, a impossibilidade de resolu¸c˜ao de nomes;
Evitar overhead desnecess´ario em servidores DNS, tanto recursivos
como autoritativos.
93 / 135
Configurando o Firewall
Autoritativos
Consultas com destino `a porta 53 UDP e TCP do servidor autoritativo e
respectivas respostas devem ser permitidas.
Recursivos
Consultas do servidor recursivo com destino `a porta 53 UDP e TCP de
qualquer outro servidor e respectivas respostas devem ser permitidas;
Consultas vindas de clientes autorizados com destino `a porta 53 UDP
e TCP do servidor recursivo e respectivas respostas devem ser
permitidas;
Bloqueio `as demais consultas DNS direcionadas ao servidor recursivo.
94 / 135
Configurando o Firewall
Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0, verifique se seu firewall permite
datagramas UDP/DNS com mais de 512 bytes. Um teste pode ser feito
atrav´es da seguinte consulta (935 bytes de payload DNS):
dig @a.dns.br br ns +dnssec +bufsize=1000
Se a resposta n˜ao for recebida, pode-se:
corrigir o comportamento do firewall;
diminuir o payload m´aximo enviado via record OPT na configura¸c˜ao;
EDNS0 do servidor para 512 bytes.
95 / 135
Configurando o Firewall
Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0 e o firewall suporta mensagens
DNS maiores que 512 bytes, verifique se seu firewall ´e capaz de fazer o
correto reassembly de datagramas UDP fragmentados. Um teste pode ser
feito atrav´es da seguinte consulta (2185 bytes de payload DNS):
dig @a.dns.br br dnskey +dnssec +bufsize=2500
Se a resposta n˜ao for recebida, pode-se:
corrigir o comportamento do firewall;
diminuir o payload m´aximo enviado via record OPT na configura¸c˜ao
EDNS0 do resolver. RFC EDNS0 sugere que se configure baseado em
MTU de 1280 bytes.
96 / 135
Parte VII
Testes de Performance
97 / 135
Testes de Performance - Recursivo
Dependente de fatores externos
Link, banda local
Capacidade dos autoritativos
98 / 135
Testes de Performance - Recursivo
Responde `a consultas
consultas j´a em cache
consulta servidores autoritativos
Aviso
Exatid˜ao de uma simula¸c˜ao depende da comunica¸c˜ao com os autoritativos
99 / 135
Testes de Performance - Recursivo
Testes Propostos
Consultas em cache
Algumas dezenas de consultas
repetidas por 5 minutos
!Cache
Servidor com cache limpo
Consultas ´unicas durante 5 minutos
Todas as consultas v´alidas
100 / 135
Testes de Performance - Recursivo
Ambiente
Servidor Recursivo
2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s
FreeBSD 7.2 amd64
Bind 9.6.1-P1 compilado com suporte a threads
Unbound 1.4.0
Cliente
1 Xeon X5560 2.80GHz QuadCore HT
DNSPERF 1.0.1.0-1
resperf - mede throughput do recursivo
Dispon´ıvel em http://www.nominum.com
Cliente e Servidor no mesmo seguimento de rede
101 / 135
Testes de Performance - Recursivo
°resperf -d <arquivo consultas> -s <servidor> -r 300
-d: Especifica um aquivo contendo as consultas
Formato: HOST RR
www.registro.br A
nic.br MX
...
-s: IP ou nome do servidor recursivo
-r: Tempo do teste, em segundos
102 / 135
Testes de Performance - Recursivo
Bind - Consultas em Cache
N.threads = 8 ( named ... -n 8 )
103 / 135
Testes de Performance - Recursivo
Unbound - Consultas em cache
N.threads = 8 ( unbound.conf )
104 / 135
Testes de Performance - Recursivo
Bind - Consultas ´unicas - !Cache
N.threads = 8 ( named ... -n 8 )
105 / 135
Testes de Performance - Recursivo
Unbound - Consultas ´unicas - !Cache
N.threads = 8 ( unbound.conf )
106 / 135
Testes de Performance - Autoritativo
Responde apenas consultas para zonas configuradas
Zonas carregadas em mem´oria
107 / 135
Testes de Performance - Autoritativo
Teste Proposto
Servidor autoritativo com 1000 zonas configuradas
Dois clientes consultam aleatoriamente registros existentes nessas
zonas
108 / 135
Testes de Performance - Autoritativo
Ambiente
Servidor Autoritativo
2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s
FreBSD 7.2 amd64
Bind 9.6.1-P1 compilado com threads
NSD 3.2.3
Clientes
1 Xeon X5560 2.80GHz QuadCore HT
Queryperf 1.12
Dispon´ıvel no contrib do bind
Servidor e clientes no mesmo seguimento de rede
109 / 135
Testes de Performance - Autoritativo
°queryperf -d <arquivo consultas> -s <servidor> -l <tempo>
-d: Especifica um aquivo contendo as consultas
Formato: HOST RR
www.registro.br A
nic.br MX
...
-s: IP ou nome do servidor recursivo
-l: Tempo do teste, em segundos
110 / 135
Testes de Performance - Autoritativo
Bind
12 Threads = 224000 qps
111 / 135
Testes de Performance - Autoritativo
NSD
5 servidores = 257770 qps
112 / 135
Parte VIII
Escalabilidade de Recursivos
113 / 135
Escalabilidade de Recursivos
Motiva¸c˜ao
DNS recursivo inst´avel ´e foco de reclama¸c˜oes constantes
114 / 135
Escalabilidade de Recursivos
Escalabilidade e Estabilidade
Suporte a alto tr´afego
Suporte a muitos usu´arios
F´acil upgrade caso a demanda aumente
Manuten¸c˜ao sem parada do sistema
Alta disponibilidade
Balanceamento de carga
115 / 135
Escalabilidade de Recursivos
Cluster
116 / 135
Escalabilidade de Recursivos
Flexibilidade
Mais de um roteador
Mais de um switch
117 / 135
Escalabilidade de Recursivos
Solu¸c˜ao
Roteador + [UNIX + Quagga + BIND]
Endere¸co do servi¸co roda na loopback dos servidores
Anycast dentro do cluster
Protocolo de roteamento dinˆamico com suporte a ECMP - OSPF
118 / 135
Escalabilidade de Recursivos
Topologia
119 / 135
Escalabilidade de Recursivos
Anycast na Rede
Redundancia
IBGP entre os clusters
120 / 135
Escalabilidade de Recursivos
ECMP
Assimetria de tr´afego
O balanceamento de carga n˜ao ´e exato
Incoerˆencia de cache entre os servidores
O cache dos servidores n˜ao s˜ao idˆenticos, pois o tr´afego que eles
recebem tamb´em n˜ao ´e
N˜ao h´a problema!
121 / 135
Escalabilidade de Recursivos
Detalhes do BIND
BIND rodando nas duas interfaces
Queries chegam para a loopback
Monitora¸c˜ao pelo endere¸co individual
acl
Max-cache-size
recursive-clients
122 / 135
Escalabilidade de Recursivos
Controle
1 Iniciar processo do BIND
2 Subir interface loopback
Quagga envia LSA para o roteador
ifconfig lo1 up
3 Tirar o servidor do ar
Enviar LSA removendo a rota
ifconfig lo1 down
123 / 135
Escalabilidade de Recursivos
Recursos
Exemplo:
Rede com 1M de usu´arios simultˆaneos
M´edia de 50 q/h (por usu´ario)
50 x 1M = 50M q/h 14k q/s
Um ´unico servidor (com hardware robusto) ´e capaz de suportar esta carga
Sugest˜ao para atingir alta disponibilidade:
- cluster com 3 ou 4 servidores
124 / 135
Escalabilidade de Recursivos
Monitora¸c˜ao
Processo do BIND est´a no ar?
Monitorar endere¸co unicast de cada servidor
Qual servidor que est´a respondendo?
dig @192.168.1.1 chaos txt hostname.bind +short
Watchdog
Caso o BIND pare de responder
ifconfig lo1 down
125 / 135
Parte IX
Monitoramento
126 / 135
Monitoramento
Autoritativos
Disponibilidade
Autoridade sobre as zonas
Vers˜ao da zona (serial)
DNSSEC - valida¸c˜ao
Recursos
127 / 135
Monitoramento - Autoritativo
SNMP - cpu, mem´oria, tr´afego
Nagios
Plugin check dns
Alertas via email, sms
Status Information:OK: Servidor a.dns.br. (200.160.0.10)
respondendo com autoridade para ”com.br”
Custom Plugins - Serial, DNSSEC
128 / 135
Monitoramento - Autoritativo
DSC - DNS Statistics Collector
Dispon´ıvel em http://dns.measurement-factory.com/tools/dsc/
Collector - Processo que usa a libpcap para coletar pacotes DNS
Armazena em XML
Presenter - Recebe datasets XML dos coletores CGI plota as
estat´ısticas
129 / 135
Monitoramento - Autoritativo
Diversas estat´ısticas importantes para um autoritativo
By Node
Qtypes
Client Geography
IP Version
DNS Transport
...
130 / 135
Monitoramento - Autoritativo
Query Types
131 / 135
Monitoramento
Recursivos
Disponibilidade
Recursos
132 / 135
Monitoramento - Recursivo
SNMP - cpu, mem´oria, tr´afego
Nagios
Plugin check dns
DNS OK: 0.009 seconds response time. www.registro.br returns 200.160.2.3
Custom Plugins
133 / 135
Perguntas?
134 / 135
Referˆencias
◮ RFC 2317
Classless IN-ADDR.ARPA delegation
◮ DNS recursivo est´avel e escal´avel
ftp://ftp.registro.br/pub/gter/gter23/05-DNSrecEstavelEscalavel.pdf
◮ Firewalls e DNS, como e porque configurar corretamente
ftp://ftp.registro.br/pub/doc/dns-fw.pdf
◮ Recomenda¸c˜oes para Evitar o Abuso de Servidores DNS Recursivos Abertos
http://www.cert.br/docs/whitepapers/dns-recursivo-aberto
◮ A ´ultima vers˜ao do tutorial de DNSSEC pode ser encontrada em
ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf
135 / 135

Mais conteúdo relacionado

Mais procurados (20)

Servidor dns
Servidor dnsServidor dns
Servidor dns
 
(16) dns
(16) dns(16) dns
(16) dns
 
DNS – domain name system
DNS – domain name systemDNS – domain name system
DNS – domain name system
 
Comando para rede
Comando para redeComando para rede
Comando para rede
 
Redes prática - DNS Bind
Redes prática - DNS BindRedes prática - DNS Bind
Redes prática - DNS Bind
 
Como funciona a Internet - DNS
Como funciona a Internet - DNSComo funciona a Internet - DNS
Como funciona a Internet - DNS
 
Aula 5 infraestrutura - 28012012
Aula 5   infraestrutura - 28012012Aula 5   infraestrutura - 28012012
Aula 5 infraestrutura - 28012012
 
Servidor DNS
Servidor DNSServidor DNS
Servidor DNS
 
Dns
DnsDns
Dns
 
Dns intro
Dns introDns intro
Dns intro
 
Ppdns
PpdnsPpdns
Ppdns
 
Dns
DnsDns
Dns
 
Instalação do Servidor Ubuntu 12.04 32 bits
Instalação do Servidor Ubuntu 12.04 32 bitsInstalação do Servidor Ubuntu 12.04 32 bits
Instalação do Servidor Ubuntu 12.04 32 bits
 
Dextra Sistemas: Novidades do PostgreSQL 9.0
Dextra Sistemas: Novidades do PostgreSQL 9.0Dextra Sistemas: Novidades do PostgreSQL 9.0
Dextra Sistemas: Novidades do PostgreSQL 9.0
 
Aula 10 redes de computadores - Funcionamento do DNS
Aula 10   redes de computadores - Funcionamento do DNSAula 10   redes de computadores - Funcionamento do DNS
Aula 10 redes de computadores - Funcionamento do DNS
 
Conceitos associado às redes
Conceitos associado às redesConceitos associado às redes
Conceitos associado às redes
 
Curso de Msdos vol4
Curso de Msdos vol4Curso de Msdos vol4
Curso de Msdos vol4
 
Redes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCPRedes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCP
 
Comandos ip-de-redes-no-windows-1319-ory76a
Comandos ip-de-redes-no-windows-1319-ory76aComandos ip-de-redes-no-windows-1319-ory76a
Comandos ip-de-redes-no-windows-1319-ory76a
 
Criar servidor em virtualbox
Criar servidor em virtualboxCriar servidor em virtualbox
Criar servidor em virtualbox
 

Destaque

AdministraçãO Gnu Linux
AdministraçãO Gnu LinuxAdministraçãO Gnu Linux
AdministraçãO Gnu Linuxpeter_lucas
 
Aula 10 configuração ip estático ubuntu server
Aula 10   configuração ip estático ubuntu serverAula 10   configuração ip estático ubuntu server
Aula 10 configuração ip estático ubuntu serverAparicio Junior
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerTiago Bezerra Dos Santos
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxImpacta Eventos
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de redefernandao777
 
Treinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxTreinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxCid de Andrade
 

Destaque (11)

Redes De Computadores - Alberane - 3
Redes De Computadores - Alberane - 3Redes De Computadores - Alberane - 3
Redes De Computadores - Alberane - 3
 
AdministraçãO Gnu Linux
AdministraçãO Gnu LinuxAdministraçãO Gnu Linux
AdministraçãO Gnu Linux
 
Aula 10 configuração ip estático ubuntu server
Aula 10   configuração ip estático ubuntu serverAula 10   configuração ip estático ubuntu server
Aula 10 configuração ip estático ubuntu server
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu Server
 
Instalação e configuração
Instalação e configuraçãoInstalação e configuração
Instalação e configuração
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de rede
 
Treinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxTreinamento de comandos Unix e Linux
Treinamento de comandos Unix e Linux
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 
Guia Ubuntu Server
Guia Ubuntu ServerGuia Ubuntu Server
Guia Ubuntu Server
 

Semelhante a DNS

R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)Mariana Hiyori
 
Redes de computadores II - 5.Serviços em Redes TCP/IP
Redes de computadores II - 5.Serviços em Redes TCP/IPRedes de computadores II - 5.Serviços em Redes TCP/IP
Redes de computadores II - 5.Serviços em Redes TCP/IPMauro Tapajós
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNSLuiz Arthur
 
Dns Dhcp Proxy Server1
Dns Dhcp Proxy Server1Dns Dhcp Proxy Server1
Dns Dhcp Proxy Server1Licínio Rocha
 
Palestra sobre DNS apresentada no 3 PTT Forum
Palestra sobre DNS apresentada no 3 PTT ForumPalestra sobre DNS apresentada no 3 PTT Forum
Palestra sobre DNS apresentada no 3 PTT ForumWilson Rogerio Lopes
 
dns apsotila rede rede rede rede rede.pdf
dns apsotila rede rede rede rede rede.pdfdns apsotila rede rede rede rede rede.pdf
dns apsotila rede rede rede rede rede.pdfDenivalSouza1
 
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfGiovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfEwersonLuizOliveira
 
DNSORC
DNSORCDNSORC
DNSORCdnsorc
 
Zimbra Anahuac2
Zimbra Anahuac2Zimbra Anahuac2
Zimbra Anahuac2anahuac2
 
Aula 24 - Camada de Aplicacao DHCP.pdf
Aula 24 - Camada de Aplicacao DHCP.pdfAula 24 - Camada de Aplicacao DHCP.pdf
Aula 24 - Camada de Aplicacao DHCP.pdfssuseraeb9bd
 
Samba, Squid, FTP, DHCP2
Samba, Squid, FTP, DHCP2Samba, Squid, FTP, DHCP2
Samba, Squid, FTP, DHCP2SoftD Abreu
 

Semelhante a DNS (20)

DNS,DNSSEC and Best Practices
DNS,DNSSEC and Best PracticesDNS,DNSSEC and Best Practices
DNS,DNSSEC and Best Practices
 
Protocolo FTP e DNS
Protocolo FTP e DNSProtocolo FTP e DNS
Protocolo FTP e DNS
 
R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)
 
Servico dns
Servico dnsServico dns
Servico dns
 
Redes de computadores II - 5.Serviços em Redes TCP/IP
Redes de computadores II - 5.Serviços em Redes TCP/IPRedes de computadores II - 5.Serviços em Redes TCP/IP
Redes de computadores II - 5.Serviços em Redes TCP/IP
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNS
 
10 dns-firewall
10 dns-firewall10 dns-firewall
10 dns-firewall
 
Dns Dhcp Proxy Server1
Dns Dhcp Proxy Server1Dns Dhcp Proxy Server1
Dns Dhcp Proxy Server1
 
Aula 4 infraestrutura - 14012012
Aula 4   infraestrutura - 14012012Aula 4   infraestrutura - 14012012
Aula 4 infraestrutura - 14012012
 
Palestra sobre DNS apresentada no 3 PTT Forum
Palestra sobre DNS apresentada no 3 PTT ForumPalestra sobre DNS apresentada no 3 PTT Forum
Palestra sobre DNS apresentada no 3 PTT Forum
 
dns apsotila rede rede rede rede rede.pdf
dns apsotila rede rede rede rede rede.pdfdns apsotila rede rede rede rede rede.pdf
dns apsotila rede rede rede rede rede.pdf
 
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdfGiovaneli_-_Apresentação_ DNS ANYCAST.pdf
Giovaneli_-_Apresentação_ DNS ANYCAST.pdf
 
DNSORC
DNSORCDNSORC
DNSORC
 
Redes dns
Redes dnsRedes dns
Redes dns
 
Zimbra Anahuac2
Zimbra Anahuac2Zimbra Anahuac2
Zimbra Anahuac2
 
Introdução ao DNS
Introdução ao DNSIntrodução ao DNS
Introdução ao DNS
 
DNS - Aula
DNS - AulaDNS - Aula
DNS - Aula
 
Aula 24 - Camada de Aplicacao DHCP.pdf
Aula 24 - Camada de Aplicacao DHCP.pdfAula 24 - Camada de Aplicacao DHCP.pdf
Aula 24 - Camada de Aplicacao DHCP.pdf
 
Samba, Squid, FTP, DHCP2
Samba, Squid, FTP, DHCP2Samba, Squid, FTP, DHCP2
Samba, Squid, FTP, DHCP2
 
Camada de aplicacao parte2
Camada de aplicacao parte2Camada de aplicacao parte2
Camada de aplicacao parte2
 

DNS

  • 1. Tutorial DNS 3 PTT F´orum David Robert Camargo de Campos <david@registro.br> Rafael Dantas Justo <rafael@registro.br> Wilson Rog´erio Lopes <wilson@registro.br> Registro.br Dezembro de 2009 1 / 135
  • 2. Objetivos Entender os conceitos de DNS Configurar servidores autoritativos Configurar servidores recursivos Entender as diferen¸cas entre DNS e DNSSEC Configurar corretamente o firewall Testar performance dos servidores Planejar escalabilidade de recursivos Monitorar os servidores 2 / 135
  • 3. Cronograma 1 DNS Conceitos Arquitetura 2 Servidores DNS Autoritativos Cen´ario Arquivos de Zona Configura¸c˜ao BIND Configura¸c˜ao NSD 3 Servidores DNS Recursivos Cen´ario Configura¸c˜ao BIND Servidores DNS Recursivos abertos 4 Recursivo e Autoritativo 5 DNSSEC Vulnerabilidades do DNS Conceito Configura¸c˜ao do Autoritativo Configura¸c˜ao do Recursivo 6 Firewalls DNS EDNS0 Configura¸c˜ao 7 Testes de Performance Recursivo Autoritativo 8 Escalabilidade de Recursivos 9 Monitoramento Autoritativo Recursivo 3 / 135
  • 5. 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, dados dispostos em uma ´arvore invertida - 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 5 / 135
  • 7. Dom´ınio Vs Zona Zona gov.br Zona nom.br Zona eng.br Domínio br Zona joao.silva.nom.brZona tutorial.foo.eng.br Zona foo.eng.br Zona br "." com eng br org nom gov foo tutorial joao Zona fazenda.gov.br fazenda Delegação silva Delega¸c˜ao Indica uma transferˆencia de responsabilidade na administra¸c˜ao apartir daquele ponto na ´arvore DNS 7 / 135
  • 8. Resource Records Os dados associados com os nomes de dom´ınio est˜ao contidos em Resource Records ou RRs (Registro de Recursos) S˜ao divididos em classes e tipos Atualmente existe uma grande variedade de tipos O conjunto de resource records com o mesmo nome de dom´ınio, classe e tipo ´e denominado RRset 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) PTR Mapeamento de endere¸co a nome 8 / 135
  • 9. Tipos de servidores 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 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 9 / 135
  • 10. Exemplo de requisi¸c˜ao de endere¸co Supondo que o cache est´a vazio ou sem informa¸c˜oes de br, eng.br, foo.eng.br, exemplo.foo.eng.br Resolver Servi¸co localizado no cliente que tem como responsabilidade resolver as requisi¸c˜oes DNS para diversos aplicativos 10 / 135
  • 11. Exemplo de requisi¸c˜ao de endere¸co Supondo que o cache est´a vazio ou sem informa¸c˜oes de br, eng.br, foo.eng.br, exemplo.foo.eng.br 11 / 135
  • 12. Exemplo de requisi¸c˜ao de endere¸co 12 / 135
  • 13. Exemplo de requisi¸c˜ao de endere¸co 13 / 135
  • 14. Exemplo de requisi¸c˜ao de endere¸co 14 / 135
  • 15. Exemplo de requisi¸c˜ao de endere¸co 15 / 135
  • 16. Exemplo de requisi¸c˜ao de endere¸co Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? "." BR ENG FOO TUTORIAL 16 / 135
  • 17. Exemplo de requisi¸c˜ao de endere¸co Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? 200.160.10.251 "." BR ENG FOO TUTORIAL 17 / 135
  • 18. Exemplo de requisi¸c˜ao de endere¸co Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? 200.160.10.251 exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? 200.160.10.251 "." BR ENG FOO TUTORIAL 18 / 135
  • 19. Exemplo de requisi¸c˜ao de endere¸co Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? 200.160.10.251 exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? 200.160.10.251 "." BR ENG FOO TUTORIAL 19 / 135
  • 20. Fluxo de dados 1 Resolver faz consultas no Recursivo 2 Recursivo faz consultas no Master ou Slave 3 Master tem a zona original (via arquivo ou Dynamic Update) 4 Slave recebe a zona do Master (AXFR ou IXFR) 20 / 135
  • 21. Parte II Configurando Servidores DNS Autoritativos 21 / 135
  • 22. Cen´ario Organiza¸c˜ao Foo Engenharia Ltda. Possui o dom´ınio foo.eng.br registrado no Registro.br; Possui o bloco 200.160.0/24 designado de um provedor; Possui o bloco 2001:12ff::/32 alocado pelo Registro.br. Cliente A Possui o dom´ınio a.foo.eng.br delegado pela organiza¸c˜ao Foo; Possui o bloco 200.160.0.127/28 designado pela organiza¸c˜ao Foo. Cliente B Possui o dom´ınio b.foo.eng.br delegado pela organiza¸c˜ao Foo; Possui o bloco 200.160.0.191/26 designado pela organiza¸c˜ao Foo. 22 / 135
  • 23. Cen´ario Cliente BCliente A Organização Foo Engenharia Ltda. 200.160.0/24 200.160.0.127/28 200.160.0.191/26 foo.eng.br a.foo.eng.br b.foo.eng.br 2001:12ff::/32 23 / 135
  • 25. Organiza¸c˜ao Foo - Arquivo de zona db.foo.eng.br foo.eng.br. 86400 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona foo.eng.br. 86400 IN NS ns1.foo.eng.br. foo.eng.br. 86400 IN NS ns2.foo.eng.br. ;; Cliente A a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br. a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br. ;; Cliente B b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br. b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br. 25 / 135
  • 26. Organiza¸c˜ao Foo - Arquivo de zona (continua¸c˜ao...) db.foo.eng.br ;; Tradu¸c˜ao nomes → IPs (GLUEs) ns1.foo.eng.br. 86400 IN A 200.160.0.1 ns2.foo.eng.br. 86400 IN A 200.160.0.2 ns1.foo.eng.br. 86400 IN AAAA 2001:12ff::1 ns2.foo.eng.br. 86400 IN AAAA 2001:12ff::2 ns1.a.foo.eng.br. 86400 IN A 200.160.0.128 ns2.a.foo.eng.br. 86400 IN A 200.160.0.129 ns1.b.foo.eng.br. 86400 IN A 200.160.0.192 ns2.b.foo.eng.br. 86400 IN A 200.160.0.193 ;; Web server www.foo.eng.br. 86400 IN A 200.160.0.3 www.foo.eng.br. 86400 IN AAAA 2001:12ff::3 26 / 135
  • 27. Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4 db.0.160.200.in-addr.arpa 0.160.200.in-addr.arpa. 172800 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona reverso 0.160.200.in-addr.arpa. 172800 IN NS ns1.foo.eng.br. 0.160.200.in-addr.arpa. 172800 IN NS ns2.foo.eng.br. ;; Cliente A (200.160.0.127 → 200.160.0.142 = 200.160.0.127/28) 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br. 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns2.a.foo.eng.br. 128.0.160.200.in-addr.arpa. 172800 IN CNAME 128.127/28.0.160.200.in-addr.arpa. 129.0.160.200.in-addr.arpa. 172800 IN CNAME 129.127/28.0.160.200.in-addr.arpa. ... 142.0.160.200.in-addr.arpa. 172800 IN CNAME 142.127/28.0.160.200.in-addr.arpa. 27 / 135
  • 28. Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4 db.0.160.200.in-addr.arpa (continua¸c˜ao...) ;; Cliente B (200.160.0.191 → 200.160.0.255 = 200.160.0.191/26) 191/26.0.160.200.in-addr.arpa. 172800 IN NS ns1.b.foo.eng.br. 191/26.0.160.200.in-addr.arpa. 172800 IN NS ns2.b.foo.eng.br. 192.0.160.200.in-addr.arpa. 172800 IN CNAME 192.127/28.0.160.200.in-addr.arpa. 193.0.160.200.in-addr.arpa. 172800 IN CNAME 193.127/28.0.160.200.in-addr.arpa. ... 254.0.160.200.in-addr.arpa. 172800 IN CNAME 254.127/28.0.160.200.in-addr.arpa. ;; Endere¸cos reversos 1.0.160.200.in-addr.arpa. 86400 IN PTR ns1.foo.eng.br. 2.0.160.200.in-addr.arpa. 86400 IN PTR ns2.foo.eng.br. 3.0.160.200.in-addr.arpa. 86400 IN PTR www.foo.eng.br. ... 28 / 135
  • 29. Organiza¸c˜ao Foo - Arquivo de zona reverso IPv4 Mas por que ´e necess´ario o CNAME? Porque a RFC 2317 recomenda; Esta solu¸c˜ao n˜ao exige altera¸c˜oes nos softwares dos servidores DNS; Altera¸c˜ao de hosts no reverso dos clientes n˜ao implicam em altera¸c˜oes na zona reverso da organiza¸c˜ao Foo. 29 / 135
  • 30. Organiza¸c˜ao Foo - Arquivo de zona reverso IPv6 db.f.f.2.1.1.0.0.2.ip6.arpa f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN NS ns1.foo.eng.br. f.f.2.1.1.0.0.2.ip6.arpa. 86400 IN NS ns2.foo.eng.br. °ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.2.1.1.0.0.2.ip6.arpa. 1 86400 IN PTR ns1.foo.eng.br. 2 86400 IN PTR ns2.foo.eng.br. 3 86400 IN PTR www.foo.eng.br. Dificuldade A inviabilidade de listar todos os reversos dos hosts de um bloco IPv6 gerou diversas discuss˜oes. O draft draft-howard-isp-ip6rdns-01 aborda este tema. 30 / 135
  • 31. Publica¸c˜ao de Reverso Informa¸c˜ao Para as delega¸c˜oes informadas diretamente na interface do Registro.br (/24 ou maior) as publica¸c˜oes das altera¸c˜oes ocorrem a cada 4 horas com ´ınicio as 2hs. 31 / 135
  • 32. Cliente A - Arquivo de zona db.a.foo.eng.br a.foo.eng.br. 86400 IN SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br. a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br. ;; Tradu¸c˜ao nomes → IPs (GLUEs) ns1.a.foo.eng.br. 86400 IN A 200.160.0.128 ns2.a.foo.eng.br. 86400 IN A 200.160.0.129 ;; Web server www.a.foo.eng.br. 86400 IN A 200.160.0.142 32 / 135
  • 33. Cliente A - Arquivo de zona reverso db.127.0.160.200.in-addr.arpa 127/28.0.160.200.in-addr.arpa. 172800 IN SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona reverso 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br. 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns2.a.foo.eng.br. ;; Endere¸cos reversos 128.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns1.a.foo.eng.br. 129.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns2.a.foo.eng.br. ... 142.127/28.0.160.200.in-addr.arpa. 172800 IN PTR www.a.foo.eng.br. 33 / 135
  • 34. Cliente B - Arquivo de zona db.b.foo.eng.br b.foo.eng.br. 86400 IN SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br. b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br. ;; Tradu¸c˜ao nomes → IPs (GLUEs) ns1.b.foo.eng.br. 86400 IN A 200.160.0.192 ns2.b.foo.eng.br. 86400 IN A 200.160.0.193 ;; Web server www.b.foo.eng.br. 86400 IN A 200.160.0.254 34 / 135
  • 35. Cliente B - Arquivo de zona reverso db.191.0.160.200.in-addr.arpa 191/26.0.160.200.in-addr.arpa. 172800 IN SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona reverso 191/26.0.160.200.in-addr.arpa. 172800 IN NS ns1.b.foo.eng.br. 191/26.0.160.200.in-addr.arpa. 172800 IN NS ns2.b.foo.eng.br. ;; Endere¸cos reversos 192.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns1.b.foo.eng.br. 193.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns2.b.foo.eng.br. ... 254.191/26.0.160.200.in-addr.arpa. 172800 IN PTR www.b.foo.eng.br. 35 / 135
  • 36. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND) Gerando chave TSIG dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-foo named.conf no master (200.160.0.1) options { listen-on { 200.160.0.1; }; listen-on-v6 { 2001:12ff::1; }; recursion no; }; key ‘‘key-foo’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.2 { keys { key-foo; }; }; server 2001:12ff::2 { keys { key-foo; }; }; 36 / 135
  • 37. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND) named.conf no master (200.160.0.1) (continua¸c˜ao...) zone ‘‘foo.eng.br’’ { type master; file ‘‘db.foo.eng.br’’; allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; }; }; zone ‘‘0.160.200.in-addr.arpa’’ { type master; file ‘‘db.0.160.200.in-addr.arpa’’; allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; }; }; zone ‘‘f.f.2.1.1.0.0.2.ip6.arpa’’ { type master; file ‘‘db.f.f.2.1.1.0.0.2.ip6.arpa’’; allow-transfer { 200.160.0.2; 2001:12ff::2; key key-foo; }; }; 37 / 135
  • 38. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND) named.conf no slave (200.160.0.2) options { listen-on { 200.160.0.2; }; listen-on-v6 { 2001:12ff::2; }; recursion no; }; key ‘‘key-foo’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.1 { keys { key-foo; }; }; server 2001:12ff::1 { keys { key-foo; }; }; 38 / 135
  • 39. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (BIND) named.conf no slave (200.160.0.2) (continua¸c˜ao...) zone ‘‘foo.eng.br’’ { type slave; file ‘‘db.foo.eng.br’’; masters { 200.160.0.1; 2001:12ff::1; }; }; zone ‘‘0.160.200.in-addr.arpa’’ { type slave; file ‘‘db.0.160.200.in-addr.arpa’’; masters { 200.160.0.1; 2001:12ff::1; }; }; zone ‘‘f.f.2.1.1.0.0.2.ip6.arpa’’ { type slave; file ‘‘db.f.f.2.1.1.0.0.2.ip6.arpa’’; masters { 200.160.0.1; 2001:12ff::1; }; }; 39 / 135
  • 40. Cliente A - Arquivo de configura¸c˜ao (BIND) Gerando chave TSIG dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-a named.conf no master (200.160.0.128) options { listen-on { 200.160.0.128; }; recursion no; }; key ‘‘key-cliente-a’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.129 { keys { key-cliente-a; }; }; zone ‘‘a.foo.eng.br’’ { type master; file ‘‘db.a.foo.eng.br’’; allow-transfer { 200.160.0.129; key key-cliente-a; }; }; zone ‘‘127/28.0.160.200.in-addr.arpa’’ { type master; file ‘‘db.127.0.160.200.in-addr.arpa’’; allow-transfer { 200.160.0.129; key key-cliente-a; }; }; 40 / 135
  • 41. Cliente A - Arquivo de configura¸c˜ao (BIND) named.conf no slave (200.160.0.129) options { listen-on { 200.160.0.129; }; recursion no; }; key ‘‘key-cliente-a’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.128 { keys { key-cliente-a; }; }; zone ‘‘a.foo.eng.br’’ { type slave; file ‘‘db.a.foo.eng.br’’; masters { 200.160.0.128; }; }; zone ‘‘127/28.0.160.200.in-addr.arpa’’ { type slave; file ‘‘db.127.0.160.200.in-addr.arpa’’; masters { 200.160.0.128; }; }; 41 / 135
  • 42. Cliente B - Arquivo de configura¸c˜ao (BIND) Gerando chave TSIG dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-b named.conf no master (200.160.0.192) options { listen-on { 200.160.0.192; }; recursion no; }; key ‘‘key-cliente-b’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.193 { keys { key-cliente-b; }; }; zone ‘‘b.foo.eng.br’’ { type master; file ‘‘db.b.foo.eng.br’’; allow-transfer { 200.160.0.193; key key-cliente-b; } }; zone ‘‘191/26.0.160.200.in-addr.arpa’’ { type master; file ‘‘db.191.0.160.200.in-addr.arpa’’; allow-transfer { 200.160.0.193; key key-cliente-b; }; }; 42 / 135
  • 43. Cliente B - Arquivo de configura¸c˜ao (BIND) named.conf no slave (200.160.0.193) options { listen-on { 200.160.0.193; }; recursion no; }; key ‘‘key-cliente-b’’ { algorithm hmac-md5; secret ‘‘VgMNxtub39M=’’; }; server 200.160.0.192 { keys { key-cliente-b; }; }; zone ‘‘b.foo.eng.br’’ { type slave; file ‘‘db.b.foo.eng.br’’; masters { 200.160.0.192; }; }; zone ‘‘191/26.0.160.200.in-addr.arpa’’ { type slave; file ‘‘db.191.0.160.200.in-addr.arpa’’; masters { 200.160.0.192; }; }; 43 / 135
  • 44. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD) Gerando chave TSIG - Com uma ferramenta do BIND! dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-foo nsd.conf no master (200.160.0.1) key: name: key-foo algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: foo.eng.br zonefile: db.foo.eng.br notify: 200.160.0.2 NOKEY notify: 2001:12ff::2 NOKEY provide-xfr: 200.160.0.2 key-foo provide-xfr: 2001:12ff::2 key-foo 44 / 135
  • 45. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD) nsd.conf no master (200.160.0.1) (continua¸c˜ao...) zone: name: 0.160.200.in-addr.arpa zonefile: db.0.160.200.in-addr.arpa notify: 200.160.0.2 NOKEY notify: 2001:12ff::2 NOKEY provide-xfr: 200.160.0.2 key-foo provide-xfr: 2001:12ff::2 key-foo zone: name: f.f.2.1.1.0.0.2.ip6.arpa zonefile: db.f.f.2.1.1.0.0.2.ip6.arpa notify: 200.160.0.2 NOKEY notify: 2001:12ff::2 NOKEY provide-xfr: 200.160.0.2 key-foo provide-xfr: 2001:12ff::2 key-foo Observa¸c˜ao O NSD quando utilizado como master n˜ao envia IXFR para os slaves. Mas caso o NSD seja utilizado como slave, ele entende requisi¸c˜oes IXFR. 45 / 135
  • 46. Organiza¸c˜ao Foo - Arquivo de configura¸c˜ao (NSD) nsd.conf no slave (200.160.0.2) key: name: key-foo algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: foo.eng.br zonefile: db.foo.eng.br allow-notify: 200.160.0.1 NOKEY allow-notify: 2001:12ff::1 NOKEY request-xfr: 200.160.0.1 key-foo request-xfr: 2001:12ff::1 key-foo zone: name: 0.160.200.in-addr.arpa zonefile: db.0.160.200.in-addr.arpa allow-notify: 200.160.0.1 NOKEY allow-notify: 2001:12ff::1 NOKEY request-xfr: 200.160.0.1 key-foo request-xfr: 2001:12ff::1 key-foo zone: name: f.f.2.1.1.0.0.2.ip6.arpa zonefile: db.f.f.2.1.1.0.0.2.ip6.arpa allow-notify: 200.160.0.1 NOKEY allow-notify: 2001:12ff::1 NOKEY request-xfr: 200.160.0.1 key-foo request-xfr: 2001:12ff::1 key-foo 46 / 135
  • 47. Cliente A - Arquivo de configura¸c˜ao (NSD) Gerando chave TSIG - Com uma ferramenta do BIND! dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-a nsd.conf no master (200.160.0.128) key: name: key-cliente-a algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: a.foo.eng.br zonefile: db.a.foo.eng.br notify: 200.160.0.129 NOKEY provide-xfr: 200.160.0.129 key-cliente-a zone: name: 127/28.0.160.200.in-addr.arpa zonefile: db.127.0.160.200.in-addr.arpa notify: 200.160.0.129 NOKEY provide-xfr: 200.160.0.129 key-cliente-a 47 / 135
  • 48. Cliente A - Arquivo de configura¸c˜ao (NSD) nsd.conf no slave (200.160.0.129) key: name: key-cliente-a algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: a.foo.eng.br zonefile: db.a.foo.eng.br allow-notify: 200.160.0.128 NOKEY request-xfr: 200.160.0.128 key-cliente-a zone: name: 127/28.0.160.200.in-addr.arpa zonefile: db.127.0.160.200.in-addr.arpa allow-notify: 200.160.0.128 NOKEY request-xfr: 200.160.0.128 key-cliente-a 48 / 135
  • 49. Cliente B - Arquivo de configura¸c˜ao (NSD) Gerando chave TSIG - Com uma ferramenta do BIND! dnssec-keygen -a HMAC-MD5 -b 128 -n HOST key-cliente-b nsd.conf no master (200.160.0.192) key: name: key-cliente-b algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: b.foo.eng.br zonefile: db.b.foo.eng.br notify: 200.160.0.193 NOKEY provide-xfr: 200.160.0.193 key-cliente-b zone: name: 191/26.0.160.200.in-addr.arpa zonefile: db.191.0.160.200.in-addr.arpa notify: 200.160.0.193 NOKEY provide-xfr: 200.160.0.193 key-cliente-b 49 / 135
  • 50. Cliente B - Arquivo de configura¸c˜ao (NSD) nsd.conf no slave (200.160.0.193) key: name: key-cliente-b algorithm: hmac-md5 secret: ‘‘VgMNxtub39M=’’ zone: name: b.foo.eng.br zonefile: db.b.foo.eng.br allow-notify: 200.160.0.192 NOKEY request-xfr: 200.160.0.192 key-cliente-b zone: name: 191/26.0.160.200.in-addr.arpa zonefile: db.191.0.160.200.in-addr.arpa allow-notify: 200.160.0.192 NOKEY request-xfr: 200.160.0.192 key-cliente-b 50 / 135
  • 51. Parte III Configurando Servidores DNS Recursivos 51 / 135
  • 52. Cen´ario A organiza¸c˜ao Foo deseja disponibilizar um servidor DNS recursivo para sua infra-estrutura local e para todos os seus clientes. Este servidor DNS recursivo ter´a o IPv4 200.160.0.6 e o IPv6 2001:12ff::6. 52 / 135
  • 53. Organiza¸c˜ao Foo (BIND) named.conf acl clientes { 127.0.0.0/8; 200.160.0.0/24; 2001:12ff::/32; }; options { listen-on { 127.0.0.1; 200.160.0.6; }; listen-on-v6 { 2001:12ff::6; }; directory ‘‘/etc’’; pid-file ‘‘/var/run/named/pid’’; statistics-file ‘‘/var/stats/named.stats’’; allow-query { clientes; }; allow-query-cache { clientes; }; allow-recursion { clientes; }; max-cache-size 512M; clients-per-query 0; max-clients-per-query 0; }; Aviso N˜ao utilizem a op¸c˜ao “query-source”. Ao fixar uma porta de origem o servidor DNS fica muito mais vulner´avel a ataques de polui¸c˜ao de cache. Principalmente aos ataques descritos por Dan Kaminsky. 53 / 135
  • 54. Organiza¸c˜ao Foo (BIND) named.conf (continua¸c˜ao...) logging { channel all { file ‘‘/var/log/named.log’’; versions 5 size 1M; print-time yes; }; category default { all; }; category security { all; }; }; zone ‘‘.’’ { type hint; file ‘‘named.root’’; }; zone ‘‘0.0.127.in-addr.arpa’’ { type master; file ‘‘db.127.0.0’’; }; 54 / 135
  • 55. Organiza¸c˜ao Foo (Unbound) unbound.conf server: port: 53 interface: 127.0.0.1 interface: 200.160.0.6 interface: 2001:12ff::6 access-control: 0.0.0.0/0 refuse access-control: 200.160.0.0/24 allow access-control: 127.0.0.0/8 allow access-control: ::0/0 refuse access-control: 2001:12ff::/32 allow directory: ‘‘/usr/local/unbound/etc/unbound’’ chroot: ‘‘/usr/local/unbound/etc/unbound’’ username: ‘‘unbound’’ logfile: ‘‘unbound.log’’ do-ip4: yes do-ip6: yes 55 / 135
  • 56. Cuidado com Recursivos Abertos! Causa O administrador n˜ao configura o servidor DNS recursivo para responder apenas para os clientes de sua rede. Efeito Aceitam consultas DNS vindas de qualquer computador da Internet. Possibilita ataques de amplifica¸c˜ao de respostas DNS e uso de banda por terceiros. Solu¸c˜ao Configura¸c˜ao correta do firewall. BIND: acl clientes { 127.0.0.0/8; 200.160.0.0/24; }; allow-query { clientes; }; allow-query-cache { clientes; }; allow-recursion { clientes; }; NSD: access-control: 0.0.0.0/0 refuse access-control: 200.160.0.0/24 allow access-control: 127.0.0.0/8 allow 56 / 135
  • 57. Cuidado com Recursivos Abertos! 57 / 135
  • 58. Parte IV Importˆancia da Separa¸c˜ao de Autoritativo e Recursivo 58 / 135
  • 59. Por que separar? Motivo Possibilita ataques ao servidor DNS recursivo; Aumenta a complexidade na administra¸c˜ao do servidor. Explicando... Recursivo e autoritativo possui configura¸c˜oes de acesso diferentes; As regras de firewalls s˜ao distintas; Sem “recursos” para separar os servidores? Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizada para separar os cen´arios. 59 / 135
  • 60. Parte V O que muda com DNSSEC? 60 / 135
  • 62. Vulnerabilidades do DNS - Solu¸c˜oes 62 / 135
  • 63. O que ´e DNSSEC? 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) O que garante? Origem (Autenticidade) Integridade A n˜ao existˆencia de um nome ou tipo O que N˜AO garante? Confidencialidade Prote¸c˜ao contra ataques de nega¸c˜ao de servi¸co (DOS) 63 / 135
  • 64. O que ´e DNSSEC? DNSSEC utiliza o conceito de chaves assim´etricas − chave p´ublica e chave privada 64 / 135
  • 65. O que ´e DNSSEC? DNSSEC utiliza o conceito de chaves assim´etricas − chave p´ublica e chave privada 65 / 135
  • 66. O que ´e DNSSEC? O resolver recursivo j´a possui a chave p´ublica da zona “.br” ancorada. 66 / 135
  • 67. O que ´e DNSSEC? Nesta simula¸c˜ao de resolu¸c˜ao supomos que a raiz n˜ao est´a assinada. 67 / 135
  • 68. O que ´e DNSSEC? Retorna sem resposta, mas com referˆencia para os Records: NS do “.br”. 68 / 135
  • 69. O que ´e DNSSEC? O servidor recursivo requisita a DNSKEY ao verificar que o nome da zona ´e igual ao nome da zona que consta em sua trusted-key. 69 / 135
  • 70. O que ´e DNSSEC? O servidor DNS responde enviando DNSKEY e o RRSIG 70 / 135
  • 71. O que ´e DNSSEC? Compara a trusted-key com a DNSKEY, caso for v´alida continua com as requisi¸c˜oes 71 / 135
  • 72. O que ´e DNSSEC? 72 / 135
  • 73. O que ´e DNSSEC? Retorna sem resposta, mas com referˆencia para os Records: - NS do “foo.eng.br” e com autoridade sobre os Records: - DS do “foo.eng.br” - RRSIG do Record DS 73 / 135
  • 74. O que ´e DNSSEC? O servidor DNS recursivo utiliza a DNSKEY para checar a assinatura (RRSIG) do Record DS 74 / 135
  • 75. O que ´e DNSSEC? 75 / 135
  • 76. O que ´e DNSSEC? 76 / 135
  • 77. O que ´e DNSSEC? O servidor DNS recursivo verifica atrav´es do DS e da DNSKEY, se este servidor DNS ´e v´alido. 77 / 135
  • 78. O que ´e DNSSEC? Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR 78 / 135
  • 79. O que ´e DNSSEC? Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? 200.160.10.251 Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR Retorna o Record A e sua assinatura RRSIG. 79 / 135
  • 80. O que ´e DNSSEC? Resolver Servidor DNS Recursivo Servidor DNS Autoritativo Servidor DNS Autoritativo Servidor DNS Autoritativo exemplo.foo.eng.br? exem plo.foo.eng.br ? Referencia servidores .br exemplo.foo.eng.br ? Referencia servidores foo.eng.br exemplo.foo.eng.br ? 200.160.10.251 Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR O servidor DNS recursivo utiliza a DNSKEY para checar a assinatura (RRSIG) do Record A 80 / 135
  • 81. O que ´e DNSSEC? 81 / 135
  • 82. O que muda com DNSSEC no DNS autoritativo? Startup Gerar a chave assim´etrica; Incluir a chave na zona; Assinar a zona; Mudar a referˆencia para o arquivo de zona nas configura¸c˜oes; Incluir o DS na interface do Registro.br. Manuten¸c˜ao Reassinar periodicamente a zona. 82 / 135
  • 83. E como fazer isso no DNS autoritativo? (BIND) Startup 1 Execute o comando (gera um arquivo .key e um .private): dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom foo.eng.br 2 Inclua no final do arquivo de zona db.foo.eng.br (incremente o SOA): °include Kfoo.eng.br+005.5423.key 3 Execute o comando (gera um arquivo .signed): dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br 4 Altere a referˆencia no arquivo de configura¸c˜ao named.conf: file ‘‘db.foo.eng.br.signed’’; 5 Incluir o DS no website do Registro.br. http://registro.br/cgi-bin/nicbr/dscheck Manuten¸c˜ao 1 Altere o arquivo de zona db.foo.eng.br incrementando o SOA; 2 Execute o comando: dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br 83 / 135
  • 84. DNSSHIM - DNS Secure Hidden Master http://registro.br/dnsshim/ Open-Source Automatiza o processo de provisionamento de zonas Suporte a DNSSEC Interface Automatiz´avel Manuten¸c˜ao de chaves/assinaturas P´ublico Alvo Provedores de hospedagem ou qualquer outra institui¸c˜ao respons´avel por administrar servidores DNS autoritativos para muitas zonas 84 / 135
  • 85. O que muda com DNSSEC no DNS recursivo? Startup Ancorar a chave p´ublica do.BR Manuten¸c˜ao Para servidores DNS com suporte a RFC 5011: Nada! Para servidores DNS sem suporte a RFC 5011: Trocar a chave ancorada todas as vezes em que ocorrer um rollover no .BR 85 / 135
  • 86. E como fazer isso no DNS recursivo? Startup BIND (named.conf): trusted-keys { br. 257 3 5 ‘‘AwEAAdDoVnG9CyHbPUL2rTnE22uN66gQCrUW5W0NTXJB NmpZXP27w7PMNpyw3XCFQWP/XsT0pdzeEGJ400kdbbPq Xr2lnmEtWMjj3Z/ejR8mZbJ/6OWJQ0k/2YOyo6Tiab1N GbGfs513y6dy1hOFpz+peZzGsCmcaCsTAv+DP/wmm+hN x94QqhVx0bmFUiCVUFKU3TS1GP415eykXvYDjNpy6AM=’’; }; Unbound (unbound.conf): trust-anchor: ‘‘br. DS 18457 5 1 1067149C134A5B5FF8FC5ED0996E4E9E50AC21B1’’ Manuten¸c˜ao 1 Obtenha a nova chave em https://registro.br/ksk/; 2 Ancore a nova chave no servidor DNS recursivo. 86 / 135
  • 88. DNS Definido nas RFCs 1034 e 1035; Servidores aceitam consultas em transporte TCP/UDP, porta 53; Payload maximo em transporte UDP de 512 bytes; Payload maximo por mensagem DNS em TCP de 64 Kbytes. 88 / 135
  • 89. DNS Quando TCP ´e utilizado Transferˆencias de zona (AXFR); Respostas com payload maior do que 512 bytes: 1 Consulta inicial via UDP; 2 Resposta maior do que 512 bytes, flag TC e marcada para indicar que sua resposta est´a truncada; 3 Cliente refaz consulta via TCP. 89 / 135
  • 90. EDNS0 - Extension Mechanisms for DNS Definido na RFC 2671; Extens˜ao do protocolo DNS original para eliminar alguns limites do protocolo; Permite: ◮ mais flags e RCODEs ao cabe alho DNS; ◮ novos tipos de labels; ◮ payloads maiores em transporte UDP (limitado a 64 Kbytes); ◮ define um novo pseudo-RR: OPT. 90 / 135
  • 91. EDNS0 - Extension Mechanisms for DNS Depende de suporte tanto no cliente como no servidor; Cliente envia consulta UDP com pseudo-RR OPT na se¸c˜ao Additional da mensagem DNS, informando qual o tamanho m´aximo de respostas UDP que pode processar; Se servidor suportar EDNS0, pode aumentar o limite para o tamanho da resposta que vai retornar ao cliente, evitando re-query via TCP; Se servidor n˜ao suportar EDNS0, envia resposta com at´e 512 bytes de payload DNS. 91 / 135
  • 92. EDNS0 - Extension Mechanisms for DNS Alguns exemplos de servidores que suportam EDNS0: Bind (desde 8.3.x - 2001); Microsoft DNS server (Windows 2003); NSD (auth only - desde 1.x - 2003); ANS/CNS. 92 / 135
  • 93. Configurando o Firewall Por que configurar corretamente? Garantir qualidade na resolu¸c˜ao DNS, ou seja, evitar atrasos e, principalmente, a impossibilidade de resolu¸c˜ao de nomes; Evitar overhead desnecess´ario em servidores DNS, tanto recursivos como autoritativos. 93 / 135
  • 94. Configurando o Firewall Autoritativos Consultas com destino `a porta 53 UDP e TCP do servidor autoritativo e respectivas respostas devem ser permitidas. Recursivos Consultas do servidor recursivo com destino `a porta 53 UDP e TCP de qualquer outro servidor e respectivas respostas devem ser permitidas; Consultas vindas de clientes autorizados com destino `a porta 53 UDP e TCP do servidor recursivo e respectivas respostas devem ser permitidas; Bloqueio `as demais consultas DNS direcionadas ao servidor recursivo. 94 / 135
  • 95. Configurando o Firewall Firewalls e DNS/UDP > 512 bytes Se seu servidor recursivo suporta EDNS0, verifique se seu firewall permite datagramas UDP/DNS com mais de 512 bytes. Um teste pode ser feito atrav´es da seguinte consulta (935 bytes de payload DNS): dig @a.dns.br br ns +dnssec +bufsize=1000 Se a resposta n˜ao for recebida, pode-se: corrigir o comportamento do firewall; diminuir o payload m´aximo enviado via record OPT na configura¸c˜ao; EDNS0 do servidor para 512 bytes. 95 / 135
  • 96. Configurando o Firewall Firewalls e DNS/UDP > 512 bytes Se seu servidor recursivo suporta EDNS0 e o firewall suporta mensagens DNS maiores que 512 bytes, verifique se seu firewall ´e capaz de fazer o correto reassembly de datagramas UDP fragmentados. Um teste pode ser feito atrav´es da seguinte consulta (2185 bytes de payload DNS): dig @a.dns.br br dnskey +dnssec +bufsize=2500 Se a resposta n˜ao for recebida, pode-se: corrigir o comportamento do firewall; diminuir o payload m´aximo enviado via record OPT na configura¸c˜ao EDNS0 do resolver. RFC EDNS0 sugere que se configure baseado em MTU de 1280 bytes. 96 / 135
  • 97. Parte VII Testes de Performance 97 / 135
  • 98. Testes de Performance - Recursivo Dependente de fatores externos Link, banda local Capacidade dos autoritativos 98 / 135
  • 99. Testes de Performance - Recursivo Responde `a consultas consultas j´a em cache consulta servidores autoritativos Aviso Exatid˜ao de uma simula¸c˜ao depende da comunica¸c˜ao com os autoritativos 99 / 135
  • 100. Testes de Performance - Recursivo Testes Propostos Consultas em cache Algumas dezenas de consultas repetidas por 5 minutos !Cache Servidor com cache limpo Consultas ´unicas durante 5 minutos Todas as consultas v´alidas 100 / 135
  • 101. Testes de Performance - Recursivo Ambiente Servidor Recursivo 2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s FreeBSD 7.2 amd64 Bind 9.6.1-P1 compilado com suporte a threads Unbound 1.4.0 Cliente 1 Xeon X5560 2.80GHz QuadCore HT DNSPERF 1.0.1.0-1 resperf - mede throughput do recursivo Dispon´ıvel em http://www.nominum.com Cliente e Servidor no mesmo seguimento de rede 101 / 135
  • 102. Testes de Performance - Recursivo °resperf -d <arquivo consultas> -s <servidor> -r 300 -d: Especifica um aquivo contendo as consultas Formato: HOST RR www.registro.br A nic.br MX ... -s: IP ou nome do servidor recursivo -r: Tempo do teste, em segundos 102 / 135
  • 103. Testes de Performance - Recursivo Bind - Consultas em Cache N.threads = 8 ( named ... -n 8 ) 103 / 135
  • 104. Testes de Performance - Recursivo Unbound - Consultas em cache N.threads = 8 ( unbound.conf ) 104 / 135
  • 105. Testes de Performance - Recursivo Bind - Consultas ´unicas - !Cache N.threads = 8 ( named ... -n 8 ) 105 / 135
  • 106. Testes de Performance - Recursivo Unbound - Consultas ´unicas - !Cache N.threads = 8 ( unbound.conf ) 106 / 135
  • 107. Testes de Performance - Autoritativo Responde apenas consultas para zonas configuradas Zonas carregadas em mem´oria 107 / 135
  • 108. Testes de Performance - Autoritativo Teste Proposto Servidor autoritativo com 1000 zonas configuradas Dois clientes consultam aleatoriamente registros existentes nessas zonas 108 / 135
  • 109. Testes de Performance - Autoritativo Ambiente Servidor Autoritativo 2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s FreBSD 7.2 amd64 Bind 9.6.1-P1 compilado com threads NSD 3.2.3 Clientes 1 Xeon X5560 2.80GHz QuadCore HT Queryperf 1.12 Dispon´ıvel no contrib do bind Servidor e clientes no mesmo seguimento de rede 109 / 135
  • 110. Testes de Performance - Autoritativo °queryperf -d <arquivo consultas> -s <servidor> -l <tempo> -d: Especifica um aquivo contendo as consultas Formato: HOST RR www.registro.br A nic.br MX ... -s: IP ou nome do servidor recursivo -l: Tempo do teste, em segundos 110 / 135
  • 111. Testes de Performance - Autoritativo Bind 12 Threads = 224000 qps 111 / 135
  • 112. Testes de Performance - Autoritativo NSD 5 servidores = 257770 qps 112 / 135
  • 113. Parte VIII Escalabilidade de Recursivos 113 / 135
  • 114. Escalabilidade de Recursivos Motiva¸c˜ao DNS recursivo inst´avel ´e foco de reclama¸c˜oes constantes 114 / 135
  • 115. Escalabilidade de Recursivos Escalabilidade e Estabilidade Suporte a alto tr´afego Suporte a muitos usu´arios F´acil upgrade caso a demanda aumente Manuten¸c˜ao sem parada do sistema Alta disponibilidade Balanceamento de carga 115 / 135
  • 117. Escalabilidade de Recursivos Flexibilidade Mais de um roteador Mais de um switch 117 / 135
  • 118. Escalabilidade de Recursivos Solu¸c˜ao Roteador + [UNIX + Quagga + BIND] Endere¸co do servi¸co roda na loopback dos servidores Anycast dentro do cluster Protocolo de roteamento dinˆamico com suporte a ECMP - OSPF 118 / 135
  • 120. Escalabilidade de Recursivos Anycast na Rede Redundancia IBGP entre os clusters 120 / 135
  • 121. Escalabilidade de Recursivos ECMP Assimetria de tr´afego O balanceamento de carga n˜ao ´e exato Incoerˆencia de cache entre os servidores O cache dos servidores n˜ao s˜ao idˆenticos, pois o tr´afego que eles recebem tamb´em n˜ao ´e N˜ao h´a problema! 121 / 135
  • 122. Escalabilidade de Recursivos Detalhes do BIND BIND rodando nas duas interfaces Queries chegam para a loopback Monitora¸c˜ao pelo endere¸co individual acl Max-cache-size recursive-clients 122 / 135
  • 123. Escalabilidade de Recursivos Controle 1 Iniciar processo do BIND 2 Subir interface loopback Quagga envia LSA para o roteador ifconfig lo1 up 3 Tirar o servidor do ar Enviar LSA removendo a rota ifconfig lo1 down 123 / 135
  • 124. Escalabilidade de Recursivos Recursos Exemplo: Rede com 1M de usu´arios simultˆaneos M´edia de 50 q/h (por usu´ario) 50 x 1M = 50M q/h 14k q/s Um ´unico servidor (com hardware robusto) ´e capaz de suportar esta carga Sugest˜ao para atingir alta disponibilidade: - cluster com 3 ou 4 servidores 124 / 135
  • 125. Escalabilidade de Recursivos Monitora¸c˜ao Processo do BIND est´a no ar? Monitorar endere¸co unicast de cada servidor Qual servidor que est´a respondendo? dig @192.168.1.1 chaos txt hostname.bind +short Watchdog Caso o BIND pare de responder ifconfig lo1 down 125 / 135
  • 127. Monitoramento Autoritativos Disponibilidade Autoridade sobre as zonas Vers˜ao da zona (serial) DNSSEC - valida¸c˜ao Recursos 127 / 135
  • 128. Monitoramento - Autoritativo SNMP - cpu, mem´oria, tr´afego Nagios Plugin check dns Alertas via email, sms Status Information:OK: Servidor a.dns.br. (200.160.0.10) respondendo com autoridade para ”com.br” Custom Plugins - Serial, DNSSEC 128 / 135
  • 129. Monitoramento - Autoritativo DSC - DNS Statistics Collector Dispon´ıvel em http://dns.measurement-factory.com/tools/dsc/ Collector - Processo que usa a libpcap para coletar pacotes DNS Armazena em XML Presenter - Recebe datasets XML dos coletores CGI plota as estat´ısticas 129 / 135
  • 130. Monitoramento - Autoritativo Diversas estat´ısticas importantes para um autoritativo By Node Qtypes Client Geography IP Version DNS Transport ... 130 / 135
  • 133. Monitoramento - Recursivo SNMP - cpu, mem´oria, tr´afego Nagios Plugin check dns DNS OK: 0.009 seconds response time. www.registro.br returns 200.160.2.3 Custom Plugins 133 / 135
  • 135. Referˆencias ◮ RFC 2317 Classless IN-ADDR.ARPA delegation ◮ DNS recursivo est´avel e escal´avel ftp://ftp.registro.br/pub/gter/gter23/05-DNSrecEstavelEscalavel.pdf ◮ Firewalls e DNS, como e porque configurar corretamente ftp://ftp.registro.br/pub/doc/dns-fw.pdf ◮ Recomenda¸c˜oes para Evitar o Abuso de Servidores DNS Recursivos Abertos http://www.cert.br/docs/whitepapers/dns-recursivo-aberto ◮ A ´ultima vers˜ao do tutorial de DNSSEC pode ser encontrada em ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf 135 / 135