Article image
Percio Andrade
Percio Andrade13/12/2024 01:38
Compartilhe

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:

    1. 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.
    2. 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.

    Compartilhe
    Comentários (0)