+ All Categories
Home > Documents > Tutorial DNS 3° PTT Fórum

Tutorial DNS 3° PTT Fórum

Date post: 07-Jan-2017
Category:
Upload: trinhngoc
View: 221 times
Download: 2 times
Share this document with a friend
135
Tutorial DNS 3 PTTF´orum David Robert Camargo de Campos <[email protected]> Rafael Dantas Justo <[email protected]> Wilson Rog´ erio Lopes <[email protected]> Registro.br Dezembro de 2009 1 / 135
Transcript
Page 1: Tutorial DNS 3° PTT Fórum

Tutorial DNS

3° PTT Forum

David Robert Camargo de Campos <[email protected]>

Rafael Dantas Justo <[email protected]>

Wilson Rogerio Lopes <[email protected]>

Registro.br

Dezembro de 2009

1 / 135

Page 2: Tutorial DNS 3° PTT Fórum

Objetivos

Entender os conceitos de DNS

Configurar servidores autoritativos

Configurar servidores recursivos

Entender as diferencas entre DNS e DNSSEC

Configurar corretamente o firewall

Testar performance dos servidores

Planejar escalabilidade de recursivos

Monitorar os servidores

2 / 135

Page 3: Tutorial DNS 3° PTT Fórum

Cronograma

1 DNSConceitosArquitetura

2 Servidores DNS AutoritativosCenarioArquivos de ZonaConfiguracao BINDConfiguracao NSD

3 Servidores DNS RecursivosCenarioConfiguracao BINDServidores DNS Recursivos abertos

4 Recursivo e Autoritativo

5 DNSSECVulnerabilidades do DNSConceitoConfiguracao do AutoritativoConfiguracao do Recursivo

6 FirewallsDNSEDNS0Configuracao

7 Testes de PerformanceRecursivoAutoritativo

8 Escalabilidade de Recursivos

9 MonitoramentoAutoritativoRecursivo

3 / 135

Page 4: Tutorial DNS 3° PTT Fórum

Parte I

Conceitos DNS

4 / 135

Page 5: Tutorial DNS 3° PTT Fórum

DNS - Domain Name System

O Sistema de Nomes de Domınio e um banco de dados distribuıdo. Issopermite um controle local dos segmentos do banco de dados global,embora os dados em cada segmento estejam disponıveis em toda a redeatraves de um esquema cliente-servidor.

- Arquitetura hierarquica, dados dispostos em uma arvore invertida

- Distribuıda eficientemente, sistema descentralizado e com cache

- O principal proposito e a resolucao de nomes de domınio emenderecos IP e vice-versa

exemplo.foo.eng.br ←→ 200.160.10.251www.cgi.br ←→ 200.160.4.2

www.registro.br ←→ 2001:12ff:0:2::3

5 / 135

Page 6: Tutorial DNS 3° PTT Fórum

Hierarquia

"."

br

eng

foo

tutorial

DNS

database

tutorial.foo.eng.br

/

usr

local

bin

imake

UNIX

filesystem

/usr/local/bin/imake

6 / 135

Page 7: Tutorial DNS 3° PTT Fórum

Domınio Vs Zona

Zona gov.brZona 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

Delegacao

Indica uma transferencia

de responsabilidade na

administracao apartir

daquele ponto na arvore

DNS

7 / 135

Page 8: Tutorial DNS 3° PTT Fórum

Resource RecordsOs dados associados com os nomes de domınio estao contidos emResource Records ou RRs (Registro de Recursos)

Sao divididos em classes e tiposAtualmente existe uma grande variedade de tiposO 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 comeca a autoridade a zona

NS Indica um servidor de nomes para a zona

A Mapeamento de nome a endereco (IPv4)

AAAA Mapeamento de nome a endereco (IPv6)

MX Indica um mail exchanger para um nome (servidor de email)

CNAME Mapeia um nome alternativo (apelido)

PTR Mapeamento de endereco a nome8 / 135

Page 9: Tutorial DNS 3° PTT Fórum

Tipos de servidores

Servidor Recursivo

