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
Marcadores:
bind,
bind9,
dig,
howto dig,
howto nslookup,
nslookup,
test dns,
testar dns,
TUTORIAL,
tutorial dig
Assinar:
Postar comentários (Atom)
Muito massa Dailson! Valeu.
ResponderExcluirMuito bom o artigo gostei do Trace de DNS, não conhecia.
ResponderExcluirAbraços