sexta-feira, 6 de fevereiro de 2009

Eu Cavo, Tu Cavas, Ele Cava... Tutorial de DIG


O DIG é um grande canivete suíço para quem está querendo fazer auditorias em um servidor DNS e testar suas configurações. No caso para quem usa o Windows, ele vem para substituir o nslookup. Abaixo seguem algumas dicas e comandos para você testar suas configurações (e os dos outros também) de dns. DIG quer dizer cavar!!! Então vamos lá começar a esburacar a internet!!!

Instalação:

Se você utiliza linux, a maioria das distribuições já trazem o dig instalado, mas por via das dúvidas, você pode usar seu gerenciador de pacotes prediletos e instalar.

Ex:
No Debian, Ubuntu e Derivados
# apt-get install dnsutils

Gentoo
# emerge dnsutils

Mandriva
# urpmi dnsutils

RedHat, Fedora e CentOS
# yum install dnsutils

No Windows:
Também dá para usar o dig no Windows. Para isso, baixe o seguinte programa: http://members.shaw.ca/nicholas.fong/dig/dig-files.zip e descompacte em uma pasta, por exemplo c:\dig

Abaixo, vou listar a instalação no Windows Vista, XP e 2000. Não esqueça que você não pode usar o notepad (bloco de notas) para editar esse arquivo, pois ele vai colocar em formato DOS e o dig não conseguirá ler. Use o NOTEPAD++ para isso. http://sourceforge.net/project/downloading.php?groupname=notepad-plus&filename=npp.5.1.3.Installer.exe&use_mirror=ufpr

Se você usa Windows Vista (Haja Coragem!!)
Crie o arquivo resolv.conf em %systemroot%\System32\Drivers\Etc, onde %systemroot% é a pasta de instalação do Windows.
Ex:
c:\windows\System32\Drivers\Etc\resolv.conf
Dentro do resolv.conf coloque apenas o ip do seu servidor DNS da seguinte forma:
nameserver 192.168.0.1
Teste com o comando dig www.uol.com.br +noall +answer e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120

Se você usa o Windows XP, Windows 2000 ou 2003 Server
Abra o arquivo que resolv.conf que está na pasta c:\dig e substitua o 198.80.55.1 pelo ip do seu servidor DNS.

Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120

Caso não funcione, apague o conteúdo do arquivo, deixe ele em branco.
Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:

www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120

Caso não funcione
Crie o arquivo resolv.conf em %systemroot%\System32\Drivers\Etc, onde %systemroot% é a pasta de instalação do Windows.
Ex:
c:\windows\System32\Drivers\Etc\resolv.conf
Dentro do resolv.conf coloque apenas o ip do seu servidor DNS da seguinte forma:
nameserver 192.168.0.1
Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:

www.uol.com.br. 48 IN A 200.221.2.45 www.uol.com.br. 48 IN A 200.98.249.120

Obs: O Artigo vai trazer uma série de comandos com resultados e explicações. No fim do artigo, vou colocar somente os comandos (para os mais apressadinhos).

Consulta simples:
# dig www.dailson.com.br

 O Resultado:
dailson@dailson:~/site/copias$ dig dailson.com.br
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61275
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;dailson.com.br.                        IN      A

;; ANSWER SECTION:
dailson.com.br.         486     IN      A       208.98.47.3

;; AUTHORITY SECTION:
dailson.com.br.         486     IN      NS      ns5.dsgx.org.
dailson.com.br.         486     IN      NS      ns4.dsgx.org.

;; ADDITIONAL SECTION:
ns4.dsgx.org.           21641   IN      A       208.98.47.5
ns5.dsgx.org.           21641   IN      A       208.98.47.6

;; Query time: 4 msec
;; SERVER: 192.168.20.1#53(192.168.20.1)
;; WHEN: Fri Nov 21 12:22:39 2008
;; MSG SIZE  rcvd: 124



# dig dailson.com.br +noall +answer

A Resposta sem mais delongas é:
dailson.com.br. 179 IN A 208.98.47.3

O que podemos fazer o com DIG?

Quero saber, quem são os servidores de nomes do yahoo

# dig yahoo.com

;; QUESTION SECTION:
;yahoo.com.                     IN      A

;; ANSWER SECTION:
yahoo.com.              21558   IN      A       68.180.206.184
yahoo.com.              21558   IN      A       206.190.60.37

;; AUTHORITY SECTION:
yahoo.com.              558     IN      NS      ns4.yahoo.com.
yahoo.com.              558     IN      NS      ns5.yahoo.com.
yahoo.com.              558     IN      NS      ns6.yahoo.com.
yahoo.com.              558     IN      NS      ns8.yahoo.com.
yahoo.com.              558     IN      NS      ns1.yahoo.com.
yahoo.com.              558     IN      NS      ns2.yahoo.com.
yahoo.com.              558     IN      NS      ns3.yahoo.com.