Ao receber requisicoes de resolucao de nomes, faz requisicoes para osservidores autoritativos e conforme a resposta recebida dos mesmoscontinua a realizar requisicoes para outros servidores autoritativos ateobter a resposta satisfatoria

Servidor Autoritativo

Ao receber requisicoes de resolucao de nome, responde um endereco casopossua, uma referencia caso conheca o caminho da resolucao ou umanegacao caso nao conheca

9 / 135

Page 10: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Supondo que o

cache esta vazio ou

sem informacoes de

br, eng.br,

foo.eng.br,

exemplo.foo.eng.br

ResolverServico localizado

no cliente que tem

como

responsabilidade

resolver as

requisicoes DNS

para diversos

aplicativos10 / 135

Page 11: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Supondo que o

cache esta vazio ou

sem informacoes de

br, eng.br,

foo.eng.br,

exemplo.foo.eng.br

11 / 135

Page 12: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

12 / 135

Page 13: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

13 / 135

Page 14: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

14 / 135

Page 15: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

15 / 135

Page 16: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .br

exemplo.foo.eng.br ?

Referencia servidores foo.eng.br

exemplo.foo.eng.br ?

"."

BR

ENG

FOO

TUTORIAL

16 / 135

Page 17: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .br

exemplo.foo.eng.br ?

Referencia servidores foo.eng.br

exemplo.foo.eng.br ?

200.160.10.251

"."

BR

ENG

FOO

TUTORIAL

17 / 135

Page 18: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

20

0.1

60

.10

.25

1

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .br

exemplo.foo.eng.br ?

Referencia servidores foo.eng.br

exemplo.foo.eng.br ?

200.160.10.251

"."

BR

ENG

FOO

TUTORIAL

18 / 135

Page 19: Tutorial DNS 3° PTT Fórum

Exemplo de requisicao de endereco

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

20

0.1

60

.10

.25

1

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .br

exemplo.foo.eng.br ?

Referencia servidores foo.eng.br

exemplo.foo.eng.br ?

200.160.10.251

"."

BR

ENG

FOO

TUTORIAL

19 / 135

Page 20: Tutorial DNS 3° PTT Fórum

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

Page 21: Tutorial DNS 3° PTT Fórum

Parte II

Configurando Servidores DNS Autoritativos

21 / 135

Page 22: Tutorial DNS 3° PTT Fórum

Cenario

Organizacao 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 organizacao Foo;

Possui o bloco 200.160.0.127/28 designado pela organizacao Foo.

Cliente B

Possui o domınio b.foo.eng.br delegado pela organizacao Foo;

Possui o bloco 200.160.0.191/26 designado pela organizacao Foo.

22 / 135

Page 23: Tutorial DNS 3° PTT Fórum

Cenario

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

Page 24: Tutorial DNS 3° PTT Fórum

Cenario

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

Page 25: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona

db.foo.eng.brfoo.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 zonafoo.eng.br. 86400 IN NS ns1.foo.eng.br.

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

;; Cliente Aa.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br.

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

;; Cliente Bb.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

Page 26: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona (continuacao...)

db.foo.eng.br;; Traducao 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 serverwww.foo.eng.br. 86400 IN A 200.160.0.3

www.foo.eng.br. 86400 IN AAAA 2001:12ff::3

26 / 135

Page 27: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona reverso IPv4

db.0.160.200.in-addr.arpa0.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

Page 28: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona reverso IPv4

db.0.160.200.in-addr.arpa (continuacao...);; 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.

;; Enderecos 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

Page 29: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona reverso IPv4

Mas por que e necessario o CNAME?

Porque a RFC 2317 recomenda;

Esta solucao nao exige alteracoes nos softwares dos servidores DNS;

Alteracao de hosts no reverso dos clientes nao implicam em alteracoesna zona reverso da organizacao Foo.

29 / 135

Page 30: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de zona reverso IPv6

db.f.f.2.1.1.0.0.2.ip6.arpaf.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 zonaf.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 IPv6gerou diversas discussoes. O draft draft-howard-isp-ip6rdns-01 aborda estetema.

