SlideShare uma empresa Scribd logo
1 de 135
Baixar para ler offline
Tutorial DNS
                3 PTT F´rum
                       o

David Robert Camargo de Campos <david@registro.br>
      Rafael Dantas Justo <rafael@registro.br>
     Wilson Rog´rio Lopes <wilson@registro.br>
                e

                    Registro.br


               Dezembro de 2009




                                                     1 / 135
Objetivos



   Entender os conceitos de DNS
   Configurar servidores autoritativos
   Configurar servidores recursivos
   Entender as diferen¸as entre DNS e DNSSEC
                       c
   Configurar corretamente o firewall
   Testar performance dos servidores
   Planejar escalabilidade de recursivos
   Monitorar os servidores




                                               2 / 135
Cronograma


  1   DNS                               5    DNSSEC
       Conceitos                              Vulnerabilidades do DNS
       Arquitetura                            Conceito
                                              Configura¸ao do Autoritativo
                                                       c˜
  2   Servidores DNS Autoritativos
                                              Configura¸ao do Recursivo
                                                       c˜
        Cen´rio
            a
        Arquivos de Zona                6    Firewalls
        Configura¸ao BIND
                  c˜                           DNS
        Configura¸ao NSD
                  c˜                           EDNS0
                                               Configura¸ao
                                                       c˜
  3   Servidores DNS Recursivos
        Cen´rio
            a                            7   Testes de Performance
        Configura¸ao BIND
                  c˜                           Recursivo
        Servidores DNS Recursivos abertos      Autoritativo
  4   Recursivo e Autoritativo          8    Escalabilidade de Recursivos
                                        9    Monitoramento
                                              Autoritativo
                                              Recursivo



                                                                            3 / 135
Parte I

Conceitos DNS




                4 / 135
DNS - Domain Name System

O Sistema de Nomes de Dom´ ´ 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
atrav´s de um esquema cliente-servidor.
     e
  - Arquitetura hier´rquica, dados dispostos em uma ´rvore invertida
                    a                               a
  - Distribu´ eficientemente, sistema descentralizado e com cache
            ıda
  - O principal prop´sito ´ a resolu¸˜o de nomes de dom´ em
                    o     e         ca                 ınio
    endere¸os IP e vice-versa
          c

             exemplo.foo.eng.br    ←→ 200.160.10.251
                    www.cgi.br     ←→ 200.160.4.2
                www.registro.br    ←→ 2001:12ff:0:2::3



                                                                       5 / 135
Hierarquia



                   DNS                         UNIX
                   database              "."   filesystem         /



                                    br                 usr


                              eng                                    local


                        foo                                             bin


             tutorial                                                         imake


                 tutorial.foo.eng.br                       /usr/local/bin/imake




                                                                                      6 / 135
Dom´ Vs Zona
   ınio

                                              "."             Delegação




           com                             br                             org
                                            Zona br



                          eng          nom             gov                            Delega¸˜o
                                                                                            ca
                                        silva
                       Zona eng.br
                                         Zona nom.br
                                                       Zona gov.br                    Indica uma transferˆncia
                                                                                                          e
       Zona foo.eng.br

                                                                                      de responsabilidade na
            foo                        joao                   fazenda
                                                                                      administra¸˜o apartir
                                                                                                ca
                                                                                      daquele ponto na ´rvore
                                                                                                        a
      tutorial                                                                        DNS
   Zona tutorial.foo.eng.br          Zona joao.silva.nom.br     Zona fazenda.gov.br




                                     Domínio br




                                                                                                                 7 / 135
Resource Records
 Os dados associados com os nomes de dom´ est˜o contidos em
                                          ınio   a
 Resource Records ou RRs (Registro de Recursos)
     S˜o 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   Indica onde come¸a a autoridade a zona
                        c
   NS   Indica um servidor de nomes para a zona
    A   Mapeamento de nome a endere¸o
                                   c       (IPv4)

 AAAA   Mapeamento de nome a endere¸o
                                   c       (IPv6)

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

CNAME   Mapeia um nome alternativo   (apelido)

  PTR   Mapeamento de endere¸o a nome
                            c
                                                                          8 / 135
Tipos de servidores


Servidor Recursivo
Ao receber requisi¸˜es de resolu¸˜o de nomes, faz requisi¸˜es para os
                   co            ca                        co
servidores autoritativos e conforme a resposta recebida dos mesmos
continua a realizar requisi¸˜es para outros servidores autoritativos at´
                           co                                          e
obter a resposta satisfat´ria
                         o

Servidor Autoritativo
Ao receber requisi¸˜es de resolu¸˜o de nome, responde um endere¸o caso
                  co            ca                             c
possua, uma referˆncia caso conhe¸a o caminho da resolu¸˜o ou uma
                  e                c                   ca
nega¸˜o caso n˜o conhe¸a
    ca        a         c




                                                                           9 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c

                                    Supondo que o
                                    cache est´ vazio ou
                                              a
                                    sem informa¸oes de
                                                c˜
                                    br, eng.br,
                                    foo.eng.br,
                                    exemplo.foo.eng.br

                                    Resolver
                                    Servi¸o localizado
                                         c
                                    no cliente que tem
                                    como
                                    responsabilidade
                                    resolver as
                                    requisi¸oes DNS
                                           c˜
                                    para diversos
                                    aplicativos
                                                   10 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c

                                    Supondo que o
                                    cache est´ vazio ou
                                              a
                                    sem informa¸oes de
                                                c˜
                                    br, eng.br,
                                    foo.eng.br,
                                    exemplo.foo.eng.br




                                                   11 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c




                                    12 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c




                                    13 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c




                                    14 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c




                                    15 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c



                                                                                   Servidor DNS
                                                                                   Autoritativo   "."

                                                               r   ?
                                                       n   g.b
                                                   o.e
                                                .fo                          .br
                                             plo                      re
                                                                         s
                                        em                         ido
                                      ex                       rv
                                                            se
                                                    n   cia
                                             fe  re
                                          Re


                                       exemplo.foo.eng.br ?
   Servidor DNS                                                                    Servidor DNS   BR
    Recursivo                                                                      Autoritativo
                                   Referencia servidores foo.eng.br

                                                                                                          ENG
                                         ex
                                           em
                                                  plo
                                                     .fo
                                                        o.e
            exemplo.foo.eng.br ?




                                                            n      g.b
                                                                       r?




                                                                                   Servidor DNS   FOO
                                                                                   Autoritativo


                                                                                                        TUTORIAL

     Resolver




                                                                                                                   16 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c



                                                                                         Servidor DNS
                                                                                         Autoritativo   "."

                                                                   r    ?
                                                       n       g.b
                                                   o.e
                                                .fo                                .br
                                             plo                            re
                                                                               s
                                        em                               ido
                                      ex                               rv
                                                              se
                                                      n   cia
                                               fe  re
                                            Re


                                       exemplo.foo.eng.br ?
   Servidor DNS                                                                          Servidor DNS   BR
    Recursivo                                                                            Autoritativo
                                   Referencia servidores foo.eng.br

                                                                                                                ENG
                                         ex
                                           em
                                                    plo
                                                       .fo
                                                          o.e
            exemplo.foo.eng.br ?




                                       20                     n         g.b
                                            0.1
                                                  60                        r?
                                                       .10
                                                             .25
                                                                   1


                                                                                         Servidor DNS   FOO
                                                                                         Autoritativo


                                                                                                              TUTORIAL

     Resolver




                                                                                                                         17 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c



                                                                                                        Servidor DNS
                                                                                                        Autoritativo   "."

                                                                                  r    ?
                                                                      n       g.b
                                                                  o.e
                                                               .fo                                .br
                                                            plo                            re
                                                                                              s
                                                       em                               ido
                                                     ex                               rv
                                                                             se
                                                                     n   cia
                                                              fe  re
                                                           Re


                                                      exemplo.foo.eng.br ?
   Servidor DNS                                                                                         Servidor DNS   BR
    Recursivo                                                                                           Autoritativo
                                                  Referencia servidores foo.eng.br

                                                                                                                               ENG
                                                        ex
                                                          em
                                                                   plo
                                                                      .fo
                                                                         o.e
                           exemplo.foo.eng.br ?




                                                      20                     n         g.b
                                                           0.1
   200.160.10.251




                                                                 60                        r?
                                                                      .10
                                                                            .25
                                                                                  1


                                                                                                        Servidor DNS   FOO
                                                                                                        Autoritativo


                                                                                                                             TUTORIAL

                    Resolver




                                                                                                                                        18 / 135
