Você está na página 1de 135

Tutorial DNS

3 PTT Frum o
David Robert Camargo de Campos <david@registro.br> Rafael Dantas Justo <rafael@registro.br> Wilson Rogrio Lopes <wilson@registro.br> e
Registro.br

Dezembro de 2009

1 / 135

Objetivos

Entender os conceitos de DNS Congurar servidores autoritativos Congurar servidores recursivos Entender as diferenas entre DNS e DNSSEC c Congurar corretamente o rewall Testar performance dos servidores Planejar escalabilidade de recursivos Monitorar os servidores

2 / 135

Cronograma

DNS Conceitos Arquitetura Servidores DNS Autoritativos Cenrio a Arquivos de Zona Conguraao BIND c Conguraao NSD c

DNSSEC Vulnerabilidades do DNS Conceito Conguraao do Autoritativo c Conguraao do Recursivo c Firewalls DNS EDNS0 Conguraao c Testes de Performance Recursivo Autoritativo Escalabilidade de Recursivos Monitoramento Autoritativo Recursivo

Servidores DNS Recursivos 7 Cenrio a Conguraao BIND c Servidores DNS Recursivos abertos Recursivo e Autoritativo 8 9

3 / 135

Parte I Conceitos DNS

4 / 135

DNS - Domain Name System


O Sistema de Nomes de Dom um banco de dados distribu nio e 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 atravs de um esquema cliente-servidor. e - Arquitetura hierrquica, dados dispostos em uma rvore invertida a a - Distribu ecientemente, sistema descentralizado e com cache da - O principal propsito a resoluo de nomes de dom em o e ca nio endereos IP e vice-versa c

exemplo.foo.eng.br www.cgi.br www.registro.br

200.160.10.251 200.160.4.2 2001:12:0:2::3

5 / 135

Hierarquia

DNS database

"."

UNIX lesystem

br eng foo tutorial


tutorial.foo.eng.br

usr local bin imake


/usr/local/bin/imake

6 / 135

Dom Vs Zona nio


"."
Delegao

com

br
Zona br

org

eng
Zona eng.br Zona foo.eng.br

nom silva
Zona nom.br

gov
Zona gov.br

Delegao ca
fazenda

foo

joao

tutorial
Zona tutorial.foo.eng.br Zona joao.silva.nom.br Zona fazenda.gov.br

Indica uma transferncia e de responsabilidade na administrao apartir ca daquele ponto na rvore a DNS

Domnio br

7 / 135

Resource Records
Os dados associados com os nomes de dom esto contidos em nio a Resource Records ou RRs (Registro de Recursos) So divididos em classes e tipos a Atualmente existe uma grande variedade de tipos O conjunto de resource records com o mesmo nome de dom nio, classe e tipo denominado RRset e

Alguns Tipos Comuns de Records


SOA NS A AAAA MX CNAME PTR

Indica onde comea a autoridade a zona c Indica um servidor de nomes para a zona Mapeamento de nome a endereo c Mapeamento de nome a endereo c Mapeia um nome alternativo
(IPv4) (IPv6) (servidor de email)

Indica um mail exchanger para um nome


(apelido)

Mapeamento de endereo a nome c


8 / 135

Tipos de servidores

Servidor Recursivo
Ao receber requisies de resoluo de nomes, faz requisies para os co ca co servidores autoritativos e conforme a resposta recebida dos mesmos continua a realizar requisies para outros servidores autoritativos at co e obter a resposta satisfatria o

Servidor Autoritativo
Ao receber requisies de resoluo de nome, responde um endereo caso co ca c possua, uma referncia caso conhea o caminho da resoluo ou uma e c ca negao caso no conhea ca a c

9 / 135

Exemplo de requisio de endereo ca c


Supondo que o cache est vazio ou a sem informaoes de c br, eng.br, foo.eng.br, exemplo.foo.eng.br

Resolver
Servio localizado c no cliente que tem como responsabilidade resolver as requisioes DNS c para diversos aplicativos
10 / 135

