Tutorial DNS 3° PTT Fórum

Transcrição

Tutorial DNS 3° PTT Fórum
Tutorial DNS
3° PTT Fórum
David Robert Camargo de Campos <[email protected]>
Rafael Dantas Justo <[email protected]>
Wilson Rogério Lopes <[email protected]>
Registro.br
Dezembro de 2009
1 / 135
Objetivos
Entender os conceitos de DNS
Configurar servidores autoritativos
Configurar servidores recursivos
Entender as diferenças 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ário
Arquivos de Zona
Configuração BIND
Configuração NSD
3
4
5
DNSSEC
Vulnerabilidades do DNS
Conceito
Configuração do Autoritativo
Configuração do Recursivo
6
Firewalls
DNS
EDNS0
Configuração
Servidores DNS Recursivos
7
Cenário
Configuração BIND
Servidores DNS Recursivos abertos
Recursivo e Autoritativo
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 é 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és de um esquema cliente-servidor.
- Arquitetura hierárquica, dados dispostos em uma árvore invertida
- Distribuı́da eficientemente, sistema descentralizado e com cache
- O principal propósito é a resolução de nomes de domı́nio em
endereços IP e vice-versa
exemplo.foo.eng.br
www.cgi.br
www.registro.br
←→ 200.160.10.251
←→ 200.160.4.2
←→ 2001:12ff:0:2::3
5 / 135
Hierarquia
DNS
database
"."
br
eng
foo
tutorial
tutorial.foo.eng.br
UNIX
filesystem
/
usr
local
bin
imake
/usr/local/bin/imake
6 / 135
Domı́nio Vs Zona
"."
com
Delegação
br
org
Zona br
eng
nom
Zona eng.br
silva
Zona foo.eng.br
foo
Zona nom.br
Delegação
gov
Zona gov.br
joao
fazenda
tutorial
Zona tutorial.foo.eng.br
Zona joao.silva.nom.br
Indica uma transferência
de responsabilidade na
administração apartir
daquele ponto na árvore
DNS
Zona fazenda.gov.br
Domínio br
7 / 135
Resource Records
Os dados associados com os nomes de domı́nio estão contidos em
Resource Records ou RRs (Registro de Recursos)
São 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 é denominado RRset
Alguns Tipos Comuns de Records
SOA
NS
Indica onde começa a autoridade a zona
Indica um servidor de nomes para a zona
A
Mapeamento de nome a endereço
(IPv4)
AAAA
Mapeamento de nome a endereço
(IPv6)
MX
CNAME
PTR
Indica um mail exchanger para um nome
Mapeia um nome alternativo
(servidor de email)
(apelido)
Mapeamento de endereço a nome
8 / 135
Tipos de servidores
Servidor Recursivo
Ao receber requisições de resolução de nomes, faz requisições para os
servidores autoritativos e conforme a resposta recebida dos mesmos
continua a realizar requisições para outros servidores autoritativos até
obter a resposta satisfatória
Servidor Autoritativo
Ao receber requisições de resolução de nome, responde um endereço caso
possua, uma referência caso conheça o caminho da resolução ou uma
negação caso não conheça
9 / 135
Exemplo de requisição de endereço
Supondo que o
cache está vazio ou
sem informações de
br, eng.br,
foo.eng.br,
exemplo.foo.eng.br
Resolver
Serviço localizado
no cliente que tem
como
responsabilidade
resolver as
requisições DNS
para diversos
aplicativos
10 / 135
Exemplo de requisição de endereço
Supondo que o
cache está vazio ou
sem informações de
br, eng.br,
foo.eng.br,
exemplo.foo.eng.br
11 / 135
Exemplo de requisição de endereço
12 / 135
Exemplo de requisição de endereço
13 / 135
Exemplo de requisição de endereço
14 / 135
Exemplo de requisição de endereço
15 / 135
Exemplo de requisição de endereço
Servidor DNS
Autoritativo
em
ex
n
o.e
.fo
plo
r
g.b
"."
?
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
Servidor DNS
Autoritativo
BR
ENG
ex
em
exemplo.foo.eng.br ?
plo
.fo
o.e
n
g.b
r?
Servidor DNS
Autoritativo
FOO
TUTORIAL
Resolver
16 / 135
Exemplo de requisição de endereço
Servidor DNS
Autoritativo
em
ex
n
o.e
.fo
plo
r
g.b
"."
?
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
Servidor DNS
Autoritativo
BR
ENG
ex
em
exemplo.foo.eng.br ?
20
0.1
plo
.fo
o.e
n
60
.10
g.b
r?
.25
1
Servidor DNS
Autoritativo
FOO
TUTORIAL
Resolver
17 / 135
Exemplo de requisição de endereço
Servidor DNS
Autoritativo
em
ex
n
o.e
.fo
plo
r
g.b
"."
?
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
Servidor DNS
Autoritativo
BR
ENG
ex
em
exemplo.foo.eng.br ?
200.160.10.251
20
0.1
plo
.fo
o.e
n
60
.10
g.b
r?
.25
1
Servidor DNS
Autoritativo
FOO
TUTORIAL
Resolver
18 / 135
Exemplo de requisição de endereço
Servidor DNS
Autoritativo
em
ex
n
o.e
.fo
plo
r
g.b
"."
?
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
Servidor DNS
Autoritativo
BR
ENG
ex
em
exemplo.foo.eng.br ?
200.160.10.251
20
0.1
plo
.fo
o.e
n
60
.10
g.b
r?
.25
1
Servidor DNS
Autoritativo
FOO
TUTORIAL
Resolver
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ário
Organização 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ção Foo;
Possui o bloco 200.160.0.127/28 designado pela organização Foo.
Cliente B
Possui o domı́nio b.foo.eng.br delegado pela organização Foo;
Possui o bloco 200.160.0.191/26 designado pela organização Foo.
22 / 135
Cenário
Organização Foo Engenharia Ltda.
foo.eng.br
2001:12ff::/32
200.160.0/24
200.160.0.127/28
200.160.0.191/26
a.foo.eng.br
b.foo.eng.br
Cliente A
Cliente B
23 / 135
Cenário
Alocados
Livres
200.160.0.0/25
200.160.0.143/28
200.160.0.127/28
200.160.0.159/27
200.160.0.191/26
200.160.0/24
24 / 135
Organização Foo - Arquivo de zona
db.foo.eng.br
foo.eng.br. 86400 IN SOA
2009120200 ;
3600
;
3600
;
3600
;
900 )
;
ns1.foo.eng.br. hostmaster.foo.eng.br. (
serial
refresh
retry
expire
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.
a.foo.eng.br.
86400 IN NS ns1.a.foo.eng.br.
86400 IN NS ns2.a.foo.eng.br.
;; Cliente B
b.foo.eng.br.
b.foo.eng.br.
86400 IN NS ns1.b.foo.eng.br.
86400 IN NS ns2.b.foo.eng.br.
25 / 135
Organização Foo - Arquivo de zona (continuação...)
db.foo.eng.br
;; Tradução 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.
ns2.a.foo.eng.br.
ns1.b.foo.eng.br.
ns2.b.foo.eng.br.
;; Web server
www.foo.eng.br.
www.foo.eng.br.
86400
86400
86400
86400
IN
IN
IN
IN
A
A
A
A
200.160.0.128
200.160.0.129
200.160.0.192
200.160.0.193
86400 IN A 200.160.0.3
86400 IN AAAA 2001:12ff::3
26 / 135
Organização Foo - Arquivo de zona reverso IPv4
db.0.160.200.in-addr.arpa
0.160.200.in-addr.arpa.
2009120200 ;
3600
;
3600
;
3600
;
900 )
;
172800 IN SOA ns1.foo.eng.br.
serial
refresh
retry
expire
minimum
hostmaster.foo.eng.br.
(
;; Servidores DNS que respondem por esta zona reverso
0.160.200.in-addr.arpa.
0.160.200.in-addr.arpa.
172800 IN NS ns1.foo.eng.br.
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.
127/28.0.160.200.in-addr.arpa.
172800 IN NS ns1.a.foo.eng.br.
172800 IN NS ns2.a.foo.eng.br.
128.0.160.200.in-addr.arpa.
129.0.160.200.in-addr.arpa.
...
142.0.160.200.in-addr.arpa.
172800 IN CNAME 128.127/28.0.160.200.in-addr.arpa.
172800 IN CNAME 129.127/28.0.160.200.in-addr.arpa.
172800 IN CNAME 142.127/28.0.160.200.in-addr.arpa.
27 / 135
Organização Foo - Arquivo de zona reverso IPv4
db.0.160.200.in-addr.arpa (continuação...)
;; Cliente B (200.160.0.191 → 200.160.0.255 = 200.160.0.191/26)
191/26.0.160.200.in-addr.arpa.
191/26.0.160.200.in-addr.arpa.
172800 IN NS ns1.b.foo.eng.br.
172800 IN NS ns2.b.foo.eng.br.
192.0.160.200.in-addr.arpa.
193.0.160.200.in-addr.arpa.
...
254.0.160.200.in-addr.arpa.
172800 IN CNAME 192.127/28.0.160.200.in-addr.arpa.
172800 IN CNAME 193.127/28.0.160.200.in-addr.arpa.
172800 IN CNAME 254.127/28.0.160.200.in-addr.arpa.
;; Endereços reversos
1.0.160.200.in-addr.arpa.
2.0.160.200.in-addr.arpa.
3.0.160.200.in-addr.arpa.
...
86400
86400
86400
IN PTR ns1.foo.eng.br.
IN PTR ns2.foo.eng.br.
IN PTR www.foo.eng.br.
28 / 135
Organização Foo - Arquivo de zona reverso IPv4
Mas por que é necessário o CNAME?
Porque a RFC 2317 recomenda;
Esta solução não exige alterações nos softwares dos servidores DNS;
Alteração de hosts no reverso dos clientes não implicam em alterações
na zona reverso da organização Foo.
29 / 135
Organização 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.
2009120200 ; serial
3600
; refresh
3600
; retry
3600
; expire
900 )
; minimum
hostmaster.foo.eng.br.
(
;; 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ões. O draft draft-howard-isp-ip6rdns-01 aborda este
tema.
30 / 135
Publicação de Reverso
Informação
Para as delegações informadas diretamente na interface do Registro.br
(/24 ou maior) as publicações das alterações 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
2009120200
3600
3600
3600
900 )
SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. (
; serial
; refresh
; retry
; expire
; 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ção 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.
2009120200 ; serial
3600
; refresh
3600
; retry
3600
; expire
900 )
; minimum
hostmaster.a.foo.eng.br.
(
;; Servidores DNS que respondem por esta zona reverso
127/28.0.160.200.in-addr.arpa.
127/28.0.160.200.in-addr.arpa.
172800 IN NS ns1.a.foo.eng.br.
172800 IN NS ns2.a.foo.eng.br.
;; Endereços reversos
128.127/28.0.160.200.in-addr.arpa.
129.127/28.0.160.200.in-addr.arpa.
...
142.127/28.0.160.200.in-addr.arpa.
172800 IN PTR ns1.a.foo.eng.br.
172800 IN PTR ns2.a.foo.eng.br.
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
2009120200
3600
3600
3600
900 )
SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. (
; serial
; refresh
; retry
; expire
; 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ção 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.
2009120200 ; serial
3600
; refresh
3600
; retry
3600
; expire
900 )
; minimum
hostmaster.b.foo.eng.br.
(
;; Servidores DNS que respondem por esta zona reverso
191/26.0.160.200.in-addr.arpa.
191/26.0.160.200.in-addr.arpa.
172800 IN NS ns1.b.foo.eng.br.
172800 IN NS ns2.b.foo.eng.br.
;; Endereços reversos
192.191/26.0.160.200.in-addr.arpa.
193.191/26.0.160.200.in-addr.arpa.
...
254.191/26.0.160.200.in-addr.arpa.
172800 IN PTR ns1.b.foo.eng.br.
172800 IN PTR ns2.b.foo.eng.br.
172800 IN PTR www.b.foo.eng.br.
35 / 135
Organização Foo - Arquivo de configuração (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ção Foo - Arquivo de configuração (BIND)
named.conf no master (200.160.0.1) (continuação...)
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ção Foo - Arquivo de configuração (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ção Foo - Arquivo de configuração (BIND)
named.conf no slave (200.160.0.2) (continuação...)
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ção (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ção (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ção (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ção (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ção Foo - Arquivo de configuração (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ção Foo - Arquivo de configuração (NSD)
nsd.conf no master (200.160.0.1) (continuação...)
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ção
O NSD quando utilizado como master não envia IXFR para os slaves. Mas
caso o NSD seja utilizado como slave, ele entende requisições IXFR.
45 / 135
Organização Foo - Arquivo de configuração (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ção (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ção (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ção (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ção (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ário
A organização Foo deseja disponibilizar um servidor DNS recursivo para
sua infra-estrutura local e para todos os seus clientes. Este servidor DNS
recursivo terá o IPv4 200.160.0.6 e o IPv6 2001:12ff::6.
52 / 135
Organização 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ão utilizem a opção “query-source”. Ao fixar uma porta de origem o
servidor DNS fica muito mais vulnerável a ataques de poluição de cache.
Principalmente aos ataques descritos por Dan Kaminsky.
53 / 135
Organização Foo (BIND)
named.conf (continuação...)
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ção 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ão 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ção de respostas DNS e uso de banda por
terceiros.
Solução
Configuração 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:
access-control:
access-control:
0.0.0.0/0 refuse
200.160.0.0/24 allow
127.0.0.0/8 allow
56 / 135
Cuidado com Recursivos Abertos!
57 / 135
Parte IV
Importância da Separação de Autoritativo e Recursivo
58 / 135
Por que separar?
Motivo
Possibilita ataques ao servidor DNS recursivo;
Aumenta a complexidade na administração do servidor.
Explicando...
Recursivo e autoritativo possui configurações de acesso diferentes;
As regras de firewalls são distintas;
Sem “recursos” para separar os servidores?
Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizada
para separar os cenários.
59 / 135
Parte V
O que muda com DNSSEC?
60 / 135
Vulnerabilidades do DNS
61 / 135
Vulnerabilidades do DNS - Soluções
62 / 135
O que é DNSSEC?
Extensão da tecnologia DNS
(o que existia continua a funcionar)
Possibilita maior segurança para o usuário na Internet
(corrige falhas do DNS)
O que garante?
Origem (Autenticidade)
Integridade
A não existência de um nome ou tipo
O que NÃO garante?
Confidencialidade
Proteção contra ataques de negação de serviço (DOS)
63 / 135
O que é DNSSEC?
DNSSEC utiliza o conceito de chaves assimétricas
− chave pública e chave privada
64 / 135
O que é DNSSEC?
DNSSEC utiliza o conceito de chaves assimétricas
− chave pública e chave privada
65 / 135
O que é DNSSEC?
O resolver recursivo já
possui a chave pública
da zona “.br”
ancorada.
66 / 135
O que é DNSSEC?
Nesta simulação de
resolução supomos que
a raiz não está
assinada.
67 / 135
O que é DNSSEC?
Retorna sem resposta,
mas com referência
para os Records: NS
do “.br”.
68 / 135
O que é DNSSEC?
O servidor recursivo
requisita a DNSKEY
ao verificar que o nome
da zona é igual ao
nome da zona que
consta em sua
trusted-key.
69 / 135
O que é DNSSEC?
O servidor DNS
responde enviando
DNSKEY e o RRSIG
70 / 135
O que é DNSSEC?
Compara a trusted-key
com a DNSKEY, caso
for válida continua
com as requisições
71 / 135
O que é DNSSEC?
72 / 135
O que é DNSSEC?
Retorna sem resposta,
mas com referência
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 é DNSSEC?
O servidor DNS
recursivo utiliza a
DNSKEY para checar
a assinatura (RRSIG)
do Record DS
74 / 135
O que é DNSSEC?
75 / 135
O que é DNSSEC?
76 / 135
O que é DNSSEC?
O servidor DNS
recursivo verifica
através do DS e da
DNSKEY, se este
servidor DNS é válido.
77 / 135
O que é DNSSEC?
Servidor DNS
Autoritativo
r?
em
ex
n
o.e
.fo
plo
g.b
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
ex
em
exemplo.foo.eng.br ?
plo
.fo
o.e
n
Servidor DNS
Autoritativo
g.b
r?
Servidor DNS
Autoritativo
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
Resolver
78 / 135
O que é DNSSEC?
Retorna o Record A e
sua assinatura RRSIG.
Servidor DNS
Autoritativo
r?
em
ex
n
o.e
.fo
plo
g.b
s
re
ido
.br
rv
n
re
se
cia
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
ex
em
exemplo.foo.eng.br ?
20
0.1
plo
.fo
o.e
n
60
.10
Servidor DNS
Autoritativo
g.b
r?
.25
1
Servidor DNS
Autoritativo
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
Resolver
79 / 135
O que é DNSSEC?
Servidor DNS
Autoritativo
r?
em
ex
n
o.e
.fo
plo
g.b
s
re
ido
.br
rv
n
re
se
cia
O servidor DNS
recursivo utiliza a
DNSKEY para checar
a assinatura (RRSIG)
do Record A
fe
Re
Servidor DNS
Recursivo
exemplo.foo.eng.br ?
Referencia servidores foo.eng.br
ex
em
exemplo.foo.eng.br ?
20
0.1
plo
.fo
o.e
n
60
.10
Servidor DNS
Autoritativo
g.b
r?
.25
1
Servidor DNS
Autoritativo
Autoritativo sobre o FOO.ENG.BR
e TUTORIAL.FOO.ENG.BR
Resolver
80 / 135
O que é DNSSEC?
81 / 135
O que muda com DNSSEC no DNS autoritativo?
Startup
Gerar a chave assimétrica;
Incluir a chave na zona;
Assinar a zona;
Mudar a referência para o arquivo de zona nas configurações;
Incluir o DS na interface do Registro.br.
Manutenção
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ência no arquivo de configuração 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ção
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ável
Manutenção de chaves/assinaturas
Público Alvo
Provedores de hospedagem ou qualquer outra instituição responsável por
administrar servidores DNS autoritativos para muitas zonas
84 / 135
O que muda com DNSSEC no DNS recursivo?
Startup
Ancorar a chave pública do.BR
Manutenção
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ção
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 é utilizado
Transferências de zona (AXFR);
Respostas com payload maior do que 512 bytes:
1
2
3
Consulta inicial via UDP;
Resposta maior do que 512 bytes, flag TC e marcada para indicar que
sua resposta está truncada;
Cliente refaz consulta via TCP.
89 / 135
EDNS0 - Extension Mechanisms for DNS
Definido na RFC 2671;
Extensão 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ção Additional
da mensagem DNS, informando qual o tamanho máximo 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ão suportar EDNS0, envia resposta com até 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ção DNS, ou seja, evitar atrasos e,
principalmente, a impossibilidade de resolução de nomes;
Evitar overhead desnecessário em servidores DNS, tanto recursivos
como autoritativos.
93 / 135
Configurando o Firewall
Autoritativos
Consultas com destino à porta 53 UDP e TCP do servidor autoritativo e
respectivas respostas devem ser permitidas.
Recursivos
Consultas do servidor recursivo com destino à porta 53 UDP e TCP de
qualquer outro servidor e respectivas respostas devem ser permitidas;
Consultas vindas de clientes autorizados com destino à porta 53 UDP
e TCP do servidor recursivo e respectivas respostas devem ser
permitidas;
Bloqueio às 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és da seguinte consulta (935 bytes de payload DNS):
dig @a.dns.br br ns +dnssec +bufsize=1000
Se a resposta não for recebida, pode-se:
corrigir o comportamento do firewall;
diminuir o payload máximo enviado via record OPT na configuração;
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 é capaz de fazer o
correto reassembly de datagramas UDP fragmentados. Um teste pode ser
feito através da seguinte consulta (2185 bytes de payload DNS):
dig @a.dns.br br dnskey +dnssec +bufsize=2500
Se a resposta não for recebida, pode-se:
corrigir o comportamento do firewall;
diminuir o payload máximo enviado via record OPT na configuração
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 à consultas
consultas já em cache
consulta servidores autoritativos
Aviso
Exatidão de uma simulação depende da comunicação 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 únicas durante 5 minutos
Todas as consultas válidas
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 únicas - !Cache
N.threads = 8 ( named ... -n 8 )
105 / 135
Testes de Performance - Recursivo
Unbound - Consultas únicas - !Cache
N.threads = 8 ( unbound.conf )
106 / 135
Testes de Performance - Autoritativo
Responde apenas consultas para zonas configuradas
Zonas carregadas em memória
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ção
DNS recursivo instável é foco de reclamações constantes
114 / 135
Escalabilidade de Recursivos
Escalabilidade e Estabilidade
Suporte a alto tráfego
Suporte a muitos usuários
Fácil upgrade caso a demanda aumente
Manutenção 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ção
Roteador + [UNIX + Quagga + BIND]
Endereço do serviço roda na loopback dos servidores
Anycast dentro do cluster
Protocolo de roteamento dinâmico 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áfego
O balanceamento de carga não é exato
Incoerência de cache entre os servidores
O cache dos servidores não são idênticos, pois o tráfego que eles
recebem também não é
Não há problema!
121 / 135
Escalabilidade de Recursivos
Detalhes do BIND
BIND rodando nas duas interfaces
Queries chegam para a loopback
Monitoração pelo endereço 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ários simultâneos
Média de 50 q/h (por usuário)
50 x 1M = 50M q/h
14k q/s
Um único servidor (com hardware robusto) é capaz de suportar esta carga
Sugestão para atingir alta disponibilidade:
- cluster com 3 ou 4 servidores
124 / 135
Escalabilidade de Recursivos
Monitoração
Processo do BIND está no ar?
Monitorar endereço unicast de cada servidor
Qual servidor que está 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ão da zona (serial)
DNSSEC - validação
Recursos
127 / 135
Monitoramento - Autoritativo
SNMP - cpu, memória, tráfego
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
estatı́sticas
CGI plota as
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ória, tráfego
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ências
◮
RFC 2317
Classless IN-ADDR.ARPA delegation
◮
DNS recursivo estável e escalável
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ções para Evitar o Abuso de Servidores DNS Recursivos Abertos
http://www.cert.br/docs/whitepapers/dns-recursivo-aberto
◮
A última versão do tutorial de DNSSEC pode ser encontrada em
ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf
135 / 135