30 / 135

Page 31: Tutorial DNS 3° PTT Fórum

Publicacao de Reverso

Informacao

Para as delegacoes informadas diretamente na interface do Registro.br(/24 ou maior) as publicacoes das alteracoes ocorrem a cada 4 horas comınicio as 2hs.

31 / 135

Page 32: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de zona

db.a.foo.eng.bra.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 zonaa.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br.

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

;; Traducao 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 serverwww.a.foo.eng.br. 86400 IN A 200.160.0.142

32 / 135

Page 33: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de zona reverso

db.127.0.160.200.in-addr.arpa127/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.

;; Enderecos 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

Page 34: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de zona

db.b.foo.eng.brb.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 zonab.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br.

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

;; Traducao 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 serverwww.b.foo.eng.br. 86400 IN A 200.160.0.254

34 / 135

Page 35: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de zona reverso

db.191.0.160.200.in-addr.arpa191/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.

;; Enderecos 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

Page 36: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (BIND)

Gerando chave TSIGdnssec-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

Page 37: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (BIND)

named.conf no master (200.160.0.1) (continuacao...)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

Page 38: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (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

Page 39: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (BIND)

named.conf no slave (200.160.0.2) (continuacao...)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

Page 40: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de configuracao (BIND)

Gerando chave TSIGdnssec-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

Page 41: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de configuracao (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

Page 42: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de configuracao (BIND)

Gerando chave TSIGdnssec-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

Page 43: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de configuracao (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

Page 44: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (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

Page 45: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (NSD)

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

Observacao

O NSD quando utilizado como master nao envia IXFR para os slaves. Mascaso o NSD seja utilizado como slave, ele entende requisicoes IXFR.

45 / 135

Page 46: Tutorial DNS 3° PTT Fórum

Organizacao Foo - Arquivo de configuracao (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

Page 47: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de configuracao (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

Page 48: Tutorial DNS 3° PTT Fórum

Cliente A - Arquivo de configuracao (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

Page 49: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de configuracao (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

Page 50: Tutorial DNS 3° PTT Fórum

Cliente B - Arquivo de configuracao (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

Page 51: Tutorial DNS 3° PTT Fórum

Parte III

Configurando Servidores DNS Recursivos

51 / 135

Page 52: Tutorial DNS 3° PTT Fórum

Cenario

A organizacao Foo deseja disponibilizar um servidor DNS recursivo parasua infra-estrutura local e para todos os seus clientes. Este servidor DNSrecursivo tera o IPv4 200.160.0.6 e o IPv6 2001:12ff::6.

52 / 135

Page 53: Tutorial DNS 3° PTT Fórum

Organizacao Foo (BIND)

named.confacl 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

Nao utilizem a opcao “query-source”. Ao fixar uma porta de origem oservidor DNS fica muito mais vulneravel a ataques de poluicao de cache.Principalmente aos ataques descritos por Dan Kaminsky.

53 / 135

Page 54: Tutorial DNS 3° PTT Fórum

Organizacao Foo (BIND)

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

Page 55: Tutorial DNS 3° PTT Fórum

Organizacao Foo (Unbound)

unbound.confserver:

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

Page 56: Tutorial DNS 3° PTT Fórum

Cuidado com Recursivos Abertos!

Causa

O administrador nao configura o servidor DNS recursivo para responderapenas para os clientes de sua rede.

Efeito

Aceitam consultas DNS vindas de qualquer computador da Internet.Possibilita ataques de amplificacao de respostas DNS e uso de banda porterceiros.

Solucao

Configuracao 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

Page 57: Tutorial DNS 3° PTT Fórum

Cuidado com Recursivos Abertos!

57 / 135

Page 58: Tutorial DNS 3° PTT Fórum

Parte IV

Importancia da Separacao de Autoritativo e Recursivo

58 / 135

Page 59: Tutorial DNS 3° PTT Fórum

Por que separar?

Motivo

Possibilita ataques ao servidor DNS recursivo;

Aumenta a complexidade na administracao do servidor.

Explicando...

Recursivo e autoritativo possui configuracoes de acesso diferentes;

As regras de firewalls sao distintas;

Sem “recursos” para separar os servidores?

Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizadapara separar os cenarios.

59 / 135

Page 60: Tutorial DNS 3° PTT Fórum

Parte V

O que muda com DNSSEC?

60 / 135

Page 61: Tutorial DNS 3° PTT Fórum

Vulnerabilidades do DNS

61 / 135

Page 62: Tutorial DNS 3° PTT Fórum

Vulnerabilidades do DNS - Solucoes

62 / 135

Page 63: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Extensao da tecnologia DNS(o que existia continua a funcionar)

Possibilita maior seguranca para o usuario na Internet(corrige falhas do DNS)

O que garante?

Origem (Autenticidade)

Integridade

A nao existencia de um nome ou tipo

O que NAO garante?

Confidencialidade

Protecao contra ataques de negacao de servico (DOS)

63 / 135

Page 64: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

DNSSEC utiliza o conceito de chaves assimetricas− chave publica e chave privada

64 / 135

Page 65: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

DNSSEC utiliza o conceito de chaves assimetricas− chave publica e chave privada

65 / 135

Page 66: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

O resolver recursivo japossui a chave publicada zona “.br”ancorada.

66 / 135

Page 67: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Nesta simulacao deresolucao supomos quea raiz nao estaassinada.

67 / 135

Page 68: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Retorna sem resposta,mas com referenciapara os Records: NSdo “.br”.

68 / 135

Page 69: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

O servidor recursivorequisita a DNSKEYao verificar que o nomeda zona e igual aonome da zona queconsta em suatrusted-key.

69 / 135

Page 70: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

O servidor DNSresponde enviandoDNSKEY e o RRSIG

70 / 135

Page 71: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Compara a trusted-keycom a DNSKEY, casofor valida continuacom as requisicoes

71 / 135

Page 72: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

72 / 135

Page 73: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Retorna sem resposta,mas com referenciapara os Records:

- NS do “foo.eng.br”

e com autoridade sobreos Records:

- DS do “foo.eng.br”

- RRSIG do Record DS

73 / 135

Page 74: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

O servidor DNSrecursivo utiliza aDNSKEY para checara assinatura (RRSIG)do Record DS

74 / 135

Page 75: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

75 / 135

Page 76: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

76 / 135

Page 77: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

O servidor DNSrecursivo verificaatraves do DS e daDNSKEY, se esteservidor DNS e valido.

77 / 135

Page 78: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .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

Page 79: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .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 esua assinatura RRSIG.

79 / 135

Page 80: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

Resolver

Servidor DNS

Recursivo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

Servidor DNS

Autoritativo

exem

plo

.foo.e

ng.b

r ?

exemplo.fo

o.eng.br ?

Refere

ncia se

rvidore

s .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 DNSrecursivo utiliza aDNSKEY para checara assinatura (RRSIG)do Record A

80 / 135

Page 81: Tutorial DNS 3° PTT Fórum

O que e DNSSEC?

81 / 135

Page 82: Tutorial DNS 3° PTT Fórum

O que muda com DNSSEC no DNS autoritativo?

Startup

Gerar a chave assimetrica;

Incluir a chave na zona;

Assinar a zona;

Mudar a referencia para o arquivo de zona nas configuracoes;

Incluir o DS na interface do Registro.br.

Manutencao

Reassinar periodicamente a zona.

82 / 135

Page 83: Tutorial DNS 3° PTT Fórum

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 referencia no arquivo de configuracao named.conf:file ‘‘db.foo.eng.br.signed’’;

5 Incluir o DS no website do Registro.br.http://registro.br/cgi-bin/nicbr/dscheck

Manutencao1 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

Page 84: Tutorial DNS 3° PTT Fórum

DNSSHIM - DNS Secure Hidden Master

http://registro.br/dnsshim/

Open-Source

Automatiza o processo de provisionamento de zonas

Suporte a DNSSEC

Interface Automatizavel

Manutencao de chaves/assinaturas

Publico Alvo

Provedores de hospedagem ou qualquer outra instituicao responsavel poradministrar servidores DNS autoritativos para muitas zonas

84 / 135

Page 85: Tutorial DNS 3° PTT Fórum

O que muda com DNSSEC no DNS recursivo?

Startup

Ancorar a chave publica do.BR

Manutencao

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 rolloverno .BR

85 / 135

Page 86: Tutorial DNS 3° PTT Fórum

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’’

Manutencao

1 Obtenha a nova chave em https://registro.br/ksk/;

2 Ancore a nova chave no servidor DNS recursivo.

86 / 135

Page 87: Tutorial DNS 3° PTT Fórum

Parte VI

Firewalls

87 / 135

Page 88: Tutorial DNS 3° PTT Fórum

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

Page 89: Tutorial DNS 3° PTT Fórum

DNS

Quando TCP e utilizado

Transferencias 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 esta truncada;3 Cliente refaz consulta via TCP.

89 / 135

Page 90: Tutorial DNS 3° PTT Fórum

EDNS0 - Extension Mechanisms for DNS

Definido na RFC 2671;

Extensao do protocolo DNS original para eliminar alguns limites doprotocolo;

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

Page 91: Tutorial DNS 3° PTT Fórum

EDNS0 - Extension Mechanisms for DNS

Depende de suporte tanto no cliente como no servidor;

Cliente envia consulta UDP com pseudo-RR OPT na secao Additionalda mensagem DNS, informando qual o tamanho maximo de respostasUDP que pode processar;

Se servidor suportar EDNS0, pode aumentar o limite para o tamanhoda resposta que vai retornar ao cliente, evitando re-query via TCP;

Se servidor nao suportar EDNS0, envia resposta com ate 512 bytes depayload DNS.

91 / 135

Page 92: Tutorial DNS 3° PTT Fórum

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

Page 93: Tutorial DNS 3° PTT Fórum

Configurando o Firewall

Por que configurar corretamente?

Garantir qualidade na resolucao DNS, ou seja, evitar atrasos e,principalmente, a impossibilidade de resolucao de nomes;

Evitar overhead desnecessario em servidores DNS, tanto recursivoscomo autoritativos.

93 / 135

Page 94: Tutorial DNS 3° PTT Fórum

Configurando o Firewall

Autoritativos

Consultas com destino a porta 53 UDP e TCP do servidor autoritativo erespectivas respostas devem ser permitidas.

Recursivos

Consultas do servidor recursivo com destino a porta 53 UDP e TCP dequalquer outro servidor e respectivas respostas devem ser permitidas;

Consultas vindas de clientes autorizados com destino a porta 53 UDPe TCP do servidor recursivo e respectivas respostas devem serpermitidas;

Bloqueio as demais consultas DNS direcionadas ao servidor recursivo.

94 / 135

Page 95: Tutorial DNS 3° PTT Fórum

Configurando o Firewall

Firewalls e DNS/UDP > 512 bytes

Se seu servidor recursivo suporta EDNS0, verifique se seu firewall permitedatagramas UDP/DNS com mais de 512 bytes. Um teste pode ser feitoatraves da seguinte consulta (935 bytes de payload DNS):

dig @a.dns.br br ns +dnssec +bufsize=1000

Se a resposta nao for recebida, pode-se:

corrigir o comportamento do firewall;

diminuir o payload maximo enviado via record OPT na configuracao;

EDNS0 do servidor para 512 bytes.

95 / 135

Page 96: Tutorial DNS 3° PTT Fórum

Configurando o Firewall

Firewalls e DNS/UDP > 512 bytes

Se seu servidor recursivo suporta EDNS0 e o firewall suporta mensagensDNS maiores que 512 bytes, verifique se seu firewall e capaz de fazer ocorreto reassembly de datagramas UDP fragmentados. Um teste pode serfeito atraves da seguinte consulta (2185 bytes de payload DNS):

dig @a.dns.br br dnskey +dnssec +bufsize=2500

Se a resposta nao for recebida, pode-se:

corrigir o comportamento do firewall;

diminuir o payload maximo enviado via record OPT na configuracaoEDNS0 do resolver. RFC EDNS0 sugere que se configure baseado emMTU de 1280 bytes.

96 / 135

Page 97: Tutorial DNS 3° PTT Fórum

Parte VII

Testes de Performance

97 / 135

Page 98: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Dependente de fatores externos

Link, banda local

Capacidade dos autoritativos

98 / 135

Page 99: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Responde a consultas

consultas ja em cache

consulta servidores autoritativos

Aviso

Exatidao de uma simulacao depende da comunicacao com os autoritativos

99 / 135

Page 100: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Testes Propostos

Consultas em cacheAlgumas dezenas de consultasrepetidas por 5 minutos

!CacheServidor com cache limpoConsultas unicas durante 5 minutosTodas as consultas validas

100 / 135

Page 101: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Ambiente

Servidor Recursivo2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’sFreeBSD 7.2 amd64Bind 9.6.1-P1 compilado com suporte a threadsUnbound 1.4.0

Cliente1 Xeon X5560 2.80GHz QuadCore HTDNSPERF 1.0.1.0-1

resperf - mede throughput do recursivoDisponıvel em http://www.nominum.com

Cliente e Servidor no mesmo seguimento de rede

101 / 135

Page 102: Tutorial DNS 3° PTT Fórum

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

Page 103: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Bind - Consultas em Cache

N.threads = 8 ( named ... -n 8 )

103 / 135

Page 104: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Unbound - Consultas em cache

N.threads = 8 ( unbound.conf )

104 / 135

Page 105: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Bind - Consultas unicas - !Cache

N.threads = 8 ( named ... -n 8 )

105 / 135

Page 106: Tutorial DNS 3° PTT Fórum

Testes de Performance - Recursivo

Unbound - Consultas unicas - !Cache

N.threads = 8 ( unbound.conf )

106 / 135

Page 107: Tutorial DNS 3° PTT Fórum

Testes de Performance - Autoritativo

Responde apenas consultas para zonas configuradas

Zonas carregadas em memoria

107 / 135

Page 108: Tutorial DNS 3° PTT Fórum

Testes de Performance - Autoritativo

Teste Proposto

Servidor autoritativo com 1000 zonas configuradas

Dois clientes consultam aleatoriamente registros existentes nessaszonas

108 / 135

Page 109: Tutorial DNS 3° PTT Fórum

Testes de Performance - Autoritativo

Ambiente

Servidor Autoritativo2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’sFreBSD 7.2 amd64Bind 9.6.1-P1 compilado com threadsNSD 3.2.3

Clientes1 Xeon X5560 2.80GHz QuadCore HTQueryperf 1.12

Disponıvel no contrib do bind

Servidor e clientes no mesmo seguimento de rede

109 / 135

Page 110: Tutorial DNS 3° PTT Fórum

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

Page 111: Tutorial DNS 3° PTT Fórum

Testes de Performance - Autoritativo

Bind

12 Threads = 224000 qps

111 / 135

Page 112: Tutorial DNS 3° PTT Fórum

Testes de Performance - Autoritativo

NSD

5 servidores = 257770 qps

112 / 135

Page 113: Tutorial DNS 3° PTT Fórum

Parte VIII

Escalabilidade de Recursivos

113 / 135

Page 114: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Motivacao

DNS recursivo instavel e foco de reclamacoes constantes

114 / 135

Page 115: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Escalabilidade e Estabilidade

Suporte a alto trafego

Suporte a muitos usuarios

Facil upgrade caso a demanda aumente

Manutencao sem parada do sistema

Alta disponibilidade

Balanceamento de carga

115 / 135

Page 116: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Cluster

116 / 135

Page 117: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Flexibilidade

Mais de um roteador

Mais de um switch

117 / 135

Page 118: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Solucao

Roteador + [UNIX + Quagga + BIND]

Endereco do servico roda na loopback dos servidores

Anycast dentro do cluster

Protocolo de roteamento dinamico com suporte a ECMP - OSPF

118 / 135

Page 119: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Topologia

119 / 135

Page 120: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Anycast na Rede

Redundancia

IBGP entre os clusters

120 / 135

Page 121: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

ECMP

Assimetria de trafego

O balanceamento de carga nao e exato

Incoerencia de cache entre os servidores

O cache dos servidores nao sao identicos, pois o trafego que elesrecebem tambem nao e

Nao ha problema!

121 / 135

Page 122: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Detalhes do BIND

BIND rodando nas duas interfaces

Queries chegam para a loopback

Monitoracao pelo endereco individual

acl

Max-cache-size

recursive-clients

122 / 135

Page 123: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Controle1 Iniciar processo do BIND

2 Subir interface loopbackQuagga envia LSA para o roteadorifconfig lo1 up

3 Tirar o servidor do arEnviar LSA removendo a rotaifconfig lo1 down

123 / 135

Page 124: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Recursos

Exemplo:Rede com 1M de usuarios simultaneos

Media de 50 q/h (por usuario)

50 x 1M = 50M q/h 14k q/sUm unico servidor (com hardware robusto) e capaz de suportar esta cargaSugestao para atingir alta disponibilidade:

- cluster com 3 ou 4 servidores

124 / 135

Page 125: Tutorial DNS 3° PTT Fórum

Escalabilidade de Recursivos

Monitoracao

Processo do BIND esta no ar?Monitorar endereco unicast de cada servidor

Qual servidor que esta respondendo?dig @192.168.1.1 chaos txt hostname.bind +short

WatchdogCaso o BIND pare de responderifconfig lo1 down

125 / 135

Page 126: Tutorial DNS 3° PTT Fórum

Parte IX

Monitoramento

126 / 135

Page 127: Tutorial DNS 3° PTT Fórum

Monitoramento

Autoritativos

Disponibilidade

Autoridade sobre as zonas

Versao da zona (serial)

DNSSEC - validacao

Recursos

127 / 135

Page 128: Tutorial DNS 3° PTT Fórum

Monitoramento - Autoritativo

SNMP - cpu, memoria, trafego

Nagios

Plugin check dnsAlertas 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

Page 129: Tutorial DNS 3° PTT Fórum

Monitoramento - Autoritativo

DSC - DNS Statistics CollectorDisponıvel em http://dns.measurement-factory.com/tools/dsc/

Collector - Processo que usa a libpcap para coletar pacotes DNSArmazena em XML

Presenter - Recebe datasets XML dos coletores CGI plota asestatısticas

129 / 135

Page 130: Tutorial DNS 3° PTT Fórum

Monitoramento - Autoritativo

Diversas estatısticas importantes para um autoritativo

By Node

Qtypes

Client Geography

IP Version

DNS Transport

...

130 / 135

Page 131: Tutorial DNS 3° PTT Fórum

Monitoramento - Autoritativo

Query Types

131 / 135

Page 132: Tutorial DNS 3° PTT Fórum

Monitoramento

Recursivos

Disponibilidade

Recursos

132 / 135

Page 133: Tutorial DNS 3° PTT Fórum

Monitoramento - Recursivo

SNMP - cpu, memoria, trafego

Nagios

Plugin check dnsDNS OK: 0.009 seconds response time. www.registro.br returns 200.160.2.3

Custom Plugins

133 / 135

Page 134: Tutorial DNS 3° PTT Fórum

Perguntas?

134 / 135

Page 135: Tutorial DNS 3° PTT Fórum

Referencias

◮ RFC 2317Classless IN-ADDR.ARPA delegation

◮ DNS recursivo estavel e escalavelftp://ftp.registro.br/pub/gter/gter23/05-DNSrecEstavelEscalavel.pdf

◮ Firewalls e DNS, como e porque configurar corretamenteftp://ftp.registro.br/pub/doc/dns-fw.pdf

◮ Recomendacoes para Evitar o Abuso de Servidores DNS Recursivos Abertoshttp://www.cert.br/docs/whitepapers/dns-recursivo-aberto

◮ A ultima versao do tutorial de DNSSEC pode ser encontrada em

ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf

135 / 135


Recommended