这是来自 bind 的日志,这些请求不停地发出,named 占用了大量 CPU
27-Sep-2018 21:34:19.693 queries: info: client 217.107.34.85#25183 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:19.738 queries: info: client 109.148.129.56#15451 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:19.796 queries: info: client 217.107.34.85#22807 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:19.805 queries: info: client 74.99.171.161#80 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.242 queries: info: client 142.112.165.146#80 (eftps.gov): query: eftps.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.243 queries: info: client 122.114.207.223#80 (aids.gov): query: aids.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.302 queries: info: client 217.107.34.85#36681 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.368 queries: info: client 92.11.206.190#80 (aids.gov): query: aids.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.426 queries: info: client 74.99.171.161#80 (eftps.gov): query: eftps.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.438 queries: info: client 217.107.34.85#51622 (aids.gov): query: aids.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.570 queries: info: client 70.29.66.36#47689 (eftps.gov): query: eftps.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.794 queries: info: client 109.148.129.56#37777 (eftps.gov): query: eftps.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.918 queries: info: client 74.99.171.161#80 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.941 queries: info: client 217.107.34.85#16138 (aids.gov): query: aids.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:20.961 queries: info: client 74.99.171.161#80 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.145 queries: info: client 74.99.171.161#80 (aids.gov): query: aids.gov IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.156 queries: info: client 92.11.206.190#80 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.381 queries: info: client 68.84.209.198#80 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.382 queries: info: client 68.84.209.198#80 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.417 queries: info: client 74.99.171.161#80 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.421 queries: info: client 68.84.209.198#80 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
27-Sep-2018 21:34:21.513 queries: info: client 68.84.209.198#80 (jk1l.ru): query: jk1l.ru IN ANY +E (192.168.0.200)
我应该担心吗?
答案1
首先,关于日志条目,可能需要指出的是查询日志中的值是什么意思:
查询日志条目首先以 @0x 格式报告客户端对象标识符。接下来,它报告客户端的 IP 地址和端口号,以及查询名称、类和类型。接下来,它报告是否设置了 Recursion Desired 标志(如果设置则为 +,如果未设置则为 -)、查询是否已签名 (S)、是否使用了 EDNS 以及 EDNS 版本号 (E(#))、是否使用了 TCP (T)、是否设置了 DO (DNSSEC Ok) (D)、是否设置了 CD (Checking Disabled) (C)、是否收到了有效的 DNS 服务器 COOKIE (V),或者是否存在没有有效服务器 COOKIE 的 DNS COOKIE 选项 (K)。之后,报告查询发送到的目标地址。
查看您的一个条目(基本上全部相同):
27-Sep-2018 21:34:19.796 queries: info: client 217.107.34.85#22807 (isc.org): query: isc.org IN ANY +E (192.168.0.200)
我们看到+
(需要递归) 和E
(EDNS),并且 qtype 是ANY
。同样相关的是(TCP)
的缺失。T
这是一个组合,当他们选择一个知道有大量记录的域名时,本质上是为了通过 UDP 发送尽可能大的响应而进行优化。(递归能够使用任何选择的域名,EDNS 允许通过 UDP 获得 >512 字节的答案(容易被欺骗)。)
这或多或少是理想的反射放大 DDoS 攻击,攻击者以受害者的 IP 地址作为源地址,发送大量小型查询,让您的服务器将产生的大量响应发送到受害者的地址。
解决这一问题显然需要研究以下几点:
- 你可能没有充分的理由允许公众使用递归,或者根本不允许。你会想禁用它!参见
allow-recursion
用于将递归访问限制到仅你的目标客户端或recursion
完全禁用递归。 - BIND 还有响应率限制内置,允许您对来自允许的客户端的相同查询进行速率限制(请参阅上一个要点)。要么强制超过您配置的阈值的客户端切换到 TCP(不容易被欺骗)以便真正获得实际答案,要么开始完全丢弃响应。
从更大角度来看,ISP 应该过滤其客户的源 IP(见BCP38) 来限制任何人声称自己是任何 IP 地址的可能性(就像这种类型的欺骗一样)。
答案2
事实上,正如 @HBruijn 所说,它被用于 DNS 反射和放大攻击。解决方案是通过设置 acls 来限制对内部客户端的递归。