让 BIND9 删除非权威性查询

让 BIND9 删除非权威性查询

我的 ISP 允许我运行 DNS 服务器,只要它不响应非授权查询即可。这意味着没有任何响应。我已将其配置为拒绝非授权查询,如下所示;

> tweakers.net
Server:     my.server.net
Address:    my.ip#53

** server can't find tweakers.net: REFUSED

但显然这已经不够了。它需要简单地不发送任何响应。这可能吗?

这是我当前的选项文件;

options {
    directory "/var/cache/bind";

    recursion yes;

    allow-recursion { internal; };

    allow-transfer { *secondary dns ip*; };

    dnssec-enable yes;
    dnssec-validation yes;

    auth-nxdomain no;    # conform to RFC1035

    filter-aaaa-on-v4 yes;

};

我的内部 ACL

acl internal {
    192.168.40.0/24;
    127.0.0.1;
    10.0.3.1/24;
    };

也许我没有在谷歌上搜索正确的东西,但我找不到这样的选择。

答案1

您需要禁用递归。

这将阻止它响应非权威区域的查询。

但它仍会以 SERVFAIL 做出响应。

答案2

在这里找到了一个 iptables 解决方案。Serverfault 上发布了类似的问题。 https://serverfault.com/questions/438515/bind-blackhole-for-invalid-recursive-queries

没有办法使用 Bind 来实现这一点。但是,您可以使用 iptables 防火墙规则来阻止对所有递归查询的响应。

答案3

和你一样,我不喜欢我的服务器受到 DDOS 攻击,即使它只响应 30 字节的小数据包。此外,由于某些原因,我无法使用 iptables 来阻止欺骗请求。服务器漏洞在 3 个月前就已修复,但僵尸网络仍然会向服务器发送欺骗请求。

因此,您可以使用这个简单的补丁来不发送 REFUSED 响应(请求将被丢弃):

--- bind9-9.9.5.dfsg/bin/named/query.c.orig        Thu Aug  6 21:56:57 2020
+++ bind9-9.9.5.dfsg/bin/named/query.c     Thu Aug  6 22:08:15 2020
@@ -1038,7 +1038,7 @@
                                         sizeof(msg));
                        ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
                                      NS_LOGMODULE_QUERY, ISC_LOG_INFO,
-                                     "%s denied", msg);
+                                     "%s dropped", msg);
                }
                /*
                 * We've now evaluated the view's query ACL, and
@@ -5809,8 +5809,9 @@
                        } else
                                inc_stats(client, dns_nsstatscounter_authrej);
                        if (!PARTIALANSWER(client))
-                               QUERY_ERROR(DNS_R_REFUSED);
-               } else
+               //              QUERY_ERROR(DNS_R_REFUSED);
+                               QUERY_ERROR(DNS_R_DROP);
+               } else
                        QUERY_ERROR(DNS_R_SERVFAIL);
                goto cleanup;
        }
# diff -u query.c.orig query.c

...结果,你会得到像这样的漂亮日志:

Aug  6 21:39:29 topor named[2652]: client 78.180.51.241#43072 (.): query (cache) './ANY/IN' dropped
Aug  6 21:40:00 topor last message repeated 485 times

如果查询来自未经授权的网络/不受支持的域,则不会有“REFUSED”答复。

相关内容