保护公共 DNS 免受攻击者的最佳方法

dri*_*ard 3 security domain-name-system

我有一个公共 DNS,我想保护它免受某种攻击者的攻击,这些攻击者每秒钟都使用相同的域条目攻击我的 DNS 服务器。我目前是根据 iptables 规则来做的,但我想知道是否有我们可以为此目的使用的自动系统。我想到了http的fail2ban,DNS查询有没有这样的东西?

谢谢!

Chr*_*s S 5

fail2ban 不是“用于 http”,它是一个基于日志条目采取行动(例如在防火墙上禁止 IP)的框架。以下是我的 DNS 服务器的相关配置选项:

命名文件

logging {
        channel default_file {
                file "/var/log/named.log" size 10m;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category default{ default_file; };
};
Run Code Online (Sandbox Code Playgroud)

监狱.local

(fail2ban 的配置文件)

[named-refused-bsd-ipfw]
enabled  = true
filter   = named-refused
action   = bsd-ipfw
logpath  = /var/named/var/log/named.log
maxretry = 20
bantime = 43200
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个使用 IPFW(防火墙)的 FreeBSD 盒子。您需要使用 actioniptables并适当地命名规则。

您可能还需要更改日志路径,具体取决于您的安装。请注意,在我的示例中,有不同的路径,因为 BIND 在监狱中运行(chroot 到/var/named)。在监狱里跑步会让事情变得更复杂,但一旦你习惯了它就不会坏。

您还应该为日志文件设置某种日志轮换机制。

配置文件

/var/log/named.log      bind:bind       644  7     *    $W6D0 J    /var/run/named/pid 1
Run Code Online (Sandbox Code Playgroud)

您可能还想看看它是谁,它可能是一个开放的解析器(如 Google、4.2.2.2-.4 等)。禁止他们并不禁止真正的“攻击者”。您可以使用类似的方法对 IP 进行反向查找dig -x 4.2.2.4,看看是否有帮助。