Linux 绑定 DNS 服务器正遭受 DNS 放大攻击

Linux 绑定 DNS 服务器正遭受 DNS 放大攻击

我有一台 Linux 绑定 DNS 服务器,它正遭受 DNS 放大攻击。
我已应用 DNS 响应速率限制和源 IP 地址阻止,这解决了服务器 IP 流量过大的迫切问题。服务器上剩余 DNS 流量的数据包捕获显示了两个请求最多的域。isc.org 和 peacecorps.gov

在 Google 搜索和阅读的许多小时里,我遇到了以下 IP 表片段。'''-A INPUT -i eno1 -p udp -m udp --dport 53 -m string --hex-string "|0A|peacecorps|03|gov|" --algo bm -j DROP'''

我遇到的问题是我的服务器使用在后台使用 nftables 的 firewalld。firewalld 有一个直接模式,我正在尝试使用它,但是我无法获得正确的语法。

启用速率限制(和 Fail2Ban)后,DNS 服务器会忽略重复的请求。我希望他们能再设一个障碍。

谢谢。

答案1

我的问题的答案是:-firewall-cmd --direct --add-rule ipv4 filter INPUT 10 -i ens192 -p udp -m udp --dport 53 -m string --hex-string "|0A|peacecorps|03|gov|" --algo bm -j DROP

答案可以在https://github.com/firewalld/firewalld/issues/527

谢谢。

答案2

您真的需要在 DNS 服务器中启用到公共 IP 的递归吗?

  • 如果您正在构建权威 DNS 服务器,请不要启用递归。
  • 如果您正在构建递归(缓存)DNS服务器,则需要启用递归。
  • 如果您的递归 DNS 服务器有公共 IP 地址,则必须启用访问控制以将查询限制为合法用户。如果不这样做,您的服务器将遭受大规模 DNS 放大攻击。

如果您使用 Bind 作为 DNS 服务器,则可以设置 ACL 以将递归查询限制到您的内部网络。建议的方法是创建与应被允许访问服务器上的缓存和递归的主机匹配的 ACL。例如,如果您希望向您信任的客户端提供递归和对缓存的访问,则可以将它们列在 ACL 中,如下所示:

acl "lan" {
     192.168.1.0/24;
     10.1.0.0/16;
     localhost;
     localnets;
 };
 
 options {
     ...
     allow-query { any; };
     allow-recursion { lan; };
     allow-query-cache { lan; };
     ...
 };

此示例 ACL 包括 192.168.1.0/24 和 10.1.0.0/16 作为需要访问的示例网络。您必须将这些示例网络替换为正确反映您环境的网络。这将允许任何人查询您的服务器以获取权威数据,但只有“受信任”ACL 内的主机才能访问您的缓存和递归。

相关内容