在 DNSmasq 中跳过对自身地址的查询

在 DNSmasq 中跳过对自身地址的查询

使用 DNSmasq 服务器的日志调试它时,我发现了很多:

dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP
dnsmasq: query[ANY] . from RANDOM-IP

所有合法查询似乎都更加具体,例如:

dnsmasq: query[A] specificdomain.com from KNOWN-IP

编辑:这是不是旨在作为公共 DNS 服务

我们要创建一个白名单 DNS 过滤器,它应该仅有的回答指定域的列表。典型的放大攻击只会影响我们的服务器,不会影响其他人。我们只是想要一个更干净的日志,以便能够更好地运行。

预期操作是:

  • 客户端使用此 DNS 进行互联网连接。
  • 客户端请求域名解析
  • 如果域名在白名单中,我们会进行解析,如果不在,我们不会回复。

我们如何实现这一点?仅处理符合白名单的请求,丢弃其他请求。

答案1

. ANY是一个众所周知的查询,它请求缓存中与 DNS 根节点(又称 .)相关的所有记录类型。如果数量很大,这肯定是恶意行为的指标。不幸的是,这些查询几乎肯定是 UDP,源 IP 是受害者

需要通过确定恶意实体为什么能够向您的服务器发出这些请求来解决此问题,并且不是通过阻止查询本身。攻击者可以同样轻松地利用已知会返回大量结果集的任意数量的请求,其中一些请求根本不使用记录类型 ANY。

在大多数情况下,这表明你正在运行开放解析器。您的首要任务应该是确认这一点并消除安全漏洞。如果您不是开放解析器,则您的网络上有一个受感染的设备。这变得更加难以追踪,因为您需要一次一跳地将 MAC 地址追踪回原始设备。

答案2

尽管正如 Andrew 所指出的,公共 IP 中的 DNS 服务存在许多安全问题,但解决方案是以下 iptables 规则:

iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|0000ff|" --algo bm -j DROP

这明确地删除了该查询。

相关内容