Fortalecendo o DNS com BIND9: Como Prevenir Manipulações de Domínios
O BIND9 (Berkeley Internet Name Domain) é um servidor de nomes de domínio (DNS) de código aberto, altamente eficiente e amplamente utilizado. Sua principal função é traduzir nomes de domínio legíveis por humanos (como www.exemplo.com) para endereços IP numéricos, permitindo que os computadores se comuniquem entre si na rede.
Requisitos
- Acesso root ao servidor.
- Ter o bind instalado (preferencialmente recém instalado)
Filtragem de DNS no BIND9
O BIND9 permite a criação de listas de domínios bloqueados, uma solução eficaz para impedir o registro de nomes associados a atividades maliciosas. A filtragem de domínios é essencial para proteger o servidor contra ataques como DNS Hijacking e DNS Spoofing, onde cibercriminosos manipulam registros DNS para redirecionar tráfego para sites falsos.
Como ocorre a manipulação de DNS?
A manipulação de DNS envolve a criação de registros falsos para domínios legítimos, redirecionando vítimas para sites fraudulentos. Isso pode ser feito de diversas formas, como:
- Alteração no arquivo de hosts: O atacante modifica o arquivo de hosts da vítima para apontar um domínio legítimo para o IP de um servidor malicioso.
- Manipulação via modem ou roteador: Modificando as configurações do modem, o atacante pode afetar toda a rede, redirecionando qualquer dispositivo conectado.
Exemplo:
Se um servidor tem o IP 192.168.0.1 e a zona DNS para coca-cola.com.br está configurada, um atacante pode alterar o arquivo de hosts da vítima para redirecionar coca-cola.com.br para 192.168.0.1. Isso faria com que a vítima acessasse um site falso no lugar do verdadeiro.
Consequências da manipulação de DNS
A manipulação de DNS pode resultar em diversas ameaças, como:
- Phishing: Roubo de dados sensíveis, como credenciais de login e informações bancárias.
- Coleta de dados: O atacante pode coletar cookies, histórico de navegação e informações do sistema.
- Malware: O site falso pode instalar malware no dispositivo da vítima.
Proteção contra Manipulação de DNS
Para proteger o servidor de DNS contra esses ataques, podemos configurar uma zona de domínios bloqueados no BIND9. Dessa forma, quando um domínio malicioso é tentado adicionar ao servidor, o BIND9 bloqueará ou ignorará automaticamente a solicitação.
Passos para Configuração
1. Acesse o diretório do BIND
Entre no diretório onde o BIND9 está instalado:
cd /etc/bind
(Não se esqueça de ajustar o caminho conforme sua distribuição, caso necessário.)
2. Crie um diretório para as zonas
Dentro do diretório bind, crie uma pasta chamada zones:
mkdir zones
3. Crie o arquivo de domínios bloqueados
No diretório zones, crie o arquivo blockeddomains.db:
touch zones/blockeddomains.db
4. Edite o arquivo blockeddomains.db
Abra o arquivo blockeddomains.db para edição:
nano /etc/bind/zones/blockeddomains.db
Adicione os seguintes registros, todos apontando para o IP local do servidor (127.0.0.1):
;
; BIND data file for blockeddomains.db
;
; This file is used to block create the DNS zone for common domains in Bind9
; Please don't touch if you dont know whats going on here
; Bind9 filtering here https://bind9.readthedocs.io/en/v9.16.20/reference.html
$TTL 3600
@ IN SOA ns01.HOSTNAME.local. root.HOSTNAME.local. (
2014052101 ; Serial
7200 ; Refresh
120 ; Retry
2419200 ; Expire
3600) ; Default TTL
;
@ IN NS ns1.HOSTNAME.local. ; Definição do primeiro servidor NS
@ IN NS ns2.HOSTNAME.local. ; Definição do segundo servidor NS
;
A 127.0.0.1 ; localhost
* IN A 127.0.0.1 ; localhost
; AAAA ::1 ; IPv6 localhost
;* IN AAAA ::1 ; IPv6 localhost
mail IN A 127.0.0.1
ftp IN A 127.0.0.1
webmail IN A 127.0.0.1
panel IN A 127.0.0.1
www IN A 127.0.0.1
ns1 IN A 127.0.0.1
ns2 IN A 127.0.0.1
Substitua HOSTNAME pelo nome do seu servidor, como SRV01.
5. Defina as permissões corretamente
Certifique-se de que o diretório zones e o arquivo blockeddomains.db têm permissões de leitura e escrita, e são de propriedade do usuário root.bind.
6. Crie o arquivo de ACL de domínios bloqueados
Agora, crie o arquivo blocked_domain_acl.conf:
touch /etc/bind/blocked_domain_acl.conf
Adicione o seguinte conteúdo:
zone "DOMAIN.com.br" { type master; file "/etc/bind/zones/blockeddomains.db"; };
Substitua DOMAIN.com.br pelo domínio que deseja bloquear. Para bloquear múltiplos domínios, adicione uma linha para cada um deles.
7. Edite o arquivo named.conf
Abra o arquivo named.conf e adicione a seguinte linha para incluir o arquivo de ACL de domínios bloqueados:
include "/etc/bind/blocked_domain_acl.conf";
8. Reinicie o BIND9
Após configurar os arquivos, reinicie o BIND9 para aplicar as mudanças:
service bind9 restart
9. Verifique o status do BIND9
Certifique-se de que o serviço está funcionando corretamente:
service bind9 status
Se tudo estiver funcionando, o BIND9 estará ativo e configurado para bloquear domínios maliciosos.
Teste de Funcionalidade
Para testar, tente adicionar um domínio da lista de bloqueio via painel de controle, como o Hestia, cPanel ou manualmente e veja se o BIND9 bloqueia a solicitação.
Verificando a autoridade do domínio
Use o comando dig para verificar se o domínio está sendo bloqueado corretamente:
dig +short @ip_do_servidor site_alvo.com.br
Se o domínio for bloqueado corretamente, o dig não retornará nenhum resultado. Para um domínio válido, o comando retornará a autoridade da zona.
Automatizando o Processo
Você pode automatizar a adição de domínios à lista de bloqueio utilizando um script shell. Acesse o link fornecido para o script de automatização.
https://github.com/percioandrade/bindfilter
Com essa configuração, seu servidor de DNS estará mais seguro contra ataques de manipulação, como DNS Hijacking e DNS Spoofing.