Melhor maneira de proteger o DNS público contra invasores

3

Estou tendo um DNS público que desejo proteger contra algum tipo de invasor que esteja acessando meu servidor DNS a cada segundo com a mesma entrada de domínio. Eu faço isso no momento com base nas regras do iptables, mas eu gostaria de saber se existe um sistema automático que poderíamos usar para esse propósito. Eu tenho em mente o fail2ban para o http, existe alguma coisa lá fora para as consultas DNS?

Obrigado!

    
por drivard 20.12.2011 / 16:20

3 respostas

5

o fail2ban não é "para http", é uma estrutura para executar ações (como proibir IPs no firewall) com base em entradas de log. Aqui estão as opções de configuração relevantes do meu servidor DNS:

named.conf

logging {
        channel default_file {
                file "/var/log/named.log" size 10m;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category default{ default_file; };
};

jail.local

(arquivo de configuração do fail2ban)

[named-refused-bsd-ipfw]
enabled  = true
filter   = named-refused
action   = bsd-ipfw
logpath  = /var/named/var/log/named.log
maxretry = 20
bantime = 43200

Note que esta é uma caixa do FreeBSD usando o IPFW (firewall). Você desejará usar a ação iptables e nomear a regra adequadamente.

Você também pode precisar alterar os caminhos de log, dependendo da sua instalação. Note que no meu exemplo existem caminhos diferentes porque o BIND está sendo executado em uma cadeia (chrooted to /var/named ). Correr em uma prisão torna as coisas mais complicadas, mas não é ruim quando você se acostuma.

Você também deve configurar algum tipo de mecanismo de rotação de log para o arquivo de log.

newsyslog.conf

/var/log/named.log      bind:bind       644  7     *    $W6D0 J    /var/run/named/pid 1

Você também pode querer dar uma olhada em quem é, pode ser um resolvedor aberto (como o Google, 4.2.2.2-.4, etc). Bani-los não bane o verdadeiro "atacante". Você pode fazer uma pesquisa inversa no IP com algo como dig -x 4.2.2.4 e ver se isso ajuda.

    
por 20.12.2011 / 16:54
2

Para pacotes UDP, sugiro usar as funções limit ou hashlimit de iptables . Tenho a tendência de ter sucesso ao fazer com que os pacotes parem quando os rejeito usando --reject-with icmp-admin-prohibited. (experiência do servidor NTP).

Limitar a 10.000 por dia deve ultrapassar todos os casos de borda mais incomuns de usuários legítimos em sua interface externa, além de evitar que ocorra a ação de um por segundo.

    
por 20.12.2011 / 21:24
1

Se você estiver usando um provedor de servidor dedicado ou um intervalo de IPs recentemente adquirido, isso não é incomum.

Se o seu servidor DNS estiver configurado corretamente, ele poderá facilmente lidar com algumas consultas / segundo sem causar muito impacto no desempenho.

Colocar em prática algo para bloquear isso pode causar mais problemas do que resolver.

Contactar o proprietário do domínio

Em alguns casos em que isso era problemático, entrei em contato com o proprietário do domínio (verifique o seu Whois). Deixe-os saber sobre o problema - eles podem corrigi-lo para você.

Responda ao pedido

Em casos realmente difíceis, configurei registros e forneceu resultados. Como resultado, esse domínio foi roteado para um site selecionado. Enquanto isso está caminhando para o lado negro das coisas, o problema parou em 8 horas.

    
por 20.12.2011 / 21:01