Exemplo de requisio de endereo ca c


Supondo que o cache est vazio ou a sem informaoes de c br, eng.br, foo.eng.br, exemplo.foo.eng.br

11 / 135

Exemplo de requisio de endereo ca c

12 / 135

Exemplo de requisio de endereo ca c

13 / 135

Exemplo de requisio de endereo ca c

14 / 135

Exemplo de requisio de endereo ca c

15 / 135

Exemplo de requisio de endereo ca c

Servidor DNS Autoritativo


r g.b ? s re ido .br

"."

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

BR

ENG

ex em

plo .fo o.e n

Resolver

exemplo.foo.eng.br ?

g.b

r?

Servidor DNS Autoritativo

FOO

TUTORIAL

16 / 135

Exemplo de requisio de endereo ca c

Servidor DNS Autoritativo


r g.b ? s re ido .br

"."

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

BR

ENG

ex em

20

0.1

plo .fo o.e n .10 .25

Resolver

exemplo.foo.eng.br ?

60

g.b

r?

Servidor DNS Autoritativo

FOO

TUTORIAL

17 / 135

Exemplo de requisio de endereo ca c

Servidor DNS Autoritativo


r g.b ? s re ido .br

"."

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

BR

ENG

ex em

20

0.1

plo .fo o.e n .10 .25

exemplo.foo.eng.br ?

60

g.b

200.160.10.251

r?

Servidor DNS Autoritativo

FOO

TUTORIAL

Resolver

18 / 135

Exemplo de requisio de endereo ca c

Servidor DNS Autoritativo


r g.b ? s re ido .br

"."

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

BR

ENG

ex em

20

0.1

plo .fo o.e n .10 .25

exemplo.foo.eng.br ?

60

g.b

200.160.10.251

r?

Servidor DNS Autoritativo

FOO

TUTORIAL

Resolver

19 / 135

Fluxo de dados

1 2 3 4

Resolver faz consultas no Recursivo Recursivo faz consultas no Master ou Slave Master tem a zona original (via arquivo ou Dynamic Update) Slave recebe a zona do Master (AXFR ou IXFR)
20 / 135

Parte II Congurando Servidores DNS Autoritativos

21 / 135

Cenrio a
Organizao Foo Engenharia Ltda. ca
Possui o dom foo.eng.br registrado no Registro.br; nio Possui o bloco 200.160.0/24 designado de um provedor; Possui o bloco 2001:12::/32 alocado pelo Registro.br.

Cliente A
Possui o dom a.foo.eng.br delegado pela organizao Foo; nio ca Possui o bloco 200.160.0.127/28 designado pela organizao Foo. ca

Cliente B
Possui o dom b.foo.eng.br delegado pela organizao Foo; nio ca Possui o bloco 200.160.0.191/26 designado pela organizao Foo. ca

22 / 135

Cenrio a
Organizao Foo Engenharia Ltda. foo.eng.br 2001:12::/32 200.160.0/24

200.160.0.127/28 a.foo.eng.br Cliente A

200.160.0.191/26 b.foo.eng.br Cliente B

23 / 135

Cenrio a

Alocados
200.160.0.0/25

Livres
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

Organizao Foo - Arquivo de zona ca

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. ;; Cliente B b.foo.eng.br. b.foo.eng.br.

86400 IN NS ns1.a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br.

86400 IN NS ns1.b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br.

25 / 135

Organizao Foo - Arquivo de zona (continuao...) ca ca

db.foo.eng.br
;; Traduo nomes IPs (GLUEs) ca 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

Organizao Foo - Arquivo de zona reverso IPv4 ca


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. 128.0.160.200.in-addr.arpa. 129.0.160.200.in-addr.arpa. ... 142.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br. 172800 IN NS ns2.a.foo.eng.br. 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

Organizao Foo - Arquivo de zona reverso IPv4 ca