;; ADDITIONAL SECTION:
ns1.yahoo.com.          70933   IN      A       68.180.131.16
ns2.yahoo.com.          69243   IN      A       68.142.255.16
ns3.yahoo.com.          69243   IN      A       217.12.4.104
ns5.yahoo.com.          69243   IN      A       119.160.247.124
ns6.yahoo.com.          75765   IN      A       202.43.223.170
ns8.yahoo.com.          75765   IN      A       202.165.104.22

Quero saber quem são os servidores de email do yahoo


# dig yahoo.com MX

;; QUESTION SECTION:
;yahoo.com.                     IN      MX

;; ANSWER SECTION:
yahoo.com.              7198    IN      MX      1 g.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 a.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 b.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 c.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 d.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 e.mx.mail.yahoo.com.
yahoo.com.              7198    IN      MX      1 f.mx.mail.yahoo.com.

;; AUTHORITY SECTION:
yahoo.com.              488     IN      NS      ns3.yahoo.com.
yahoo.com.              488     IN      NS      ns4.yahoo.com.
yahoo.com.              488     IN      NS      ns5.yahoo.com.
yahoo.com.              488     IN      NS      ns6.yahoo.com.
yahoo.com.              488     IN      NS      ns8.yahoo.com.
yahoo.com.              488     IN      NS      ns1.yahoo.com.
yahoo.com.              488     IN      NS      ns2.yahoo.com.

;; ADDITIONAL SECTION:
a.mx.mail.yahoo.com.    1798    IN      A       67.195.168.31
b.mx.mail.yahoo.com.    1798    IN      A       66.196.97.250
c.mx.mail.yahoo.com.    1798    IN      A       216.39.53.3
c.mx.mail.yahoo.com.    1798    IN      A       216.39.53.2
d.mx.mail.yahoo.com.    1798    IN      A       66.196.82.7
e.mx.mail.yahoo.com.    1798    IN      A       216.39.53.1
f.mx.mail.yahoo.com.    1798    IN      A       209.191.88.247
f.mx.mail.yahoo.com.    1798    IN      A       68.142.202.247
g.mx.mail.yahoo.com.    1798    IN      A       209.191.118.103
g.mx.mail.yahoo.com.    1798    IN      A       206.190.53.191
ns1.yahoo.com.          70863   IN      A       68.180.131.16
ns2.yahoo.com.          69173   IN      A       68.142.255.16
ns3.yahoo.com.          69173   IN      A       217.12.4.104
ns5.yahoo.com.          69173   IN      A       119.160.247.124
 

Para saber quem tem autoridade sobre o domínio yahoo.com (de forma simplificada)

# dig yahoo.com NS +noall +answer

yahoo.com.              32      IN      NS      ns6.yahoo.com.
yahoo.com.              32      IN      NS      ns8.yahoo.com.
yahoo.com.              32      IN      NS      ns1.yahoo.com.
yahoo.com.              32      IN      NS      ns2.yahoo.com.
yahoo.com.              32      IN      NS      ns3.yahoo.com.
yahoo.com.              32      IN      NS      ns4.yahoo.com.
yahoo.com.              32      IN      NS      ns5.yahoo.com.
 

Veja que só foi listado os nameservers

Agora só os servidores de email


# dig yahoo.com MX +noall +answer

yahoo.com.              6716    IN      MX      1 f.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 g.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 a.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 b.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 c.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 d.mx.mail.yahoo.com.
yahoo.com.              6716    IN      MX      1 e.mx.mail.yahoo.com.
 

Agora uma consulta generalizada, vamos pedir para o servidor listar tudo:

# dig yahoo.com ANY +noall +answer

yahoo.com.              172792  IN      NS      ns3.yahoo.com.
yahoo.com.              172792  IN      NS      ns4.yahoo.com.
yahoo.com.              172792  IN      NS      ns5.yahoo.com.
yahoo.com.              172792  IN      NS      ns1.yahoo.com.
yahoo.com.              172792  IN      NS      ns2.yahoo.com.
yahoo.com.              6668    IN      MX      1 e.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 f.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 g.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 a.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 b.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 c.mx.mail.yahoo.com.
yahoo.com.              6668    IN      MX      1 d.mx.mail.yahoo.com.
yahoo.com.              20958   IN      A       206.190.60.37
yahoo.com.              20958   IN      A       68.180.206.184
 

