Vincular limite de taxa e valores DNS para respostas por segundo e janela

Respostas:

7

Limita o número de respostas idênticas que um único cliente DNS pode obter em um segundo. A window 5opção permite uma explosão de 5 * 5 respostas.

"Respostas idênticas" e "cliente DNS único" são termos pouco óbvios aqui, leia isto para mais informações: http://web.archive.org/web/20140209100744/http://ss.vix.su/~ vjs / rl-arm.html .

Geralmente, é bom limitar a taxa - pode ajudá-lo em caso de ataque do DOS algum dia. Os padrões devem estar OK na maioria dos casos.

skarap
fonte
A parte sobre "explosão" no primeiro parágrafo está errada. windowé usado apenas para controlar o período de tempo no qual são rastreadas "respostas idênticas" enviadas para cada "cliente DNS único". O Manual de Referência do Administrador do BIND 9 afirma: A conta [RRL do cliente] não pode se tornar mais positiva que o limite por segundo ou mais negativa do que windowo limite por segundo. Esta mensagem de Vernon Schryver explica o comportamento do algoritmo em mais detalhes.
Kempniu #
11

Você deve ler o manual de referência do administrador para o BIND 9.9 .

Basicamente, responses-per-secondé o número de respostas idênticas que podem ser enviadas para um único destino, por segundo. As definições são complicadas.

Um único destino é um bloco de endereços de rede, do tamanho configurado ipv4-prefix-lengthou ipv6-prefix-lengthconforme aplicável. Assim, se o ipv4-prefix-lengthé de 24, e ambos 192.0.2.1e 192.0.2.2está consultando o servidor DNS, eles vão compartilhar essa quota e só pode enviar tantas consultas entre os dois.

Respostas idênticas são respostas a consultas para um determinado RRtype para um nome existente específico ou para um nome inexistente. As seguintes consultas são todas distintas:

IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.

No entanto, todas as consultas a seguir são idênticas (supondo que nonexistent.domain.example.net.etc. correspondam aos seus nomes):

IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.

windowcomplica as coisas um pouco mais ainda. É o número de segundos para os quais a cota pode ser depositada. Multiplicar windowe responses-per-secondfornecer o máximo em que qualquer cota pode ser positiva ou, em termos mais básicos, a capacidade de burst.

Para dar um exemplo geral:

Você é o servidor de nomes autoritativo e não recorrente example.net.. Imagine que nenhum tráfego DNS tenha sido visto nos últimos 10 segundos, e a configuração na pergunta se aplica globalmente. Os seguintes eventos ocorrem sequencialmente:

  1. O host 198.51.100.1 envia 100 consultas para IN NS example.net.. 25 serão permitidos e os 75 restantes serão ignorados.
  2. O host 198.51.100.1 envia 100 consultas para IN A nonexistent.example.net.. 25 serão permitidos e os 75 restantes serão ignorados.
  3. O host 198.51.100.1 envia 1 consulta para IN MX nonexistent-domain.example.net. Será ignorado, pois o limite para domínios inexistentes foi atingido.
  4. O host 198.51.100.1 envia 1 consulta para IN A example.net.. Isso é permitido.
  5. Cada um dos hosts 192.0.2.1 a 192.0.2.50 envia uma única consulta IN NS example.net.. 25 deles recebem respostas e os 25 restantes são ignorados; a cota para 198.51.100.0/24 não se aplica a esses hosts, mas eles compartilham a cota para 192.0.2.0/24.
  6. Um segundo passa
  7. Os hosts 192.0.2.26 a 192.0.2.50 repetem sua consulta IN NS example.net.. 5 deles recebem respostas e os 20 restantes são ignorados, já que a cota é reabastecida apenas por 5 consultas por segundo.
Falcon Momot
fonte
4
iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP 

As tabelas IP também podem funcionar. Mantém o tráfego fora do serviço completamente se um ataque for encontrado.

Tiffany Walker
fonte
impressionante! Eu nem pensei em iptables. Mas o que isso significa em inglês. Eu posso adivinhar ... se algum IP envia 11 ou mais consultas DNS bloqueá-los por 60 segundos, certo?
Cricket
Não, a tradução é: não aceite mais de 11 pacotes em um período de 60 segundos, descarte todos os outros pacotes.
drcelus
1
Eu tive um problema, depois de tentar aplicar sua boa solução, tive um erro como: "iptables: Aplicando regras de firewall: iptables-restore v1.4.7: -c contador de pacotes não numérico Erro na linha: 17" A linha 17 é a primeira um dos seus. Eu deveria carregar algum módulo específico?
primeira linha deve ser a seguinte: iptables -A ENTRADA -p udp -m udp --dport 53 -m recente --set --name dnslimit --rsource
2
Eu não diria que dizer que "funciona tão bem". Essa taxa limita-se sem a menor ideia de que, na verdade, a mesma consulta está sendo enviada por spam ou consultas diferentes; a última seria muito provavelmente um tráfego legítimo.
Håkan Lindqvist
0

Não acho que seja uma boa ideia avaliar o limite, pergunte a si mesmo: você avalia o limite das respostas do servidor da web também? Por que você acha que as respostas DNS são menos importantes que as respostas dos servidores da web?
E mesmo se você classificar o limite, esses 5 req / s parecerão muito baixos.

Sandor Marton
fonte
2
As respostas do servidor da web com limitação de ratinhos podem não ser uma má idéia em certos casos. Mas o DNS é principalmente UDP, que é facilmente falsificado (ao contrário do http), portanto, a limitação da taxa é necessária para impedir que os servidores de nomes sejam usados ​​em ataques de amplificação ou reflexão.
Arjarj
Se ele não é um resolvedor aberto, então não acho que seja um bom alvo para ataques de reflexão / amplificação, mas você tem razão. 5 req / seg ainda acho muito baixo.
Sandor Marton
1
Ele não especifica se é um servidor recursivo ou autorizado. Para um servidor autoritário, a limitação da taxa ainda é importante. Além disso, não são apenas 5 solicitações por segundo, são 5 das mesmas respostas por segundo e até corrigidas se você gerar respostas diferentes. Geralmente, a configuração de 5 solicitações por segundo é boa ao ligar (porque um servidor legítimo também faz outras perguntas).
Arjarj
Ok, verifiquei os documentos e, como vejo, o limite de taxa é uma configuração por cliente e não por servidor. Fiquei com a impressão de que o vínculo seria limitado a um total se 5req / s. Por cliente, 5req / seg está ok.
Sandor Marton