db.0.160.200.in-addr.arpa (continuao...) ca
;; 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. 192.0.160.200.in-addr.arpa. 193.0.160.200.in-addr.arpa. ... 254.0.160.200.in-addr.arpa. ;; Endereos reversos c 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. 172800 IN NS ns1.b.foo.eng.br. 172800 IN NS ns2.b.foo.eng.br. 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.

28 / 135

Organizao Foo - Arquivo de zona reverso IPv4 ca

Mas por que necessrio o CNAME? e a


Porque a RFC 2317 recomenda; Esta soluo no exige alteraes nos softwares dos servidores DNS; ca a co Alterao de hosts no reverso dos clientes no implicam em alteraes ca a co na zona reverso da organizao Foo. ca

29 / 135

Organizao Foo - Arquivo de zona reverso IPv6 ca


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 ;; 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. hostmaster.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.

Diculdade
A inviabilidade de listar todos os reversos dos hosts de um bloco IPv6 gerou diversas discusses. O draft draft-howard-isp-ip6rdns-01 aborda este o tema.
30 / 135

Publicao de Reverso ca

Informao ca
Para as delegaes informadas diretamente na interface do Registro.br co (/24 ou maior) as publicaes das alteraes ocorrem a cada 4 horas com co co 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. ;; Traduo nomes IPs (GLUEs) ca 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 ;; Servidores DNS que respondem por esta zona reverso 127/28.0.160.200.in-addr.arpa. 127/28.0.160.200.in-addr.arpa. ;; Endereos reversos c 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. 172800 IN NS ns1.a.foo.eng.br. 172800 IN NS ns2.a.foo.eng.br. hostmaster.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. ;; Traduo nomes IPs (GLUEs) ca 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 ;; Servidores DNS que respondem por esta zona reverso 191/26.0.160.200.in-addr.arpa. 191/26.0.160.200.in-addr.arpa. ;; Endereos reversos c 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. 172800 IN NS ns1.b.foo.eng.br. 172800 IN NS ns2.b.foo.eng.br. hostmaster.b.foo.eng.br. (

35 / 135

Organizao Foo - Arquivo de congurao (BIND) ca ca


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

Organizao Foo - Arquivo de congurao (BIND) ca ca

named.conf no master (200.160.0.1) (continuao...) ca


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

Organizao Foo - Arquivo de congurao (BIND) ca ca

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

Organizao Foo - Arquivo de congurao (BIND) ca ca

named.conf no slave (200.160.0.2) (continuao...) ca


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 congurao (BIND) ca


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 congurao (BIND) ca


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 congurao (BIND) ca


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 congurao (BIND) ca


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

Organizao Foo - Arquivo de congurao (NSD) ca ca

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

Organizao Foo - Arquivo de congurao (NSD) ca ca


nsd.conf no master (200.160.0.1) (continuao...) ca
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

Observao ca
O NSD quando utilizado como master no envia IXFR para os slaves. Mas a caso o NSD seja utilizado como slave, ele entende requisies IXFR. co

45 / 135

Organizao Foo - Arquivo de congurao (NSD) ca ca


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 congurao (NSD) ca


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 congurao (NSD) ca

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 congurao (NSD) ca


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 congurao (NSD) ca

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 Congurando Servidores DNS Recursivos

51 / 135

Cenrio a

A organizao Foo deseja disponibilizar um servidor DNS recursivo para ca 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:12::6. a

52 / 135

Organizao Foo (BIND) ca


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
No utilizem a opo query-source. Ao xar uma porta de origem o a ca servidor DNS ca muito mais vulnervel a ataques de poluio de cache. a ca Principalmente aos ataques descritos por Dan Kaminsky.

53 / 135

Organizao Foo (BIND) ca


named.conf (continuao...) ca
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

Organizao Foo (Unbound) ca

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 no congura o servidor DNS recursivo para responder a apenas para os clientes de sua rede.

Efeito
Aceitam consultas DNS vindas de qualquer computador da Internet. Possibilita ataques de amplicao de respostas DNS e uso de banda por ca terceiros.

Soluo ca
Congurao correta do rewall. ca BIND: 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

acl clientes { 127.0.0.0/8; 200.160.0.0/24; }; allow-query { clientes; }; allow-query-cache { clientes; }; allow-recursion { clientes; };

56 / 135

Cuidado com Recursivos Abertos!

57 / 135

Parte IV Importncia da Separao de Autoritativo e Recursivo a ca

58 / 135

Por que separar?


Motivo
Possibilita ataques ao servidor DNS recursivo; Aumenta a complexidade na administrao do servidor. ca

Explicando...
Recursivo e autoritativo possui conguraes de acesso diferentes; co As regras de rewalls so distintas; a

Sem recursos para separar os servidores?


Para servidores DNS utilizando BIND a sintaxe view pode ser utilizada para separar os cenrios. a

59 / 135

Parte V O que muda com DNSSEC?

60 / 135

Vulnerabilidades do DNS

61 / 135

Vulnerabilidades do DNS - Solues co

62 / 135

O que DNSSEC? e
Extenso da tecnologia DNS a (o que existia continua a funcionar) Possibilita maior segurana para o usurio na Internet c a (corrige falhas do DNS)

O que garante?
Origem (Autenticidade) Integridade A no existncia de um nome ou tipo a e

O que NAO garante?


Condencialidade Proteo contra ataques de negao de servio (DOS) ca ca c
63 / 135

O que DNSSEC? e

DNSSEC utiliza o conceito de chaves assimtricas e


chave pblica e chave privada u
64 / 135

O que DNSSEC? e

DNSSEC utiliza o conceito de chaves assimtricas e


chave pblica e chave privada u
65 / 135

O que DNSSEC? e
O resolver recursivo j a possui a chave pblica u da zona .br ancorada.

66 / 135

O que DNSSEC? e
Nesta simulao de ca resoluo supomos que ca a raiz no est a a assinada.

67 / 135

O que DNSSEC? e
Retorna sem resposta, mas com referncia e para os Records: NS do .br.

68 / 135

O que DNSSEC? e
O servidor recursivo requisita a DNSKEY ao vericar que o nome da zona igual ao e nome da zona que consta em sua trusted-key.

69 / 135

O que DNSSEC? e
O servidor DNS responde enviando DNSKEY e o RRSIG

70 / 135

O que DNSSEC? e
Compara a trusted-key com a DNSKEY, caso for vlida continua a com as requisioes c

71 / 135

O que DNSSEC? e

72 / 135

O que DNSSEC? e
Retorna sem resposta, mas com referncia e 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? e
O servidor DNS recursivo utiliza a DNSKEY para checar a assinatura (RRSIG) do Record DS

74 / 135

O que DNSSEC? e

75 / 135

O que DNSSEC? e

76 / 135

O que DNSSEC? e
O servidor DNS recursivo verica atravs do DS e da e DNSKEY, se este servidor DNS vlido. e a

77 / 135

O que DNSSEC? e

Servidor DNS Autoritativo


g.b r? s re ido .br

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

ex em

plo .fo o.e n

Resolver

exemplo.foo.eng.br ?

g.b

r?

Servidor DNS Autoritativo


Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR

78 / 135

O que DNSSEC? e
Retorna o Record A e sua assinatura RRSIG.
Servidor DNS Autoritativo
g.b r? s re ido .br n o.e .fo plo n re

em ex

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

ex em

20

0.1

plo .fo o.e n .10 .25

Resolver

exemplo.foo.eng.br ?

60

g.b

r?

Servidor DNS Autoritativo


Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR

79 / 135

O que DNSSEC? e
O servidor DNS recursivo utiliza a DNSKEY para checar a assinatura (RRSIG) do Record A

Servidor DNS Autoritativo


g.b r? s re ido .br

em ex

n o.e .fo plo n re

se cia

rv

fe Re

Servidor DNS Recursivo

exemplo.foo.eng.br ? Referencia servidores foo.eng.br

Servidor DNS Autoritativo

ex em 20

0.1

plo .fo o.e n .10 .25 1

Resolver

exemplo.foo.eng.br ?

60

g.b

r?

Servidor DNS Autoritativo


Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR

80 / 135

O que DNSSEC? e

81 / 135

O que muda com DNSSEC no DNS autoritativo?

Startup
Gerar a chave assimtrica; e Incluir a chave na zona; Assinar a zona; Mudar a referncia para o arquivo de zona nas conguraes; e co Incluir o DS na interface do Registro.br.

Manuteno ca
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

Inclua no nal do arquivo de zona db.foo.eng.br (incremente o SOA):


include Kfoo.eng.br+005.5423.key

Execute o comando (gera um arquivo .signed):


dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br

Altere a referncia no arquivo de congurao named.conf: e ca


file db.foo.eng.br.signed;

Incluir o DS no website do Registro.br.


http://registro.br/cgi-bin/nicbr/dscheck

Manuteno ca
1 2

Altere o arquivo de zona db.foo.eng.br incrementando o SOA; 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 Automatizvel a Manuteno de chaves/assinaturas ca

Pblico Alvo u
Provedores de hospedagem ou qualquer outra instituio responsvel por ca a administrar servidores DNS autoritativos para muitas zonas

84 / 135

O que muda com DNSSEC no DNS recursivo?

Startup
Ancorar a chave pblica do.BR u

Manuteno ca
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

Manuteno ca
1 2

Obtenha a nova chave em https://registro.br/ksk/; Ancore a nova chave no servidor DNS recursivo.

86 / 135

Parte VI Firewalls

87 / 135

DNS

Denido 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 e


Transferncias de zona (AXFR); e Respostas com payload maior do que 512 bytes:
1 2

Consulta inicial via UDP; Resposta maior do que 512 bytes, ag TC e marcada para indicar que sua resposta est truncada; a Cliente refaz consulta via TCP.

89 / 135

EDNS0 - Extension Mechanisms for DNS

Denido na RFC 2671; Extenso do protocolo DNS original para eliminar alguns limites do a protocolo; Permite:

mais ags e RCODEs ao cabe alho DNS; novos tipos de labels; payloads maiores em transporte UDP (limitado a 64 Kbytes); dene 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 seo Additional ca da mensagem DNS, informando qual o tamanho mximo de respostas a 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 no suportar EDNS0, envia resposta com at 512 bytes de a e 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

Congurando o Firewall

Por que congurar corretamente?


Garantir qualidade na resoluo DNS, ou seja, evitar atrasos e, ca principalmente, a impossibilidade de resoluo de nomes; ca Evitar overhead desnecessrio em servidores DNS, tanto recursivos a como autoritativos.

93 / 135

Congurando o Firewall
Autoritativos
Consultas com destino ` porta 53 UDP e TCP do servidor autoritativo e a respectivas respostas devem ser permitidas.

Recursivos
Consultas do servidor recursivo com destino ` porta 53 UDP e TCP de a qualquer outro servidor e respectivas respostas devem ser permitidas; Consultas vindas de clientes autorizados com destino ` porta 53 UDP a e TCP do servidor recursivo e respectivas respostas devem ser permitidas; Bloqueio `s demais consultas DNS direcionadas ao servidor recursivo. a

94 / 135

Congurando o Firewall
Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0, verique se seu rewall permite datagramas UDP/DNS com mais de 512 bytes. Um teste pode ser feito atravs da seguinte consulta (935 bytes de payload DNS): e
dig @a.dns.br br ns +dnssec +bufsize=1000

Se a resposta no for recebida, pode-se: a corrigir o comportamento do rewall; diminuir o payload mximo enviado via record OPT na congurao; a ca EDNS0 do servidor para 512 bytes.

95 / 135

Congurando o Firewall
Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0 e o rewall suporta mensagens DNS maiores que 512 bytes, verique se seu rewall capaz de fazer o e correto reassembly de datagramas UDP fragmentados. Um teste pode ser feito atravs da seguinte consulta (2185 bytes de payload DNS): e
dig @a.dns.br br dnskey +dnssec +bufsize=2500

Se a resposta no for recebida, pode-se: a corrigir o comportamento do rewall; diminuir o payload mximo enviado via record OPT na congurao a ca EDNS0 do resolver. RFC EDNS0 sugere que se congure 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 a
consultas j em cache a consulta servidores autoritativos

Aviso
Exatido de uma simulao depende da comunicao com os autoritativos a ca ca

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 vlidas a

100 / 135

Testes de Performance - Recursivo


Ambiente
Servidor Recursivo 2 Xeon X5570 2.93GHz QuadCore HT - 16 CPUs 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 em http://www.nominum.com vel 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 ... IP ou nome do servidor recursivo Tempo do teste, em segundos

-s: -r:

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 u
N.threads = 8 ( named ... -n 8 )

105 / 135

Testes de Performance - Recursivo


Unbound - Consultas nicas - !Cache u
N.threads = 8 ( unbound.conf )

106 / 135

Testes de Performance - Autoritativo

Responde apenas consultas para zonas conguradas Zonas carregadas em memria o

107 / 135

Testes de Performance - Autoritativo

Teste Proposto
Servidor autoritativo com 1000 zonas conguradas 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 CPUs 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 no contrib do bind vel 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 ... IP ou nome do servidor recursivo Tempo do teste, em segundos

-s: -l:

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

Motivao ca
DNS recursivo instvel foco de reclamaes constantes a e co

114 / 135

Escalabilidade de Recursivos

Escalabilidade e Estabilidade
Suporte a alto trfego a Suporte a muitos usurios a Fcil upgrade caso a demanda aumente a Manuteno sem parada do sistema ca 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

Soluo ca
Roteador + [UNIX + Quagga + BIND] Endereo do servio roda na loopback dos servidores c c Anycast dentro do cluster Protocolo de roteamento dinmico com suporte a ECMP - OSPF a

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 trfego a O balanceamento de carga no exato a e Incoerncia de cache entre os servidores e O cache dos servidores no so idnticos, pois o trfego que eles a a e a recebem tambm no e a e No h problema! a a

121 / 135

Escalabilidade de Recursivos

Detalhes do BIND
BIND rodando nas duas interfaces Queries chegam para a loopback Monitorao pelo endereo individual ca c acl Max-cache-size recursive-clients

122 / 135

Escalabilidade de Recursivos

Controle
1 2

Iniciar processo do BIND Subir interface loopback Quagga envia LSA para o roteador ifconfig lo1 up Tirar o servidor do ar Enviar LSA removendo a rota ifconfig lo1 down

123 / 135

Escalabilidade de Recursivos

Recursos
Exemplo:
Rede com 1M de usurios simultneos a a Mdia de 50 q/h (por usurio) e a

50 x 1M = 50M q/h

14k q/s

Um nico servidor (com hardware robusto) capaz de suportar esta carga u e Sugesto para atingir alta disponibilidade: a - cluster com 3 ou 4 servidores

124 / 135

Escalabilidade de Recursivos

Monitorao ca
Processo do BIND est no ar? a Monitorar endereo unicast de cada servidor c Qual servidor que est respondendo? a 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 Verso da zona (serial) a DNSSEC - validao ca Recursos

127 / 135

Monitoramento - Autoritativo

SNMP - cpu, memria, trfego o a 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 em http://dns.measurement-factory.com/tools/dsc/ vel 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, memria, trfego o a 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

Referncias e

RFC 2317 Classless IN-ADDR.ARPA delegation DNS recursivo estvel e escalvel a a ftp://ftp.registro.br/pub/gter/gter23/05-DNSrecEstavelEscalavel.pdf Firewalls e DNS, como e porque congurar corretamente ftp://ftp.registro.br/pub/doc/dns-fw.pdf Recomendaoes para Evitar o Abuso de Servidores DNS Recursivos Abertos c http://www.cert.br/docs/whitepapers/dns-recursivo-aberto A ultima verso do tutorial de DNSSEC pode ser encontrada em a ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf

135 / 135