Boa tarde Jovens !
Sejam bem vindos(as) ao mini-curso sobre Uma análise do protocolo DNS e suas extensões, realizado no CEFET (Centro Federal Tecnológico de Goiás) UnU Descentralizada Inhumas/GO no dia 11/10/2008.
Programas necessários para o mini-curso:
-BIND (apt-get install bind9 – Servidor DNS)
-NMAP (apt-get install nmap – Sniffer de Rede)
Editor de texto utilizado vi ou gedit.
Lembrar que sempre ao executar um comando no GNU/Ubuntu, é necessário o uso do aplicativo sudo.
Para “ver” as configurações na prática, sempre é necessário reiniciar o servidor BIND.
Instalar o BIND
#sudo apt-get install bind9
Instalar o NMAP
#sudo apt-get install nmap
Verificar se o servidor Bind esta “escutando” na porta 53:
#sudo nmap -sT 10.0.1.40
Estrutura do Servidor BIND (Ubuntu/Debian)
O software bind, responsável pela execução do servidor DNS armazena os arquivos de configuração em:
/etc/bind/
Neste diretório existem vários arquivos, vejamos o que são cada um deles:
db.0 e db.255 = Arquivo de zona reversa para broadcast
db.127 = Arquivo de zona reversa para a rede 127.0.0.1
db.local = Arquivo de zona para a interface de loopack (127.0.0.1)
db.root = Arquivo de zona que contém os root-servers (servidores raizes).
named.conf = Arquivo de configuração de zonas
named.conf.options = Arquivo que especifica opções para o servidor DNS
zones.rfc1918 = Arquivo de zona reversa para endereços de rede privada RFC1918
named.conf.local = Arquivo que irá especificar a zona
rndc.key = Chave de controle utilizada para o rndc (Remote Daemon Control), que permite controlar um DNS remotamente.
Vamos, editar o arquivo named.conf.options para incluir a cláusula de não-recursividade, pois queremos apenas ser um servidor autoritativo.
#recursion no;
Escutar apenas na interface 10.0.1.0/16 e loopback
#listen-on {10.0.1.0/16; 127.0.0.1/32;}
Caso deseje também pode especificar a recursividade para somente alguns endereços, como o abaixo:
allow-recursion {127.0.0.1; 10.0.1.0/16;};
Em seguida, analisaremos se existe algum erro no arquivo de configuração
#named-checkconf named.conf.options
Agora, o servidor DNS já esta recebendo solicitações de clientes.
E agora o que faço para ver isso na prática?
Simples, iremos editar o arquivo de resolução de nomes do cliente, o resolver. Da seguinte forma:
#sudo vi /etc/resolv.conf
search simpoets.com.br
nameserver 10.0.1.40
Agora vamos testar, se estamos obtendo solicitações de cliente. Iremos executar o seguinte comando:
#nslookup
#www.netsolution.eti.br
Você verá o seguinte texto:
Non-authoritative answer:
www.netsolution.eti.br canonical name = netsolution.eti.br.
Name: netsolution.eti.br
Isto corresponde, que o servidor que iniciou a pesquia (no caso, o 10.0.1.40) não é autorizado a responder por esta zona(netsolution.eti.br). Para não receber esta mensagem, é necessário realizar a consulta partindo do servidor DNS da Net Solution.
Para iniciar a pesquisa partindo do NS da Net Solution, execute o comando abaixo, para saber qual é o NS da mesma.
#set type=ns
#netsolution.eti.br
Agora temos condição de iniciar a consulta do registro de recurso (RRset) CNAME www.netsolution.eti.br. Então vamos iniciar a pesquisa a partir do servidor DNS da Net Solution, através do comando abaixo:
#server ns1.superdns.com.br
#set type=cname
#www.netsolution.eti.br
Agora, iremos realizar a configuração da zona simpoets.com.br.
Vamos editar o arquivo named.conf.local, com o comando:
#sudo vi /etc/bind/named.conf.local
E inserir o seguinte conteúdo:
zone “simpoets.com.br” IN {
type master;
file “simpoets.hosts”;
allow-update {none;};
};
Por enquanto, estamos definindo apenas uma zona e a mesma é a principal e não será permitido atualização dinâmica do master (Dynamic DNS (DDNS)).
Verificar possíveis erros de sintaxe no arquivo de configuração:
#sudo named-checkconf named.conf.local
Agora iremos criar o arquivo simpoets.hosts em /var/cache/bind, mas porque? Devido inserirmos a cláusula directory no named.conf.options informando o diretório padrão do banco de dados DNS.
#sudo vi /var/cache/bind/simpoets.hosts
Inserir este conteúdo no arquivo simpoets.hosts
$TTL 3600
@ IN SOA ns1.simpoets.com.br. suporte.simpoets.com.br.(
2008101101;serial
1800 ;refresh
600 ;retry
2419200 ;expire
3600 ;default_ttl
)
@ IN NS ns1.simpoets.com.br.
@ IN NS ns2.simpoets.com.br.
@ IN A 10.0.1.40
ftp IN A 10.0.1.40
ns1 IN A 10.0.1.40
ns2 IN A 10.0.1.41
www IN CNAME simpoets.comm.br.
mail IN CNAME simpoets.com.br.
help IN CNAME simpoets.com.br.
Depois, verifique se o arquivo de zona não tem erro de sintaxe:
#named-checkzone zonename /var/cache/bind/simpoets.hosts
Agora vamos fazer a zona reversa do dominio simpoets.com.br
Vamos editar o arquivo named.conf.local, com o comando:
#sudo vi /etc/bind/named.conf.local
E inserir o seguinte conteúdo:
zone “1.0.10.in-addr.arpa” IN {
type master;
file “1.0.10.reverso”;
allow-update {none;};
};
Em seguida, teste o arquivo de configuração das zonas:
#named-checkconf named.conf.local
Agora vamos criar o arquivo da zona reverso da rede 10.0.1.0:
#sudo gedit /var/cache/bind/1.0.10.reverso
E inserir o seguinte conteúdo:
$TTL 3600
@ IN SOA ns1.simpoets.com.br. suporte.simpoets.com.br.(
2008101101;serial
1800 ;refresh
600 ;retry
2419200 ;expire
3600 ;default_ttl
)
@ IN NS ns1.simpoets.com.br.
@ IN NS ns2.simpoets.com.br.
40 IN PTR simpoets.com.br.
Em seguida, teste o arquivo da zona reversa:
named-checkzone zonename /var/cache/bind/1.0.10.reverso
Reinicie o Bind para ver as configurações na prática.
#sudo /etc/init.d/bind9 restart
Agora já temos um servidor DNS configurado e pronto para produção !
Lembrando que para utilizar um servidor DNS secundário, no arquivo de configuração da zona, é necessário especificar a cláusula allow-transfer e inserir o endereço IP do servidor secundário, como o exemplo abaixo.
#sudo vi /etc/bind/named.conf.local
E inserir o seguinte conteúdo:
zone “simpoets.com.br” IN {
type master;
file “simpoets.hosts”;
allow-update {none;};
allow-transfer {10.0.1.41;};
};
E no servidor secundário, as únicas observações que devem ser feitas são:
No arquivo named.conf.local é necessário especificar a transferência da zona,e informar que é um servidor secundário como mostra o exemplo abaixo:
#sudo vi /etc/bind/named.conf.local
E inserir o seguinte conteúdo:
zone “simpoets.com.br” IN {
type slave;
file “simpoets.hosts”;
allow-update {none;};
masters {10.0.1.40;};
};
No diretório /var/cache/dns onde fica armazenado o banco de dados DNS não é necessário existir nenhum arquivo, pois o servidor secundário irá buscar os arquivos de zona no servidor master.
Por enquanto, é so isso !
Abraços,
Paulo Renato
Networks & Security