Ai você me diz que quer listar não só os NS (Name Server), A (Address) e servidores de email MX (Mail eXchange). Mas gostaria de ver toda a base de endereços do yahoo... Bom... isso só é possível se o administrador cochilou na configuração do DNS e deixou aberto. Mas você pode começar a tentar, e ver que tem alguns servidores ai que permitem isso.
Na verdade, para consultar, você tem que tentar fazer um XFER, uma transferência de zona, e se passar por um servidor DNS secundário.
No yahoo não funciona. O comando é o seguinte...

# dig yahoo.com AXFR

; <<>> DiG 9.4.1-P1.1 <<>> yahoo.com AXFR
;; global options:  printcmd
; Transfer failed.

ou ainda você pode tentar se passar pelo próprio yahoo.com, dizendo que é o próprio servidor secundário, dessa forma;


# dig -t AXFR yahoo.com @ns2.yahoo.com
# dig -t AXFR yahoo.com @ns3.yahoo.com
# dig -t AXFR yahoo.com @ns4.yahoo.com
# dig -t AXFR yahoo.com @ns5.yahoo.com
 

eja que ele não permitiu, mas achei um que vacilou e deixou toda a base
Teste você mesmo:

# dig -t axfr inter.net @ns02.eusc.inter.net

Mais um de bonus para vc ;)

# dig @luit.iitg.ernet.in iitg.ernet.in axfr

Listando os Servidores que já tem endereços IPV6 na sua base.

# dig yahoo.com AAAA

;; QUESTION SECTION:
;yahoo.com.                     IN      AAAA

;; AUTHORITY SECTION:
yahoo.com.              600     IN      SOA     ns1.yahoo.com. hostmaster.yahoo-inc.com. 2008112104 3600 300 1814400 600

;; Query time: 328 msec
;; SERVER: 192.168.20.1#53(192.168.20.1)
;; WHEN: Fri Nov 21 13:52:55 2008
;; MSG SIZE  rcvd: 88

 

Veja que não apareceu a sessão ANSWER (Resposta), ou seja o yahoo ainda não tem registros IPV6 abertos, e pesquisei em vários outros provedores como gmail.
Fui achar registros AAAA nos orgãos oficiais como iana e isc.

# dig iana.org AAAA

;; ANSWER SECTION:
iana.org.               600     IN      AAAA    2620:0:2d0:1::193

# dig isc.org AAAA

;; ANSWER SECTION:
isc.org.                3600    IN      AAAA    2001:4f8:0:2::d
 


De acordo com as páginas de manual a opção +multiline você obtem as respostas dos Registros SOA de modo detlhado, semelhante a maneira que você escreve os arquivos do bind, listando o serial, a atualização (refresh), a nova tentantiva de acesso (retry), a expiração registro e o tempo de vida da tabela (minimum)

# dig +nocmd dsgx.org any +multiline

;; ANSWER SECTION:
dsgx.org.               17600 IN A 208.98.47.2
dsgx.org.               300 IN MX 10 mail.dsgx.org.
dsgx.org.               300 IN SOA ns. root.dsgx.org. (
                                998        ; serial
                                10800      ; refresh (3 hours)
                                120        ; retry (2 minutes)
                                259200     ; expire (3 days)
                                86400      ; minimum (1 day)
                                )

 

Outro Exemplo:

# dig +nocmd og.edu any +multiline

;; AUTHORITY SECTION:
edu.                    10711 IN SOA L3.NSTLD.COM. NSTLD.VERISIGN-GRS.COM. (
                                2008112100 ; serial
                                1800       ; refresh (30 minutes)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )

 

Fazendo um Traceroute de DNS.

Essa é um ótimo comando. Ele exibe toda a rota que o DNS fez para conseguir o IP do nome desejado, semelhante ao comando traceroute.
Vejamos um exemplo:

# dig www.uol.com.br +trace

# dig www.uol.com.br +trace
; <<>> DiG 9.4.1-P1.1 <<>> www.uol.com.br +trace
;; global options:  printcmd
.                       341189  IN      NS      j.root-servers.net.
.                       341189  IN      NS      b.root-servers.net.
.                       341189  IN      NS      h.root-servers.net.
.                       341189  IN      NS      m.root-servers.net.
.                       341189  IN      NS      l.root-servers.net.
.                       341189  IN      NS      f.root-servers.net.
.                       341189  IN      NS      k.root-servers.net.
.                       341189  IN      NS      g.root-servers.net.
.                       341189  IN      NS      d.root-servers.net.
.                       341189  IN      NS      e.root-servers.net.
.                       341189  IN      NS      c.root-servers.net.
.                       341189  IN      NS      i.root-servers.net.
.                       341189  IN      NS      a.root-servers.net.
;; Received 500 bytes from 192.168.20.1#53(192.168.20.1) in 5 ms

