No named.conf do meu servidor DNS, vejo
rate-limit {
responses-per-second 5;
window 5;
};
O que isso realmente significa? E isso pode causar problemas aos clientes DNS? Essa configuração é muito rígida?
No named.conf do meu servidor DNS, vejo
rate-limit {
responses-per-second 5;
window 5;
};
O que isso realmente significa? E isso pode causar problemas aos clientes DNS? Essa configuração é muito rígida?
Respostas:
Limita o número de respostas idênticas que um único cliente DNS pode obter em um segundo. A window 5
opçã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.
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 window
o limite por segundo. Esta mensagem de Vernon Schryver explica o comportamento do algoritmo em mais detalhes.
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-length
ou ipv6-prefix-length
conforme aplicável. Assim, se o ipv4-prefix-length
é de 24, e ambos 192.0.2.1
e 192.0.2.2
está 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.
window
complica as coisas um pouco mais ainda. É o número de segundos para os quais a cota pode ser depositada. Multiplicar window
e responses-per-second
fornecer 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:
IN NS example.net.
. 25 serão permitidos e os 75 restantes serão ignorados.IN A nonexistent.example.net.
. 25 serão permitidos e os 75 restantes serão ignorados.IN MX nonexistent-domain.example.net.
Será ignorado, pois o limite para domínios inexistentes foi atingido.IN A example.net.
. Isso é permitido.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.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.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.
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.