如何防止绑定响应欺骗IP地址?

我们都知道开放式的parsing器,这个问题对于相反的情况是种好处。 我有一个被locking到某些CIDR的DNS服务器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; }; 

这工作。

但是,它不会阻止允许范围内的受感染主机发送欺骗(最常见的ANYtypes)请求。 这些问题已得到解决,并且响应仍然发送到“请求”IP地址的欺骗IP(通常是攻击者的目标)。

如何防止DNS服务器parsing信任范围外请求的域? 那甚至是应该做的事情?

这不是您应该尝试在服务层解决的问题。

  • 不要允许离网stream量向您的DNS侦听器发送入站请求。
  • 执行客户生成的数据包的源地址validation(如果适用)。 这可以防止来自networking内部的放大攻击。

这些问题的根源在于坐在你面前的networking拓扑的devise。 尝试从服务器本身解决这些问题是一场失败的战斗。

问题中的configuration摘要中的注释引用您的服务器以权威方式回答某些区域。 对于攻击者滥用授权服务器的情况,configuration响应速率限制来缓解这种情况是有意义的。

但是,在滥用启用了recursion的服务器的情况下,通过结合入口过滤来lockingrecursion访问您自己的networking是阻止这种情况的最好方法。 (正如@ Andrew-B所build议的那样)

关于BIND,尤其重要的是理解不同的allow-*configuration指令在重写其中一个或多个时是如何相互作用的(没有这种理解,并不明显,例如,重写allow-query如何影响其他指令,例如allow-recursion ) 。

您可以采取多种方法。 你可能想把它们结合起来。

  • 使用分割DNSconfiguration外部区域拒绝recursion。 拆分DNS将允许您在外部提供非recursion权威DNS服务器,并在内部提供全function的recursionDNS服务器。 考虑logging失败的请求。
  • 阻止不需要的networking向您的服务器发送请求。 (端口53 UDP和TCP)。这可以在外部防火墙,或者在包括服务器的防火墙Debian在内的一些系统上完成。 考虑将可以查询您的服务器的CIDR限制为应该支持的那些CIDR。
  • 使用fail2bandynamic阻止请求networking。

从你的问题看来,你有一些计算机感染僵尸networking软件。 识别和清理这些系统非常重要。 这超出了这个问题的范围。 如果您的路由器支持它,请考虑限制可能发起请求的IP地址。