br.                     172800  IN      NS      C.DNS.br.
br.                     172800  IN      NS      A.DNS.br.
br.                     172800  IN      NS      D.DNS.br.
br.                     172800  IN      NS      B.DNS.br.
br.                     172800  IN      NS      F.DNS.br.
br.                     172800  IN      NS      E.DNS.br.
;; Received 284 bytes from 192.33.4.12#53(c.root-servers.net) in 312 ms

uol.com.br.             86400   IN      NS      thomas.uol.com.br.
uol.com.br.             86400   IN      NS      eliot.uol.com.br.
uol.com.br.             86400   IN      NS      charles.uol.com.br.
uol.com.br.             86400   IN      NS      borges.uol.com.br.
;; Received 180 bytes from 200.219.159.10#53(F.DNS.br) in 518 ms

www.uol.com.br.         300     IN      A       200.98.249.120
www.uol.com.br.         300     IN      A       200.221.2.45
uol.com.br.             3600    IN      NS      borges.uol.com.br.
uol.com.br.             3600    IN      NS      eliot.uol.com.br.
;; Received 137 bytes from 200.98.255.99#53(charles.uol.com.br) in 199 ms


Veja que a rota começou pelos servidores raizes, que repassou para os servidores do registro.br e depois foi repassado aos servidores do UOL. Faça vários testes, você verá que realmente o TCP/IP é um protocolo e tanto!

Descobrindo as propriedades do SOA de um Domínio.

Este comando exibe as propriedades de quem tem autoridade sobre um dominio (SOA).

# dig uol.com.br +nssearch

# dig uol.com.br +nssearch

SOA eliot.uol.com.br. root.uol.com.br. 2009010601 7200 3600 432000 3600 from server eliot.uol.com.br in 210 ms.
SOA eliot.uol.com.br. root.uol.com.br. 2009010601 7200 3600 432000 3600 from server borges.uol.com.br in 175 ms.


Descobrindo se seu servidor DNS está vulnerável.
Para saber se seu servidor DNS está vulnerável, execute o seguinte comando:

# dig +short @SeuServidorDNS porttest.dns-oarc.net TXT

Você pode testar, no seu próprio servidor DNS, desta forma:

# dig +short @127.0.0.1 porttest.dns-oarc.net TXT
porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"200.xxx.xx.xx is POOR: 26 queries in 5.0 seconds from 1 ports with std dev 0"

Veja que o resultado do servidor DNS é POOR, ou seja, muito ruim! E seu servidor DNS está vulnerável a ataques.

Porém se o resultado for como este abaixo:

porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"200.XXX.XXX.XXX is GREAT: 32 queries in 57.7 seconds from 32 ports with std dev 5625″

Fique tranquilo, você está protegido, pelo menos por enquanto...

Resumo dos Comandos Utilizados no tutorial:

Consulta completa:
# dig www.dailson.com.br

Consulta simplificada:
# dig dailson.com.br +noall +answer

Consulta aos servidores de Nomes do Yahoo
# dig yahoo.com

Quero saber quem são os servidores de email do yahoo
# dig yahoo.com MX

Para saber quem tem autoridade sobre o domínio yahoo.com (de forma simplificada)
# dig yahoo.com NS +noall +answer

Agora só os servidores de email
# dig yahoo.com MX +noall +answer

Agora uma consulta generalizada, vamos pedir para o servidor listar tudo:
# dig yahoo.com ANY +noall +answer
# dig yahoo.com AXFR
# dig -t AXFR yahoo.com @ns2.yahoo.com
# dig -t AXFR yahoo.com @ns3.yahoo.com
# dig -t AXFR yahoo.com @ns4.yahoo.com
# dig -t AXFR yahoo.com @ns5.yahoo.com

Transferindo Zona:
# dig -t axfr inter.net @ns02.eusc.inter.net
# dig @luit.iitg.ernet.in iitg.ernet.in axfr

Listando os Servidores que já tem endereços IPV6 na sua base.
# dig yahoo.com AAAA
# dig iana.org AAAA
# dig isc.org AAAA

Trazendo o resultado no formato Bind
# dig +nocmd dsgx.org any +multiline
# dig +nocmd og.edu any +multiline

Fazendo um Traceroute de DNS.
# dig www.uol.com.br +trace

Descobrindo as propriedades do SOA de um Domínio.
# dig uol.com.br +nssearch

Referencias:

http://hostlibrary.com/HowtocheckyourDNSrecordswithdig
http://www.madboa.com/geek/dig/
http://members.shaw.ca/nicholas.fong/dig/
http://serghei.net/windows/dig/
http://articles.techrepublic.com.com/5100-10878_11-5032892.html
  

2 comentários: