DNS

74 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
74
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

DNS

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

×