Exemplo de requisi¸˜o de endere¸o
                  ca           c



                                                                                                        Servidor DNS
                                                                                                        Autoritativo   "."

                                                                                  r    ?
                                                                      n       g.b
                                                                  o.e
                                                               .fo                                .br
                                                            plo                            re
                                                                                              s
                                                       em                               ido
                                                     ex                               rv
                                                                             se
                                                                     n   cia
                                                              fe  re
                                                           Re


                                                      exemplo.foo.eng.br ?
   Servidor DNS                                                                                         Servidor DNS   BR
    Recursivo                                                                                           Autoritativo
                                                  Referencia servidores foo.eng.br

                                                                                                                               ENG
                                                        ex
                                                          em
                                                                   plo
                                                                      .fo
                                                                         o.e
                           exemplo.foo.eng.br ?




                                                      20                     n         g.b
                                                           0.1
   200.160.10.251




                                                                 60                        r?
                                                                      .10
                                                                            .25
                                                                                  1


                                                                                                        Servidor DNS   FOO
                                                                                                        Autoritativo


                                                                                                                             TUTORIAL

                    Resolver




                                                                                                                                        19 / 135
Fluxo de dados




 1   Resolver faz consultas no Recursivo
 2   Recursivo faz consultas no Master ou Slave
 3   Master tem a zona original (via arquivo ou Dynamic Update)
 4   Slave recebe a zona do Master (AXFR ou IXFR)

                                                                  20 / 135
Parte II

Configurando Servidores DNS Autoritativos




                                           21 / 135
Cen´rio
   a

Organiza¸˜o 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:12ff::/32 alocado pelo Registro.br.

Cliente A
    Possui o dom´ a.foo.eng.br delegado pela organiza¸˜o Foo;
                ınio                                 ca
    Possui o bloco 200.160.0.127/28 designado pela organiza¸˜o Foo.
                                                           ca

Cliente B
    Possui o dom´ b.foo.eng.br delegado pela organiza¸˜o Foo;
                ınio                                 ca
    Possui o bloco 200.160.0.191/26 designado pela organiza¸˜o Foo.
                                                           ca


                                                                      22 / 135
Cen´rio
   a

                 Organização Foo Engenharia Ltda.


                              foo.eng.br


                           2001:12ff::/32


                             200.160.0/24




          200.160.0.127/28                 200.160.0.191/26

            a.foo.eng.br                     b.foo.eng.br

              Cliente A                        Cliente B



                                                              23 / 135
Cen´rio
   a


          Alocados           Livres


      200.160.0.0/25     200.160.0.143/28


      200.160.0.127/28   200.160.0.159/27


      200.160.0.191/26


                            200.160.0/24




                                            24 / 135
Organiza¸˜o Foo - Arquivo de zona
        ca


db.foo.eng.br
foo.eng.br. 86400 IN SOA   ns1.foo.eng.br. hostmaster.foo.eng.br. (
            2009120200 ;   serial
            3600       ;   refresh
            3600       ;   retry
            3600       ;   expire
            900 )      ;   minimum

;; Servidores DNS que respondem por esta zona
foo.eng.br.                 86400 IN NS ns1.foo.eng.br.
foo.eng.br.                 86400 IN NS ns2.foo.eng.br.

;; Cliente A
a.foo.eng.br.              86400 IN NS ns1.a.foo.eng.br.
a.foo.eng.br.              86400 IN NS ns2.a.foo.eng.br.

;; Cliente B
b.foo.eng.br.              86400 IN NS ns1.b.foo.eng.br.
b.foo.eng.br.              86400 IN NS ns2.b.foo.eng.br.




                                                                      25 / 135
Organiza¸˜o Foo - Arquivo de zona (continua¸˜o...)
        ca                                 ca



db.foo.eng.br
;; Tradu¸˜o 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.        86400   IN   A   200.160.0.128
ns2.a.foo.eng.br.        86400   IN   A   200.160.0.129
ns1.b.foo.eng.br.        86400   IN   A   200.160.0.192
ns2.b.foo.eng.br.        86400   IN   A   200.160.0.193

;; Web server
www.foo.eng.br.         86400 IN A 200.160.0.3
www.foo.eng.br.         86400 IN AAAA 2001:12ff::3




                                                          26 / 135
Organiza¸˜o Foo - Arquivo de zona reverso IPv4
        ca


db.0.160.200.in-addr.arpa
0.160.200.in-addr.arpa.     172800 IN SOA ns1.foo.eng.br.   hostmaster.foo.eng.br.   (
            2009120200 ;    serial
            3600        ;   refresh
            3600        ;   retry
            3600        ;   expire
            900 )       ;   minimum

;; Servidores DNS que respondem por esta zona reverso

0.160.200.in-addr.arpa.            172800 IN NS ns1.foo.eng.br.
0.160.200.in-addr.arpa.            172800 IN NS ns2.foo.eng.br.

;; Cliente A (200.160.0.127 → 200.160.0.142 = 200.160.0.127/28)

127/28.0.160.200.in-addr.arpa.     172800 IN NS ns1.a.foo.eng.br.
127/28.0.160.200.in-addr.arpa.     172800 IN NS ns2.a.foo.eng.br.

128.0.160.200.in-addr.arpa.        172800 IN CNAME 128.127/28.0.160.200.in-addr.arpa.
129.0.160.200.in-addr.arpa.        172800 IN CNAME 129.127/28.0.160.200.in-addr.arpa.
...
142.0.160.200.in-addr.arpa.        172800 IN CNAME 142.127/28.0.160.200.in-addr.arpa.




                                                                                         27 / 135
Organiza¸˜o Foo - Arquivo de zona reverso IPv4
        ca



db.0.160.200.in-addr.arpa (continua¸˜o...)
                                   ca
;; 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¸os reversos
         c

1.0.160.200.in-addr.arpa.         86400   IN PTR ns1.foo.eng.br.
2.0.160.200.in-addr.arpa.         86400   IN PTR ns2.foo.eng.br.
3.0.160.200.in-addr.arpa.         86400   IN PTR www.foo.eng.br.
...




                                                                                       28 / 135
Organiza¸˜o Foo - Arquivo de zona reverso IPv4
        ca




Mas por que ´ necess´rio o CNAME?
            e       a
   Porque a RFC 2317 recomenda;
   Esta solu¸˜o n˜o exige altera¸˜es nos softwares dos servidores DNS;
            ca a                co
   Altera¸˜o de hosts no reverso dos clientes n˜o implicam em altera¸˜es
         ca                                    a                    co
   na zona reverso da organiza¸˜o Foo.
                               ca




                                                                    29 / 135
Organiza¸˜o 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.   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˜es. O draft draft-howard-isp-ip6rdns-01 aborda este
                       o
tema.


                                                                                      30 / 135
Publica¸˜o de Reverso
       ca




Informa¸˜o
       ca
Para as delega¸˜es informadas diretamente na interface do Registro.br
               co
(/24 ou maior) as publica¸˜es das altera¸˜es 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   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¸˜o 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.      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¸os reversos
         c

128.127/28.0.160.200.in-addr.arpa.     172800 IN PTR ns1.a.foo.eng.br.
129.127/28.0.160.200.in-addr.arpa.     172800 IN PTR ns2.a.foo.eng.br.
...
142.127/28.0.160.200.in-addr.arpa.     172800 IN PTR www.a.foo.eng.br.




                                                                                                   33 / 135
Cliente B - Arquivo de zona


db.b.foo.eng.br
b.foo.eng.br. 86400 IN   SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. (
            2009120200   ; serial
            3600         ; refresh
            3600         ; retry
            3600         ; expire
            900 )        ; minimum

;; Servidores DNS que respondem por esta zona
b.foo.eng.br.                86400 IN NS ns1.b.foo.eng.br.
b.foo.eng.br.                86400 IN NS ns2.b.foo.eng.br.

;; Tradu¸˜o 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.      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¸os reversos
         c

192.191/26.0.160.200.in-addr.arpa.     172800 IN PTR ns1.b.foo.eng.br.
193.191/26.0.160.200.in-addr.arpa.     172800 IN PTR ns2.b.foo.eng.br.
...
254.191/26.0.160.200.in-addr.arpa.     172800 IN PTR www.b.foo.eng.br.




                                                                                                   35 / 135
