DNS DDOS 攻击 - 想了解日志

DNS DDOS 攻击 - 想了解日志

作为 DOOS 攻击(基本上是无效的)的一部分,我目前看到以下形式的日志消息:

<DATE> client <EXTERNAL-IP>#3074 (<NAME>): query: <SAME-NAME> IN RRSIG + (<ONE-OF-MY-IPs>)

我读了 DNS 日志后发现,这是一个来自 < EXTERNAL-IP > 的查询,结果将发送到 < ONE-OF-MY-IPs >。对吗?

我们正在运行较旧的 BIND,很快就会升级,但我希望了解这个查询实际上在做什么(发送了许多查询)。

编辑:此外,想知道他们如何构建它以将结果发送到另一个 IP。

答案1

BIND 查询日志格式

您是否关注过 Alan Clegg 的 (ISC)关于 BIND 日志的幻灯片第 16 页指出错误地

发送响应的地址(括号中)

BIND 9 管理员参考手册告诉我们,它实际上是询问已发送,即您的 DNS 服务器的 IP 地址。手册结构不是最容易阅读或参考的,因此这里是相关文档的完整路径:

  • 从参考手册版本 9.14.11 开始,
    • 第 5 章 BIND 9 配置参考,

更清晰的格式和重点是我的:

  1. 查询日志条目首先以@0x<hexadecimal-number>格式报告客户端对象标识符。
  2. 接下来,它会报告客户端的 IP 地址和端口号,并且
  3. 查询名称、类别和类型。
  4. 接下来,它报道
  • 是否设置了“所需递归”标志(+如果已设置,-则未设置),
  • 查询是否已签名(S),
  • 是否使用 EDNS 以及 EDNS 版本号(E(#)),
  • 是否使用了 TCP(T),
  • 是否设置了 DO (DNSSEC Ok)(D),
  • 是否设置了 CD(检查已禁用)(C),
  • 是否收到了有效的 DNS 服务器 COOKIE ( V),以及
  • 是否存在没有有效服务器 COOKIE 的 DNS COOKIE 选项(K)。
  1. 此后,将报告发送查询的目标地址。
  2. 最后,如果客户端查询中存在任何 CLIENT-SUBNET 选项,则它将包含在格式的方括号中[ECS address/source/scope]

因此:

info: client @0xf00 203.0.113.88#3074 (example.com): query: example.com IN RRSIG + (192.0.2.1)
  • 203.0.113.88#3074是客户端的 IP 地址和端口
  • example.com是查询名称、IN类和RRSIG类型(RFC 4034,3
  • +告诉客户请求递归
  • 192.0.2.1是发送查询的 DNS 服务器的 IP 地址

DNS 放大攻击及其缓解方法

此日志条目中没有 DDoS 攻击的迹象本身,并将响应发送回客户端203.0.113.88#3074。如果客户端 IP 地址被欺骗,则放大攻击是关于对查询的响应RRSIG比原始查询大得多。

...攻击者将 UDP DNS 查询发送到反射解析器,并将查询的源 IP 地址设置为目标(受害者)的地址。反射服务器处理递归查询并将响应发送到他们认为查询来源的 IP 地址。由于来源被欺骗,回复实际上被发送到目标。- -

未请求的 DNS 响应在到达目标机器时会被丢弃,但是当它们完成此操作时,它们已经消耗了网络资源和目标机器的一小部分 CPU 时间。

为了缓解这种情况,请根据您的具体情况:

没有开放递归名称服务

权威名称服务器不得提供递归名称服务。通过在权威机构管辖范围之外发送设置了“RD”位的查询来测试此要求。

如果这是一个递归名称服务器,限制仅允许您自己的网络访问该服务。这可以使用 或 来allow-query实现allow-recursion

allow-recursion

指定允许哪些主机通过此服务器进行递归查询。如果allow-recursion未设置,则allow-query-cache在设置时使用,否则在设置时使用,否则使用allow-query默认值 ( )。localnets; localhost;

为了使 RRL 能够防御此问题,请编辑并向全局选项named.conf添加以下子句:rate-limit

options {
         … 
          rate-limit {
              responses-per-second 10;
          };
      };

官方文档中对此进行了更详细的解释options语句定义和用法响应率限制. 您可以在那里找到

- why and how to use `slip` to truncate responses (done by default with value `2`)
- use `qps-scale` to tighten defenses during attacks.

相关内容