绑定DNS速率限制和每秒响应数和窗口值


Answers:


7

它限制了单个DNS客户端在一秒钟内可以获得的相同响应的数量。该window 5选项允许5 * 5响应突发。

“完全相同的响应”和“单个DNS客户端”在这里不太明显,请阅读以下内容以获取更多信息:http ://web.archive.org/web/20140209100744/http: //ss.vix.su/~ vjs / rl-arm.html

通常,对速率进行限制是一件好事-如果某天有DOS攻击,可能会对您有所帮助。在大多数情况下,默认值应为OK。


第一段中有关“爆发”的部分是错误的。window仅用于控制跟踪发送给每个“单个DNS客户端”的“相同响应”的时间范围。在BIND 9管理员参考手册状态:在[客户RRL]帐户不能超过每秒的限制变得更积极或负大于window次每秒的限制。 Vernon Schryver的此消息更详细地说明了算法的行为。
肯普纽2015年

11

您应该阅读BIND 9.9的管理员参考手册

基本上,responses-per-second是每秒可以发送到一个单个目标的相同答复的数量。定义很棘手。

单个目标是一个网络地址,其大小在中配置ipv4-prefix-lengthipv6-prefix-length适用。所以,如果ipv4-prefix-length是24,并且都192.0.2.1192.0.2.2正在查询的DNS服务器,它们将共享此配额,只能送他们两人之间如此多的疑问。

相同的答复是针对特定RR类型的查询,以查询特定的存在名称或不存在的名称。以下查询都是不同的:

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

但是,以下所有查询都是相同的(假设nonexistent.domain.example.net.等。不辜负其名称):

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

window使事情变得更加复杂。它是可以存储配额的秒数。乘以windowresponses-per-second给出最大值,通过该最大值,任何配额都可以是正数,或更确切地说,是突发容量。

举个例子:

您是的非递归权威域名服务器example.net.。想象一下,在过去的10秒钟内根本看不到DNS流量,问题中的配置在全球范围内适用。依次发生以下事件:

  1. 主机198.51.100.1向发送100个查询IN NS example.net.。允许25个,其余75​​个将被忽略。
  2. 主机198.51.100.1向发送100个查询IN A nonexistent.example.net.。允许25个,其余75​​个将被忽略。
  3. 主机198.51.100.1发送1个查询,IN MX nonexistent-domain.example.net. 因为已达到不存在域的限制,它将被忽略。
  4. 主机198.51.100.1发送1个查询IN A example.net.。这是允许的。
  5. 主机192.0.2.1至192.0.2.50各自发送一个查询IN NS example.net.。其中25个得到回复,其余25个被忽略;198.51.100.0/24的配额不适用于这些主机,但它们共享192.0.2.0/24的配额。
  6. 一秒钟过去
  7. 主机192.0.2.26至192.0.2.50重复其查询IN NS example.net.。其中5个得到答复,其余20个被忽略,因为配额仅每秒增加5个查询。

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 

IPtables也可以正常工作。如果发现攻击,将流量完全排除在服务之外。


太棒了!我什至没有想到iptables。但是,这在英语中是什么意思。我可以猜测...如果某些IP发送11个或更多DNS查询会阻止它们60秒钟,对吗?
Red Cricket

不,翻译是:在60秒的时间内接受不超过11​​个数据包,丢弃所有其他数据包。
drcelus

1
我遇到了问题,尝试应用不错的解决方案后,我遇到了一个错误,例如:“ iptables:应用防火墙规则:iptables-restore v1.4.7:-c数据包计数器不为数字错误在第17行发生错误”第17行是第一个你们之一。我应该加载一些特定的模块?

第一行应如下所示:iptables -A INPUT -p udp -m udp --dport 53 -m最近--set --name dnslimit --rsource

2
我不会说它“同样有效”。此速率不受任何限制,如果实际上是相同的查询被垃圾邮件或不同的查询,则后者很可能是合法流量。
哈坎·林奎斯特

0

我认为限制速率不是一个好主意,问问自己:您是否也限制Web服务器的响应速率?为什么您认为DNS响应不如Web服务器响应重要?
即使您设置了速率限制,5 req / sec的声音也非常低。


2
在某些情况下,限制网站服务器响应的速率可能不是一个好主意。但是DNS主要是UDP,很容易被欺骗(与http不同),因此速率限制是必要的,以防止名称服务器被用于放大或反射攻击。
arjarj 2013年

如果他不是一个开放的解决者,那么我认为它不是反射/放大攻击的好目标,但是您是正确的。5个请求/秒,我仍然认为太低了。
桑多·马顿

1
他没有指定这是递归服务器还是权威服务器。对于权威服务器,速率限制仍然很重要。而且,它不仅是每秒5个请求,而且是每秒5个相同的答案,甚至在生成不同答案时也可以得到纠正。通常,绑定时每秒5个请求的设置是可以的(因为合法服务器还会在两者之间询问其他问题)。
arjarj 2013年

好的,我检查了文档,并发现速率限制是每个客户端设置而不是每个服务器的设置。我的印象是,如果绑定速度为5req / s,绑定将被限制为总计。每个客户端5个请求/秒就可以了。
桑多·马顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.