Organiza¸˜o Foo - Arquivo de configura¸˜o (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
Organiza¸˜o Foo - Arquivo de configura¸˜o (BIND)
        ca                           ca


named.conf no master (200.160.0.1) (continua¸˜o...)
                                            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
Organiza¸˜o Foo - Arquivo de configura¸˜o (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
Organiza¸˜o Foo - Arquivo de configura¸˜o (BIND)
        ca                           ca


named.conf no slave (200.160.0.2) (continua¸˜o...)
                                           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 configura¸˜o (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 configura¸˜o (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 configura¸˜o (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 configura¸˜o (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
Organiza¸˜o Foo - Arquivo de configura¸˜o (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
Organiza¸˜o Foo - Arquivo de configura¸˜o (NSD)
        ca                           ca

nsd.conf no master (200.160.0.1) (continua¸˜o...)
                                          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



Observa¸˜o
       ca
O NSD quando utilizado como master n˜o envia IXFR para os slaves. Mas
                                       a
caso o NSD seja utilizado como slave, ele entende requisi¸˜es IXFR.
                                                         co


                                                                 45 / 135
Organiza¸˜o Foo - Arquivo de configura¸˜o (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 configura¸˜o (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 configura¸˜o (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 configura¸˜o (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 configura¸˜o (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

Configurando Servidores DNS Recursivos




                                        51 / 135
Cen´rio
   a




A organiza¸˜o 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:12ff::6.
             a




                                                                        52 / 135
Organiza¸˜o 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
N˜o utilizem a op¸˜o “query-source”. Ao fixar uma porta de origem o
  a              ca
servidor DNS fica muito mais vulner´vel a ataques de polui¸˜o de cache.
                                   a                     ca
Principalmente aos ataques descritos por Dan Kaminsky.


                                                                    53 / 135
Organiza¸˜o Foo (BIND)
        ca


named.conf (continua¸˜o...)
                    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
Organiza¸˜o 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 n˜o configura 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 amplifica¸˜o de respostas DNS e uso de banda por
                               ca
terceiros.

Solu¸˜o
    ca
Configura¸˜o correta do firewall.
        ca

BIND:                                             NSD:
 acl clientes { 127.0.0.0/8; 200.160.0.0/24; };    access-control:   0.0.0.0/0 refuse
 allow-query { clientes; };                        access-control:   200.160.0.0/24 allow
 allow-query-cache { clientes; };                  access-control:   127.0.0.0/8 allow
 allow-recursion { clientes; };


                                                                                            56 / 135
Cuidado com Recursivos Abertos!




                                  57 / 135
Parte IV

Importˆncia da Separa¸˜o de Autoritativo e Recursivo
      a              ca




                                                   58 / 135
Por que separar?


Motivo
    Possibilita ataques ao servidor DNS recursivo;
    Aumenta a complexidade na administra¸˜o do servidor.
                                        ca

Explicando...
    Recursivo e autoritativo possui configura¸˜es de acesso diferentes;
                                            co
    As regras de firewalls s˜o distintas;
                           a

Sem “recursos” para separar os servidores?
Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizada
para separar os cen´rios.
                   a



                                                                         59 / 135
Parte V

O que muda com DNSSEC?




                         60 / 135
Vulnerabilidades do DNS




                          61 / 135
Vulnerabilidades do DNS - Solu¸˜es
                              co




                                     62 / 135
O que ´ DNSSEC?
      e

    Extens˜o da tecnologia DNS
          a
    (o que existia continua a funcionar)
    Possibilita maior seguran¸a para o usu´rio na Internet
                             c            a
    (corrige falhas do DNS)

O que garante?
    Origem (Autenticidade)
    Integridade
    A n˜o existˆncia de um nome ou tipo
       a       e

       ˜
O que NAO garante?
    Confidencialidade
    Prote¸˜o contra ataques de nega¸˜o de servi¸o (DOS)
         ca                        ca          c

                                                             63 / 135
O que ´ DNSSEC?
      e




       DNSSEC utiliza o conceito de chaves assim´tricas
                                                e
                − chave p´blica e chave privada
                         u

                                                          64 / 135
O que ´ DNSSEC?
      e




       DNSSEC utiliza o conceito de chaves assim´tricas
                                                e
                − chave p´blica e chave privada
                         u
                                                          65 / 135
O que ´ DNSSEC?
      e

                  O resolver recursivo j´
                                        a
                  possui a chave p´blica
                                   u
                  da zona “.br”
                  ancorada.




                                     66 / 135
O que ´ DNSSEC?
      e

                  Nesta simula¸˜o de
                               ca
                  resolu¸˜o supomos que
                        ca
                  a raiz n˜o est´
                          a     a
                  assinada.




                                  67 / 135
O que ´ DNSSEC?
      e

                  Retorna sem resposta,
                  mas com referˆncia
                               e
                  para os Records: NS
                  do “.br”.




                                   68 / 135
O que ´ DNSSEC?
      e

                  O servidor recursivo
                  requisita a DNSKEY
                  ao verificar 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 v´lida continua
                       a
                  com as requisi¸oes
                                 c˜




                                   71 / 135
O que ´ DNSSEC?
      e




                  72 / 135
O que ´ DNSSEC?
      e

                  Retorna sem resposta,
                  mas com referˆncia
                               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 verifica
                  atrav´s do DS e da
                        e
                  DNSKEY, se este
                  servidor DNS ´ v´lido.
                                 e a




                                    77 / 135
O que ´ DNSSEC?
      e



                                                                                      Servidor DNS
                                                                                      Autoritativo

                                                               r?
                                                        n   g.b
                                                    o.e
                                                 .fo                          .br
                                              plo                      re
                                                                          s
                                         em                         ido
                                       ex                         rv
                                                             se
                                                     n   cia
                                              fe  re
                                           Re


                                        exemplo.foo.eng.br ?
    Servidor DNS                                                                      Servidor DNS
     Recursivo                                                                        Autoritativo
                                    Referencia servidores foo.eng.br


                                          ex
                                            em
                                                   plo
                                                      .fo
                                                         o.e
             exemplo.foo.eng.br ?




                                                             n     g.b
                                                                       r?




                                                                                      Servidor DNS
                                                                                      Autoritativo


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




                                                                                                                78 / 135
O que ´ DNSSEC?
      e

                                                                                                                      Retorna o Record A e
                                                                                                                      sua assinatura RRSIG.
                                                                                            Servidor DNS
                                                                                            Autoritativo

                                                                        r?
                                                        n       g.b
                                                    o.e
                                                 .fo                                .br
                                              plo                            re
                                                                                s
                                         em                               ido
                                       ex                               rv
                                                               se
                                                       n   cia
                                                fe  re
                                             Re


                                        exemplo.foo.eng.br ?
    Servidor DNS                                                                            Servidor DNS
     Recursivo                                                                              Autoritativo
                                    Referencia servidores foo.eng.br


                                          ex
                                            em
                                                     plo
                                                        .fo
                                                           o.e
             exemplo.foo.eng.br ?




                                        20                     n         g.b
                                             0.1
                                                   60                        r?
                                                        .10
                                                              .25
                                                                    1


                                                                                            Servidor DNS
                                                                                            Autoritativo


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




                                                                                                                                       79 / 135
O que ´ DNSSEC?
      e

                                                                                                                      O servidor DNS
                                                                                                                      recursivo utiliza a
                                                                                            Servidor DNS
                                                                                            Autoritativo              DNSKEY para checar
                                                        n      g.b
                                                                        r?                                            a assinatura (RRSIG)
                                                    o.e

                                         em
                                              plo
                                                 .fo
                                                                          ido
                                                                             re
                                                                                s   .br
                                                                                                                      do Record A
                                       ex                               rv
                                                               se
                                                       n   cia
                                                fe  re
                                             Re


                                        exemplo.foo.eng.br ?
    Servidor DNS                                                                            Servidor DNS
     Recursivo                                                                              Autoritativo
                                    Referencia servidores foo.eng.br


                                          ex
                                            em
                                                     plo
                                                        .fo
                                                           o.e
                                        20
             exemplo.foo.eng.br ?




                                             0.1               n         g.b
                                                   60                        r?
                                                        .10
                                                              .25
                                                                    1


                                                                                            Servidor DNS
                                                                                            Autoritativo


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




                                                                                                                                       80 / 135
O que ´ DNSSEC?
      e




                  81 / 135
O que muda com DNSSEC no DNS autoritativo?


Startup
    Gerar a chave assim´trica;
                       e
    Incluir a chave na zona;
    Assinar a zona;
    Mudar a referˆncia para o arquivo de zona nas configura¸˜es;
                 e                                        co
    Incluir o DS na interface do Registro.br.

Manuten¸˜o
       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

 2   Inclua no final do arquivo de zona db.foo.eng.br (incremente o SOA):
     °include Kfoo.eng.br+005.5423.key

 3   Execute o comando (gera um arquivo .signed):
     dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br

 4   Altere a referˆncia no arquivo de configura¸˜o named.conf:
                   e                           ca
     file ‘‘db.foo.eng.br.signed’’;

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



Manuten¸˜o
       ca
 1   Altere o arquivo de zona db.foo.eng.br incrementando o SOA;
 2   Execute o comando:
     dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br
                                                                                  83 / 135
DNSSHIM - DNS Secure Hidden Master


                      http://registro.br/dnsshim/

    Open-Source
    Automatiza o processo de provisionamento de zonas
    Suporte a DNSSEC
    Interface Automatiz´vel
                       a
    Manuten¸˜o de chaves/assinaturas
           ca

P´blico Alvo
 u
Provedores de hospedagem ou qualquer outra institui¸˜o respons´vel por
                                                     ca       a
administrar servidores DNS autoritativos para muitas zonas



                                                                    84 / 135
O que muda com DNSSEC no DNS recursivo?


Startup
    Ancorar a chave p´blica do.BR
                     u

Manuten¸˜o
       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’’



Manuten¸˜o
       ca
   1   Obtenha a nova chave em https://registro.br/ksk/;
   2   Ancore a nova chave no servidor DNS recursivo.


                                                                                  86 / 135
Parte VI

Firewalls




            87 / 135
DNS




  Definido nas RFCs 1034 e 1035;
  Servidores aceitam consultas em transporte TCP/UDP, porta 53;
  Payload maximo em transporte UDP de 512 bytes;
  Payload maximo por mensagem DNS em TCP de 64 Kbytes.




                                                                  88 / 135
DNS



Quando TCP ´ utilizado
           e
    Transferˆncias de zona (AXFR);
            e
    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´ truncada;
                           a
      3   Cliente refaz consulta via TCP.




                                                                         89 / 135
EDNS0 - Extension Mechanisms for DNS



   Definido na RFC 2671;
   Extens˜o do protocolo DNS original para eliminar alguns limites do
         a
   protocolo;
   Permite:
     ◮   mais flags e RCODEs ao cabe alho DNS;
     ◮   novos tipos de labels;
     ◮   payloads maiores em transporte UDP (limitado a 64 Kbytes);
     ◮   define um novo pseudo-RR: OPT.




                                                                      90 / 135
EDNS0 - Extension Mechanisms for DNS



   Depende de suporte tanto no cliente como no servidor;
   Cliente envia consulta UDP com pseudo-RR OPT na se¸˜o Additional
                                                     ca
   da mensagem DNS, informando qual o tamanho m´ximo 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 n˜o 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
Configurando o Firewall




Por que configurar corretamente?
    Garantir qualidade na resolu¸˜o DNS, ou seja, evitar atrasos e,
                                 ca
    principalmente, a impossibilidade de resolu¸˜o de nomes;
                                               ca
    Evitar overhead desnecess´rio em servidores DNS, tanto recursivos
                             a
    como autoritativos.




                                                                      93 / 135
Configurando 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
Configurando o Firewall


Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0, verifique se seu firewall permite
datagramas UDP/DNS com mais de 512 bytes. Um teste pode ser feito
atrav´s da seguinte consulta (935 bytes de payload DNS):
     e

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


Se a resposta n˜o for recebida, pode-se:
               a
    corrigir o comportamento do firewall;
    diminuir o payload m´ximo enviado via record OPT na configura¸˜o;
                        a                                       ca
    EDNS0 do servidor para 512 bytes.




                                                                     95 / 135
Configurando o Firewall

Firewalls e DNS/UDP > 512 bytes
Se seu servidor recursivo suporta EDNS0 e o firewall suporta mensagens
DNS maiores que 512 bytes, verifique se seu firewall ´ capaz de fazer o
                                                     e
correto reassembly de datagramas UDP fragmentados. Um teste pode ser
feito atrav´s da seguinte consulta (2185 bytes de payload DNS):
           e

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


Se a resposta n˜o for recebida, pode-se:
               a
    corrigir o comportamento do firewall;
    diminuir o payload m´ximo enviado via record OPT na configura¸˜o
                        a                                       ca
    EDNS0 do resolver. RFC EDNS0 sugere que se configure baseado em
    MTU de 1280 bytes.


                                                                  96 / 135
Parte VII

Testes de Performance




                        97 / 135
Testes de Performance - Recursivo




Dependente de fatores externos
    Link, banda local
    Capacidade dos autoritativos




                                    98 / 135
Testes de Performance - Recursivo




Responde ` consultas
         a
    consultas j´ em cache
               a
    consulta servidores autoritativos

Aviso
Exatid˜o de uma simula¸˜o depende da comunica¸˜o 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 v´lidas
                          a




                                           100 / 135
Testes de Performance - Recursivo

Ambiente
   Servidor Recursivo
    2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s
    FreeBSD 7.2 amd64
    Bind 9.6.1-P1 compilado com suporte a threads
    Unbound 1.4.0
   Cliente
    1 Xeon X5560 2.80GHz QuadCore HT
    DNSPERF 1.0.1.0-1
      resperf - mede throughput do recursivo
      Dispon´ 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
                ...

-s:    IP ou nome do servidor recursivo

-r:    Tempo do teste, em segundos




                                                       102 / 135
Testes de Performance - Recursivo
Bind - Consultas em Cache
N.threads = 8 ( named ... -n 8 )




                                    103 / 135
Testes de Performance - Recursivo
Unbound - Consultas em cache
N.threads = 8 ( unbound.conf )




                                    104 / 135
Testes de Performance - Recursivo
Bind - Consultas ´nicas - !Cache
                 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 configuradas
    Zonas carregadas em mem´ria
                           o




                                                       107 / 135
Testes de Performance - Autoritativo




Teste Proposto
    Servidor autoritativo com 1000 zonas configuradas
    Dois clientes consultam aleatoriamente registros existentes nessas
    zonas




                                                                         108 / 135
Testes de Performance - Autoritativo


Ambiente
    Servidor Autoritativo
     2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s
     FreBSD 7.2 amd64
     Bind 9.6.1-P1 compilado com threads
     NSD 3.2.3
    Clientes
     1 Xeon X5560 2.80GHz QuadCore HT
     Queryperf 1.12
       Dispon´ 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
                ...

-s:    IP ou nome do servidor recursivo

-l:    Tempo do teste, em segundos




                                                        110 / 135
Testes de Performance - Autoritativo
Bind
12 Threads = 224000 qps




                                       111 / 135
Testes de Performance - Autoritativo
NSD
5 servidores = 257770 qps




                                       112 / 135
Parte VIII

Escalabilidade de Recursivos




                               113 / 135
Escalabilidade de Recursivos




Motiva¸˜o
      ca
DNS recursivo inst´vel ´ foco de reclama¸˜es constantes
                  a e                   co




                                                          114 / 135
Escalabilidade de Recursivos



Escalabilidade e Estabilidade
    Suporte a alto tr´fego
                     a
    Suporte a muitos usu´rios
                        a
    F´cil upgrade caso a demanda aumente
     a
    Manuten¸˜o 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




Solu¸˜o
    ca
    Roteador + [UNIX + Quagga + BIND]
    Endere¸o do servi¸o roda na loopback dos servidores
          c          c
    Anycast dentro do cluster
    Protocolo de roteamento dinˆmico 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 tr´fego
                    a
    O balanceamento de carga n˜o ´ exato
                              a e
    Incoerˆncia de cache entre os servidores
          e
    O cache dos servidores n˜o s˜o idˆnticos, pois o tr´fego que eles
                            a a      e                 a
    recebem tamb´m n˜o ´
                 e    a e

                            N˜o h´ problema!
                             a a




                                                                        121 / 135
Escalabilidade de Recursivos



Detalhes do BIND
    BIND rodando nas duas interfaces
    Queries chegam para a loopback
    Monitora¸˜o pelo endere¸o individual
            ca             c
    acl
    Max-cache-size
    recursive-clients




                                           122 / 135
Escalabilidade de Recursivos



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




                                          123 / 135
Escalabilidade de Recursivos



Recursos
    Exemplo:
     Rede com 1M de usu´rios simultˆneos
                        a          a
     M´dia de 50 q/h (por usu´rio)
       e                     a
    50 x 1M = 50M q/h      14k q/s
     Um ´nico servidor (com hardware robusto) ´ capaz de suportar esta carga
         u                                       e
     Sugest˜o para atingir alta disponibilidade:
            a
      - cluster com 3 ou 4 servidores




                                                                        124 / 135
Escalabilidade de Recursivos



Monitora¸˜o
        ca
    Processo do BIND est´ no ar?
                        a
     Monitorar endere¸o 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
    Vers˜o da zona (serial)
        a
    DNSSEC - valida¸˜o
                   ca
    Recursos




                                127 / 135
Monitoramento - Autoritativo



   SNMP - cpu, mem´ria, tr´fego
                  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   CGI plota as
   estat´
        ısticas




                                                                     129 / 135
Monitoramento - Autoritativo



Diversas estat´
              ısticas importantes para um autoritativo
    By Node
    Qtypes
    Client Geography
    IP Version
    DNS Transport
    ...




                                                         130 / 135
Monitoramento - Autoritativo

Query Types




                               131 / 135
Monitoramento




Recursivos
    Disponibilidade
    Recursos




                      132 / 135
Monitoramento - Recursivo




   SNMP - cpu, mem´ria, tr´fego
                  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
Referˆncias
     e



◮   RFC 2317
    Classless IN-ADDR.ARPA delegation
◮   DNS recursivo est´vel e escal´vel
                       a          a
    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¸oes para Evitar o Abuso de Servidores DNS Recursivos Abertos
              c˜
    http://www.cert.br/docs/whitepapers/dns-recursivo-aberto
◮   A ultima vers˜o do tutorial de DNSSEC pode ser encontrada em
      ´          a
    ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf




                                                                             135 / 135

Mais conteúdo relacionado

Semelhante a Tutorial DNS conceitos e configuração

Semelhante a Tutorial DNS conceitos e configuração (9)

Tutorial dnssec201205
Tutorial dnssec201205Tutorial dnssec201205
Tutorial dnssec201205
 
Como funciona a Internet - DNS
Como funciona a Internet - DNSComo funciona a Internet - DNS
Como funciona a Internet - DNS
 
DNS
DNSDNS
DNS
 
Cap2b
Cap2bCap2b
Cap2b
 
(16) dns
(16) dns(16) dns
(16) dns
 
Servico dns
Servico dnsServico dns
Servico dns
 
Linux - DNS
Linux - DNSLinux - DNS
Linux - DNS
 
Uma análise do protocolo DNS e suas extensões - Simpoets 2008 [Artigo]
Uma análise do protocolo DNS e suas extensões - Simpoets 2008 [Artigo]Uma análise do protocolo DNS e suas extensões - Simpoets 2008 [Artigo]
Uma análise do protocolo DNS e suas extensões - Simpoets 2008 [Artigo]
 
Protocolo FTP e DNS
Protocolo FTP e DNSProtocolo FTP e DNS
Protocolo FTP e DNS
 

Mais de Wilson Rogerio Lopes

DNS na AWS - Zero To Hero using Route 53
DNS na AWS - Zero To Hero using Route 53DNS na AWS - Zero To Hero using Route 53
DNS na AWS - Zero To Hero using Route 53Wilson Rogerio Lopes
 
Zero to Hero for Network Admins on AWS
Zero to Hero for Network Admins on AWSZero to Hero for Network Admins on AWS
Zero to Hero for Network Admins on AWSWilson Rogerio Lopes
 
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...Wilson Rogerio Lopes
 
DDoS Attacks - Scenery, Evolution and Mitigation
DDoS Attacks - Scenery, Evolution and MitigationDDoS Attacks - Scenery, Evolution and Mitigation
DDoS Attacks - Scenery, Evolution and MitigationWilson Rogerio Lopes
 
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...Wilson Rogerio Lopes
 
Ataques DDoS - Panorama, Mitigação e Evolução
Ataques DDoS - Panorama, Mitigação e EvoluçãoAtaques DDoS - Panorama, Mitigação e Evolução
Ataques DDoS - Panorama, Mitigação e EvoluçãoWilson Rogerio Lopes
 
DNSSEC -Provisioning and Automatization using Bind
DNSSEC -Provisioning and Automatization using BindDNSSEC -Provisioning and Automatization using Bind
DNSSEC -Provisioning and Automatization using BindWilson Rogerio Lopes
 

Mais de Wilson Rogerio Lopes (9)

DNS na AWS - Zero To Hero using Route 53
DNS na AWS - Zero To Hero using Route 53DNS na AWS - Zero To Hero using Route 53
DNS na AWS - Zero To Hero using Route 53
 
Zero to Hero for Network Admins on AWS
Zero to Hero for Network Admins on AWSZero to Hero for Network Admins on AWS
Zero to Hero for Network Admins on AWS
 
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...
Uso do MacSec (802.1ae) em complemento ao 802.1x em redes corporativas - Cont...
 
DDoS Attacks - Scenery, Evolution and Mitigation
DDoS Attacks - Scenery, Evolution and MitigationDDoS Attacks - Scenery, Evolution and Mitigation
DDoS Attacks - Scenery, Evolution and Mitigation
 
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...
Cisco TrustSec - Software Defined Segmentation e sua aplicabilidade em Segura...
 
Ataques DDoS - Panorama, Mitigação e Evolução
Ataques DDoS - Panorama, Mitigação e EvoluçãoAtaques DDoS - Panorama, Mitigação e Evolução
Ataques DDoS - Panorama, Mitigação e Evolução
 
Implementação do DNSSEC no iG
Implementação do DNSSEC no iGImplementação do DNSSEC no iG
Implementação do DNSSEC no iG
 
DNSSEC -Provisioning and Automatization using Bind
DNSSEC -Provisioning and Automatization using BindDNSSEC -Provisioning and Automatization using Bind
DNSSEC -Provisioning and Automatization using Bind
 
BGP Traffic Engineering on IXP
BGP Traffic Engineering on IXPBGP Traffic Engineering on IXP
BGP Traffic Engineering on IXP
 

Tutorial DNS conceitos e configuração

  • 1. Tutorial DNS 3 PTT F´rum o David Robert Camargo de Campos <david@registro.br> Rafael Dantas Justo <rafael@registro.br> Wilson Rog´rio Lopes <wilson@registro.br> e Registro.br Dezembro de 2009 1 / 135
  • 2. Objetivos Entender os conceitos de DNS Configurar servidores autoritativos Configurar servidores recursivos Entender as diferen¸as entre DNS e DNSSEC c Configurar corretamente o firewall Testar performance dos servidores Planejar escalabilidade de recursivos Monitorar os servidores 2 / 135
  • 3. Cronograma 1 DNS 5 DNSSEC Conceitos Vulnerabilidades do DNS Arquitetura Conceito Configura¸ao do Autoritativo c˜ 2 Servidores DNS Autoritativos Configura¸ao do Recursivo c˜ Cen´rio a Arquivos de Zona 6 Firewalls Configura¸ao BIND c˜ DNS Configura¸ao NSD c˜ EDNS0 Configura¸ao c˜ 3 Servidores DNS Recursivos Cen´rio a 7 Testes de Performance Configura¸ao BIND c˜ Recursivo Servidores DNS Recursivos abertos Autoritativo 4 Recursivo e Autoritativo 8 Escalabilidade de Recursivos 9 Monitoramento Autoritativo Recursivo 3 / 135
  • 5. 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 atrav´s de um esquema cliente-servidor. e - Arquitetura hier´rquica, dados dispostos em uma ´rvore invertida a a - Distribu´ eficientemente, sistema descentralizado e com cache ıda - O principal prop´sito ´ a resolu¸˜o de nomes de dom´ em o e ca ınio endere¸os IP e vice-versa c 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. Hierarquia DNS UNIX database "." filesystem / br usr eng local foo bin tutorial imake tutorial.foo.eng.br /usr/local/bin/imake 6 / 135
  • 7. Dom´ Vs Zona ınio "." Delegação com br org Zona br eng nom gov Delega¸˜o ca silva Zona eng.br Zona nom.br Zona gov.br Indica uma transferˆncia e Zona foo.eng.br de responsabilidade na foo joao fazenda administra¸˜o apartir ca daquele ponto na ´rvore a tutorial DNS Zona tutorial.foo.eng.br Zona joao.silva.nom.br Zona fazenda.gov.br Domínio br 7 / 135
  • 8. Resource Records Os dados associados com os nomes de dom´ est˜o contidos em ınio a Resource Records ou RRs (Registro de Recursos) S˜o 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 Indica onde come¸a a autoridade a zona c NS Indica um servidor de nomes para a zona A Mapeamento de nome a endere¸o c (IPv4) AAAA Mapeamento de nome a endere¸o c (IPv6) MX Indica um mail exchanger para um nome (servidor de email) CNAME Mapeia um nome alternativo (apelido) PTR Mapeamento de endere¸o a nome c 8 / 135
  • 9. Tipos de servidores Servidor Recursivo Ao receber requisi¸˜es de resolu¸˜o de nomes, faz requisi¸˜es para os co ca co servidores autoritativos e conforme a resposta recebida dos mesmos continua a realizar requisi¸˜es para outros servidores autoritativos at´ co e obter a resposta satisfat´ria o Servidor Autoritativo Ao receber requisi¸˜es de resolu¸˜o de nome, responde um endere¸o caso co ca c possua, uma referˆncia caso conhe¸a o caminho da resolu¸˜o ou uma e c ca nega¸˜o caso n˜o conhe¸a ca a c 9 / 135
  • 10. Exemplo de requisi¸˜o de endere¸o ca c Supondo que o cache est´ vazio ou a sem informa¸oes de c˜ br, eng.br, foo.eng.br, exemplo.foo.eng.br Resolver Servi¸o localizado c no cliente que tem como responsabilidade resolver as requisi¸oes DNS c˜ para diversos aplicativos 10 / 135
  • 11. Exemplo de requisi¸˜o de endere¸o ca c Supondo que o cache est´ vazio ou a sem informa¸oes de c˜ br, eng.br, foo.eng.br, exemplo.foo.eng.br 11 / 135
  • 12. Exemplo de requisi¸˜o de endere¸o ca c 12 / 135
  • 13. Exemplo de requisi¸˜o de endere¸o ca c 13 / 135
  • 14. Exemplo de requisi¸˜o de endere¸o ca c 14 / 135
  • 15. Exemplo de requisi¸˜o de endere¸o ca c 15 / 135
  • 16. Exemplo de requisi¸˜o de endere¸o ca c Servidor DNS Autoritativo "." r ? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS BR Recursivo Autoritativo Referencia servidores foo.eng.br ENG ex em plo .fo o.e exemplo.foo.eng.br ? n g.b r? Servidor DNS FOO Autoritativo TUTORIAL Resolver 16 / 135
  • 17. Exemplo de requisi¸˜o de endere¸o ca c Servidor DNS Autoritativo "." r ? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS BR Recursivo Autoritativo Referencia servidores foo.eng.br ENG ex em plo .fo o.e exemplo.foo.eng.br ? 20 n g.b 0.1 60 r? .10 .25 1 Servidor DNS FOO Autoritativo TUTORIAL Resolver 17 / 135
  • 18. Exemplo de requisi¸˜o de endere¸o ca c Servidor DNS Autoritativo "." r ? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS BR Recursivo Autoritativo Referencia servidores foo.eng.br ENG ex em plo .fo o.e exemplo.foo.eng.br ? 20 n g.b 0.1 200.160.10.251 60 r? .10 .25 1 Servidor DNS FOO Autoritativo TUTORIAL Resolver 18 / 135
  • 19. Exemplo de requisi¸˜o de endere¸o ca c Servidor DNS Autoritativo "." r ? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS BR Recursivo Autoritativo Referencia servidores foo.eng.br ENG ex em plo .fo o.e exemplo.foo.eng.br ? 20 n g.b 0.1 200.160.10.251 60 r? .10 .25 1 Servidor DNS FOO Autoritativo TUTORIAL Resolver 19 / 135
  • 20. Fluxo de dados 1 Resolver faz consultas no Recursivo 2 Recursivo faz consultas no Master ou Slave 3 Master tem a zona original (via arquivo ou Dynamic Update) 4 Slave recebe a zona do Master (AXFR ou IXFR) 20 / 135
  • 21. Parte II Configurando Servidores DNS Autoritativos 21 / 135
  • 22. Cen´rio a Organiza¸˜o 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:12ff::/32 alocado pelo Registro.br. Cliente A Possui o dom´ a.foo.eng.br delegado pela organiza¸˜o Foo; ınio ca Possui o bloco 200.160.0.127/28 designado pela organiza¸˜o Foo. ca Cliente B Possui o dom´ b.foo.eng.br delegado pela organiza¸˜o Foo; ınio ca Possui o bloco 200.160.0.191/26 designado pela organiza¸˜o Foo. ca 22 / 135
  • 23. Cen´rio a Organização Foo Engenharia Ltda. foo.eng.br 2001:12ff::/32 200.160.0/24 200.160.0.127/28 200.160.0.191/26 a.foo.eng.br b.foo.eng.br Cliente A Cliente B 23 / 135
  • 24. Cen´rio a Alocados Livres 200.160.0.0/25 200.160.0.143/28 200.160.0.127/28 200.160.0.159/27 200.160.0.191/26 200.160.0/24 24 / 135
  • 25. Organiza¸˜o Foo - Arquivo de zona ca db.foo.eng.br foo.eng.br. 86400 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona foo.eng.br. 86400 IN NS ns1.foo.eng.br. foo.eng.br. 86400 IN NS ns2.foo.eng.br. ;; Cliente A a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br. a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br. ;; Cliente B b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br. b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br. 25 / 135
  • 26. Organiza¸˜o Foo - Arquivo de zona (continua¸˜o...) ca ca db.foo.eng.br ;; Tradu¸˜o 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. 86400 IN A 200.160.0.128 ns2.a.foo.eng.br. 86400 IN A 200.160.0.129 ns1.b.foo.eng.br. 86400 IN A 200.160.0.192 ns2.b.foo.eng.br. 86400 IN A 200.160.0.193 ;; Web server www.foo.eng.br. 86400 IN A 200.160.0.3 www.foo.eng.br. 86400 IN AAAA 2001:12ff::3 26 / 135
  • 27. Organiza¸˜o Foo - Arquivo de zona reverso IPv4 ca db.0.160.200.in-addr.arpa 0.160.200.in-addr.arpa. 172800 IN SOA ns1.foo.eng.br. hostmaster.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona reverso 0.160.200.in-addr.arpa. 172800 IN NS ns1.foo.eng.br. 0.160.200.in-addr.arpa. 172800 IN NS ns2.foo.eng.br. ;; Cliente A (200.160.0.127 → 200.160.0.142 = 200.160.0.127/28) 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns1.a.foo.eng.br. 127/28.0.160.200.in-addr.arpa. 172800 IN NS ns2.a.foo.eng.br. 128.0.160.200.in-addr.arpa. 172800 IN CNAME 128.127/28.0.160.200.in-addr.arpa. 129.0.160.200.in-addr.arpa. 172800 IN CNAME 129.127/28.0.160.200.in-addr.arpa. ... 142.0.160.200.in-addr.arpa. 172800 IN CNAME 142.127/28.0.160.200.in-addr.arpa. 27 / 135
  • 28. Organiza¸˜o Foo - Arquivo de zona reverso IPv4 ca db.0.160.200.in-addr.arpa (continua¸˜o...) ca ;; 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¸os reversos c 1.0.160.200.in-addr.arpa. 86400 IN PTR ns1.foo.eng.br. 2.0.160.200.in-addr.arpa. 86400 IN PTR ns2.foo.eng.br. 3.0.160.200.in-addr.arpa. 86400 IN PTR www.foo.eng.br. ... 28 / 135
  • 29. Organiza¸˜o Foo - Arquivo de zona reverso IPv4 ca Mas por que ´ necess´rio o CNAME? e a Porque a RFC 2317 recomenda; Esta solu¸˜o n˜o exige altera¸˜es nos softwares dos servidores DNS; ca a co Altera¸˜o de hosts no reverso dos clientes n˜o implicam em altera¸˜es ca a co na zona reverso da organiza¸˜o Foo. ca 29 / 135
  • 30. Organiza¸˜o 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. 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˜es. O draft draft-howard-isp-ip6rdns-01 aborda este o tema. 30 / 135
  • 31. Publica¸˜o de Reverso ca Informa¸˜o ca Para as delega¸˜es informadas diretamente na interface do Registro.br co (/24 ou maior) as publica¸˜es das altera¸˜es ocorrem a cada 4 horas com co co ´ ınicio as 2hs. 31 / 135
  • 32. Cliente A - Arquivo de zona db.a.foo.eng.br a.foo.eng.br. 86400 IN SOA ns1.a.foo.eng.br. hostmaster.a.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona a.foo.eng.br. 86400 IN NS ns1.a.foo.eng.br. a.foo.eng.br. 86400 IN NS ns2.a.foo.eng.br. ;; Tradu¸˜o 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
  • 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¸os reversos c 128.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns1.a.foo.eng.br. 129.127/28.0.160.200.in-addr.arpa. 172800 IN PTR ns2.a.foo.eng.br. ... 142.127/28.0.160.200.in-addr.arpa. 172800 IN PTR www.a.foo.eng.br. 33 / 135
  • 34. Cliente B - Arquivo de zona db.b.foo.eng.br b.foo.eng.br. 86400 IN SOA ns1.b.foo.eng.br. hostmaster.b.foo.eng.br. ( 2009120200 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 900 ) ; minimum ;; Servidores DNS que respondem por esta zona b.foo.eng.br. 86400 IN NS ns1.b.foo.eng.br. b.foo.eng.br. 86400 IN NS ns2.b.foo.eng.br. ;; Tradu¸˜o 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
  • 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¸os reversos c 192.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns1.b.foo.eng.br. 193.191/26.0.160.200.in-addr.arpa. 172800 IN PTR ns2.b.foo.eng.br. ... 254.191/26.0.160.200.in-addr.arpa. 172800 IN PTR www.b.foo.eng.br. 35 / 135
  • 36. Organiza¸˜o Foo - Arquivo de configura¸˜o (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
  • 37. Organiza¸˜o Foo - Arquivo de configura¸˜o (BIND) ca ca named.conf no master (200.160.0.1) (continua¸˜o...) 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
  • 38. Organiza¸˜o Foo - Arquivo de configura¸˜o (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
  • 39. Organiza¸˜o Foo - Arquivo de configura¸˜o (BIND) ca ca named.conf no slave (200.160.0.2) (continua¸˜o...) 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
  • 40. Cliente A - Arquivo de configura¸˜o (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
  • 41. Cliente A - Arquivo de configura¸˜o (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
  • 42. Cliente B - Arquivo de configura¸˜o (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
  • 43. Cliente B - Arquivo de configura¸˜o (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
  • 44. Organiza¸˜o Foo - Arquivo de configura¸˜o (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
  • 45. Organiza¸˜o Foo - Arquivo de configura¸˜o (NSD) ca ca nsd.conf no master (200.160.0.1) (continua¸˜o...) 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 Observa¸˜o ca O NSD quando utilizado como master n˜o envia IXFR para os slaves. Mas a caso o NSD seja utilizado como slave, ele entende requisi¸˜es IXFR. co 45 / 135
  • 46. Organiza¸˜o Foo - Arquivo de configura¸˜o (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
  • 47. Cliente A - Arquivo de configura¸˜o (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
  • 48. Cliente A - Arquivo de configura¸˜o (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
  • 49. Cliente B - Arquivo de configura¸˜o (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
  • 50. Cliente B - Arquivo de configura¸˜o (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
  • 51. Parte III Configurando Servidores DNS Recursivos 51 / 135
  • 52. Cen´rio a A organiza¸˜o 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:12ff::6. a 52 / 135
  • 53. Organiza¸˜o 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 N˜o utilizem a op¸˜o “query-source”. Ao fixar uma porta de origem o a ca servidor DNS fica muito mais vulner´vel a ataques de polui¸˜o de cache. a ca Principalmente aos ataques descritos por Dan Kaminsky. 53 / 135
  • 54. Organiza¸˜o Foo (BIND) ca named.conf (continua¸˜o...) 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
  • 55. Organiza¸˜o 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
  • 56. Cuidado com Recursivos Abertos! Causa O administrador n˜o configura 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 amplifica¸˜o de respostas DNS e uso de banda por ca terceiros. Solu¸˜o ca Configura¸˜o correta do firewall. ca BIND: NSD: acl clientes { 127.0.0.0/8; 200.160.0.0/24; }; access-control: 0.0.0.0/0 refuse allow-query { clientes; }; access-control: 200.160.0.0/24 allow allow-query-cache { clientes; }; access-control: 127.0.0.0/8 allow allow-recursion { clientes; }; 56 / 135
  • 57. Cuidado com Recursivos Abertos! 57 / 135
  • 58. Parte IV Importˆncia da Separa¸˜o de Autoritativo e Recursivo a ca 58 / 135
  • 59. Por que separar? Motivo Possibilita ataques ao servidor DNS recursivo; Aumenta a complexidade na administra¸˜o do servidor. ca Explicando... Recursivo e autoritativo possui configura¸˜es de acesso diferentes; co As regras de firewalls s˜o distintas; a Sem “recursos” para separar os servidores? Para servidores DNS utilizando BIND a sintaxe “view” pode ser utilizada para separar os cen´rios. a 59 / 135
  • 60. Parte V O que muda com DNSSEC? 60 / 135
  • 62. Vulnerabilidades do DNS - Solu¸˜es co 62 / 135
  • 63. O que ´ DNSSEC? e Extens˜o da tecnologia DNS a (o que existia continua a funcionar) Possibilita maior seguran¸a para o usu´rio na Internet c a (corrige falhas do DNS) O que garante? Origem (Autenticidade) Integridade A n˜o existˆncia de um nome ou tipo a e ˜ O que NAO garante? Confidencialidade Prote¸˜o contra ataques de nega¸˜o de servi¸o (DOS) ca ca c 63 / 135
  • 64. O que ´ DNSSEC? e DNSSEC utiliza o conceito de chaves assim´tricas e − chave p´blica e chave privada u 64 / 135
  • 65. O que ´ DNSSEC? e DNSSEC utiliza o conceito de chaves assim´tricas e − chave p´blica e chave privada u 65 / 135
  • 66. O que ´ DNSSEC? e O resolver recursivo j´ a possui a chave p´blica u da zona “.br” ancorada. 66 / 135
  • 67. O que ´ DNSSEC? e Nesta simula¸˜o de ca resolu¸˜o supomos que ca a raiz n˜o est´ a a assinada. 67 / 135
  • 68. O que ´ DNSSEC? e Retorna sem resposta, mas com referˆncia e para os Records: NS do “.br”. 68 / 135
  • 69. O que ´ DNSSEC? e O servidor recursivo requisita a DNSKEY ao verificar que o nome da zona ´ igual ao e nome da zona que consta em sua trusted-key. 69 / 135
  • 70. O que ´ DNSSEC? e O servidor DNS responde enviando DNSKEY e o RRSIG 70 / 135
  • 71. O que ´ DNSSEC? e Compara a trusted-key com a DNSKEY, caso for v´lida continua a com as requisi¸oes c˜ 71 / 135
  • 72. O que ´ DNSSEC? e 72 / 135
  • 73. O que ´ DNSSEC? e Retorna sem resposta, mas com referˆncia 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
  • 74. O que ´ DNSSEC? e O servidor DNS recursivo utiliza a DNSKEY para checar a assinatura (RRSIG) do Record DS 74 / 135
  • 75. O que ´ DNSSEC? e 75 / 135
  • 76. O que ´ DNSSEC? e 76 / 135
  • 77. O que ´ DNSSEC? e O servidor DNS recursivo verifica atrav´s do DS e da e DNSKEY, se este servidor DNS ´ v´lido. e a 77 / 135
  • 78. O que ´ DNSSEC? e Servidor DNS Autoritativo r? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS Recursivo Autoritativo Referencia servidores foo.eng.br ex em plo .fo o.e exemplo.foo.eng.br ? n g.b r? Servidor DNS Autoritativo Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR Resolver 78 / 135
  • 79. O que ´ DNSSEC? e Retorna o Record A e sua assinatura RRSIG. Servidor DNS Autoritativo r? n g.b o.e .fo .br plo re s em ido ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS Recursivo Autoritativo Referencia servidores foo.eng.br ex em plo .fo o.e exemplo.foo.eng.br ? 20 n g.b 0.1 60 r? .10 .25 1 Servidor DNS Autoritativo Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR Resolver 79 / 135
  • 80. O que ´ DNSSEC? e O servidor DNS recursivo utiliza a Servidor DNS Autoritativo DNSKEY para checar n g.b r? a assinatura (RRSIG) o.e em plo .fo ido re s .br do Record A ex rv se n cia fe re Re exemplo.foo.eng.br ? Servidor DNS Servidor DNS Recursivo Autoritativo Referencia servidores foo.eng.br ex em plo .fo o.e 20 exemplo.foo.eng.br ? 0.1 n g.b 60 r? .10 .25 1 Servidor DNS Autoritativo Autoritativo sobre o FOO.ENG.BR e TUTORIAL.FOO.ENG.BR Resolver 80 / 135
  • 81. O que ´ DNSSEC? e 81 / 135
  • 82. O que muda com DNSSEC no DNS autoritativo? Startup Gerar a chave assim´trica; e Incluir a chave na zona; Assinar a zona; Mudar a referˆncia para o arquivo de zona nas configura¸˜es; e co Incluir o DS na interface do Registro.br. Manuten¸˜o ca Reassinar periodicamente a zona. 82 / 135
  • 83. E como fazer isso no DNS autoritativo? (BIND) Startup 1 Execute o comando (gera um arquivo .key e um .private): dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom foo.eng.br 2 Inclua no final do arquivo de zona db.foo.eng.br (incremente o SOA): °include Kfoo.eng.br+005.5423.key 3 Execute o comando (gera um arquivo .signed): dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br 4 Altere a referˆncia no arquivo de configura¸˜o named.conf: e ca file ‘‘db.foo.eng.br.signed’’; 5 Incluir o DS no website do Registro.br. http://registro.br/cgi-bin/nicbr/dscheck Manuten¸˜o ca 1 Altere o arquivo de zona db.foo.eng.br incrementando o SOA; 2 Execute o comando: dnssec-signzone -z -o foo.eng.br -e 20100102120000 db.foo.eng.br 83 / 135
  • 84. DNSSHIM - DNS Secure Hidden Master http://registro.br/dnsshim/ Open-Source Automatiza o processo de provisionamento de zonas Suporte a DNSSEC Interface Automatiz´vel a Manuten¸˜o de chaves/assinaturas ca P´blico Alvo u Provedores de hospedagem ou qualquer outra institui¸˜o respons´vel por ca a administrar servidores DNS autoritativos para muitas zonas 84 / 135
  • 85. O que muda com DNSSEC no DNS recursivo? Startup Ancorar a chave p´blica do.BR u Manuten¸˜o 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
  • 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¸˜o ca 1 Obtenha a nova chave em https://registro.br/ksk/; 2 Ancore a nova chave no servidor DNS recursivo. 86 / 135
  • 87. Parte VI Firewalls 87 / 135
  • 88. DNS Definido nas RFCs 1034 e 1035; Servidores aceitam consultas em transporte TCP/UDP, porta 53; Payload maximo em transporte UDP de 512 bytes; Payload maximo por mensagem DNS em TCP de 64 Kbytes. 88 / 135
  • 89. DNS Quando TCP ´ utilizado e Transferˆncias de zona (AXFR); e 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´ truncada; a 3 Cliente refaz consulta via TCP. 89 / 135
  • 90. EDNS0 - Extension Mechanisms for DNS Definido na RFC 2671; Extens˜o do protocolo DNS original para eliminar alguns limites do a protocolo; Permite: ◮ mais flags e RCODEs ao cabe alho DNS; ◮ novos tipos de labels; ◮ payloads maiores em transporte UDP (limitado a 64 Kbytes); ◮ define um novo pseudo-RR: OPT. 90 / 135
  • 91. EDNS0 - Extension Mechanisms for DNS Depende de suporte tanto no cliente como no servidor; Cliente envia consulta UDP com pseudo-RR OPT na se¸˜o Additional ca da mensagem DNS, informando qual o tamanho m´ximo 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 n˜o suportar EDNS0, envia resposta com at´ 512 bytes de a e payload DNS. 91 / 135
  • 92. EDNS0 - Extension Mechanisms for DNS Alguns exemplos de servidores que suportam EDNS0: Bind (desde 8.3.x - 2001); Microsoft DNS server (Windows 2003); NSD (auth only - desde 1.x - 2003); ANS/CNS. 92 / 135
  • 93. Configurando o Firewall Por que configurar corretamente? Garantir qualidade na resolu¸˜o DNS, ou seja, evitar atrasos e, ca principalmente, a impossibilidade de resolu¸˜o de nomes; ca Evitar overhead desnecess´rio em servidores DNS, tanto recursivos a como autoritativos. 93 / 135
  • 94. Configurando 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
  • 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´s da seguinte consulta (935 bytes de payload DNS): e dig @a.dns.br br ns +dnssec +bufsize=1000 Se a resposta n˜o for recebida, pode-se: a corrigir o comportamento do firewall; diminuir o payload m´ximo enviado via record OPT na configura¸˜o; a ca EDNS0 do servidor para 512 bytes. 95 / 135
  • 96. Configurando o Firewall Firewalls e DNS/UDP > 512 bytes Se seu servidor recursivo suporta EDNS0 e o firewall suporta mensagens DNS maiores que 512 bytes, verifique se seu firewall ´ capaz de fazer o e correto reassembly de datagramas UDP fragmentados. Um teste pode ser feito atrav´s da seguinte consulta (2185 bytes de payload DNS): e dig @a.dns.br br dnskey +dnssec +bufsize=2500 Se a resposta n˜o for recebida, pode-se: a corrigir o comportamento do firewall; diminuir o payload m´ximo enviado via record OPT na configura¸˜o a ca EDNS0 do resolver. RFC EDNS0 sugere que se configure baseado em MTU de 1280 bytes. 96 / 135
  • 97. Parte VII Testes de Performance 97 / 135
  • 98. Testes de Performance - Recursivo Dependente de fatores externos Link, banda local Capacidade dos autoritativos 98 / 135
  • 99. Testes de Performance - Recursivo Responde ` consultas a consultas j´ em cache a consulta servidores autoritativos Aviso Exatid˜o de uma simula¸˜o depende da comunica¸˜o com os autoritativos a ca ca 99 / 135
  • 100. Testes de Performance - Recursivo Testes Propostos Consultas em cache Algumas dezenas de consultas repetidas por 5 minutos !Cache Servidor com cache limpo Consultas unicas durante 5 minutos ´ Todas as consultas v´lidas a 100 / 135
  • 101. Testes de Performance - Recursivo Ambiente Servidor Recursivo 2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s FreeBSD 7.2 amd64 Bind 9.6.1-P1 compilado com suporte a threads Unbound 1.4.0 Cliente 1 Xeon X5560 2.80GHz QuadCore HT DNSPERF 1.0.1.0-1 resperf - mede throughput do recursivo Dispon´ em http://www.nominum.com ıvel Cliente e Servidor no mesmo seguimento de rede 101 / 135
  • 102. Testes de Performance - Recursivo °resperf -d <arquivo consultas> -s <servidor> -r 300 -d: Especifica um aquivo contendo as consultas Formato: HOST RR www.registro.br A nic.br MX ... -s: IP ou nome do servidor recursivo -r: Tempo do teste, em segundos 102 / 135
  • 103. Testes de Performance - Recursivo Bind - Consultas em Cache N.threads = 8 ( named ... -n 8 ) 103 / 135
  • 104. Testes de Performance - Recursivo Unbound - Consultas em cache N.threads = 8 ( unbound.conf ) 104 / 135
  • 105. Testes de Performance - Recursivo Bind - Consultas ´nicas - !Cache u N.threads = 8 ( named ... -n 8 ) 105 / 135
  • 106. Testes de Performance - Recursivo Unbound - Consultas ´nicas - !Cache u N.threads = 8 ( unbound.conf ) 106 / 135
  • 107. Testes de Performance - Autoritativo Responde apenas consultas para zonas configuradas Zonas carregadas em mem´ria o 107 / 135
  • 108. Testes de Performance - Autoritativo Teste Proposto Servidor autoritativo com 1000 zonas configuradas Dois clientes consultam aleatoriamente registros existentes nessas zonas 108 / 135
  • 109. Testes de Performance - Autoritativo Ambiente Servidor Autoritativo 2 Xeon X5570 2.93GHz QuadCore HT - 16 CPU’s FreBSD 7.2 amd64 Bind 9.6.1-P1 compilado com threads NSD 3.2.3 Clientes 1 Xeon X5560 2.80GHz QuadCore HT Queryperf 1.12 Dispon´ no contrib do bind ıvel Servidor e clientes no mesmo seguimento de rede 109 / 135
  • 110. Testes de Performance - Autoritativo °queryperf -d <arquivo consultas> -s <servidor> -l <tempo> -d: Especifica um aquivo contendo as consultas Formato: HOST RR www.registro.br A nic.br MX ... -s: IP ou nome do servidor recursivo -l: Tempo do teste, em segundos 110 / 135
  • 111. Testes de Performance - Autoritativo Bind 12 Threads = 224000 qps 111 / 135
  • 112. Testes de Performance - Autoritativo NSD 5 servidores = 257770 qps 112 / 135
  • 113. Parte VIII Escalabilidade de Recursivos 113 / 135
  • 114. Escalabilidade de Recursivos Motiva¸˜o ca DNS recursivo inst´vel ´ foco de reclama¸˜es constantes a e co 114 / 135
  • 115. Escalabilidade de Recursivos Escalabilidade e Estabilidade Suporte a alto tr´fego a Suporte a muitos usu´rios a F´cil upgrade caso a demanda aumente a Manuten¸˜o sem parada do sistema ca Alta disponibilidade Balanceamento de carga 115 / 135
  • 117. Escalabilidade de Recursivos Flexibilidade Mais de um roteador Mais de um switch 117 / 135
  • 118. Escalabilidade de Recursivos Solu¸˜o ca Roteador + [UNIX + Quagga + BIND] Endere¸o do servi¸o roda na loopback dos servidores c c Anycast dentro do cluster Protocolo de roteamento dinˆmico com suporte a ECMP - OSPF a 118 / 135
  • 120. Escalabilidade de Recursivos Anycast na Rede Redundancia IBGP entre os clusters 120 / 135
  • 121. Escalabilidade de Recursivos ECMP Assimetria de tr´fego a O balanceamento de carga n˜o ´ exato a e Incoerˆncia de cache entre os servidores e O cache dos servidores n˜o s˜o idˆnticos, pois o tr´fego que eles a a e a recebem tamb´m n˜o ´ e a e N˜o h´ problema! a a 121 / 135
  • 122. Escalabilidade de Recursivos Detalhes do BIND BIND rodando nas duas interfaces Queries chegam para a loopback Monitora¸˜o pelo endere¸o individual ca c acl Max-cache-size recursive-clients 122 / 135
  • 123. Escalabilidade de Recursivos Controle 1 Iniciar processo do BIND 2 Subir interface loopback Quagga envia LSA para o roteador ifconfig lo1 up 3 Tirar o servidor do ar Enviar LSA removendo a rota ifconfig lo1 down 123 / 135
  • 124. Escalabilidade de Recursivos Recursos Exemplo: Rede com 1M de usu´rios simultˆneos a a M´dia de 50 q/h (por usu´rio) e a 50 x 1M = 50M q/h 14k q/s Um ´nico servidor (com hardware robusto) ´ capaz de suportar esta carga u e Sugest˜o para atingir alta disponibilidade: a - cluster com 3 ou 4 servidores 124 / 135
  • 125. Escalabilidade de Recursivos Monitora¸˜o ca Processo do BIND est´ no ar? a Monitorar endere¸o 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
  • 127. Monitoramento Autoritativos Disponibilidade Autoridade sobre as zonas Vers˜o da zona (serial) a DNSSEC - valida¸˜o ca Recursos 127 / 135
  • 128. Monitoramento - Autoritativo SNMP - cpu, mem´ria, tr´fego 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
  • 129. 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 CGI plota as estat´ ısticas 129 / 135
  • 130. Monitoramento - Autoritativo Diversas estat´ ısticas importantes para um autoritativo By Node Qtypes Client Geography IP Version DNS Transport ... 130 / 135
  • 132. Monitoramento Recursivos Disponibilidade Recursos 132 / 135
  • 133. Monitoramento - Recursivo SNMP - cpu, mem´ria, tr´fego 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
  • 134. Perguntas? 134 / 135
  • 135. Referˆncias e ◮ RFC 2317 Classless IN-ADDR.ARPA delegation ◮ DNS recursivo est´vel e escal´vel a a 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¸oes para Evitar o Abuso de Servidores DNS Recursivos Abertos c˜ http://www.cert.br/docs/whitepapers/dns-recursivo-aberto ◮ A ultima vers˜o do tutorial de DNSSEC pode ser encontrada em ´ a ftp://ftp.registro.br/pub/doc/tutorial-dnssec.pdf 135 / 135