Como evitar que o Bind responda a endereços IP falsificados?

6

Todos nós sabemos sobre resolvedores abertos, esta questão é meio que para a situação inversa. Eu tenho um servidor DNS que está bloqueado para certos CIDRs acl trusted {[..]

options {
[..]
allow-query {
            // Accept queries from our "trusted" ACL.  We will
            // allow anyone to query our master zones below.
            // This prevents us from becoming a free DNS server
            // to the masses.
            trusted;
};

Isso funciona.

No entanto, ele não impede que os hosts infectados dentro dos intervalos permitidos enviem solicitações falsificadas (geralmente, digite ANY). Esses são resolvidos e a resposta ainda é enviada para o IP falsificado que "solicitou" (que geralmente é o alvo dos atacantes).

Como evitar que o servidor DNS resolva domínios solicitados fora dos intervalos confiáveis? Isso é algo que o bind deveria estar fazendo?

    
por Recct 11.04.2014 / 18:00

3 respostas

10

Este não é um problema que você deve estar tentando resolver na camada de serviço.

  • Não permita que o tráfego off-net faça solicitações de entrada para seus ouvintes de DNS.
  • Realize a validação do endereço de origem dos pacotes gerados por seus clientes (se aplicável). Isso evita ataques de amplificação originados de dentro da sua rede.

Esses problemas estão enraizados no design da topologia de rede à sua frente. É uma batalha perdida tentar resolver esses problemas do próprio servidor.

    
por 11.04.2014 / 18:11
2

Os comentários no trecho de configuração da pergunta referem-se a seus servidores respondendo autoritativamente para algumas zonas. Para um cenário em que o atacante abuse de um servidor autoritativo, faria sentido configurar Limitação da taxa de resposta para atenuar isso.

No caso de ataques que abusam de um servidor com a recursão ativada, bloquear o acesso recursivo à sua própria rede em combinação com a filtragem de ingresso é a melhor maneira de parar isso. (Como sugerido por @ Andrew-B.)

Em relação especificamente ao BIND, é essencial entender como os diferentes% As diretivas de configuraçãoallow-* interagem quando você substitui uma ou mais delas (sem esse entendimento não é tão óbvio como, por exemplo, substituir allow-query afeta outras diretivas, como allow-recursion ).

    
por 12.04.2014 / 03:30
2

Existem várias abordagens que você pode adotar. Você pode querer combiná-los.

  • Use o DNS dividido para configurar a zona externa para rejeitar a recursão. O DNS dividido permitirá que você forneça um servidor DNS autoritativo não recursivo externamente e um servidor DNS recursivo de funcionamento completo internamente. Considere registrar as solicitações com falha.
  • Impedir que redes indesejadas enviem solicitações para seus servidores. (Port 53 UDP e TCP.) Isso pode ser feito no firewall externo ou, em alguns sistemas, incluindo o Debian, o firewall do servidor. Considere limitar os CIDRs que podem consultar seu servidor com os que ele deve suportar.
  • Use fail2ban para bloquear dinamicamente as redes solicitantes.

Da sua pergunta, parece que você tem vários computadores infectados com o software botnet. É importante identificar e limpar esses sistemas. Isso está além do escopo desta questão. Se seus roteadores suportarem, considere limitar os endereços IP que podem originar solicitações.

    
por 12.04.2014 / 02:58