讓 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 來阻止欺騙請求。伺服器漏洞已於三個月前修復,但殭屍網路仍向伺服器發送欺騙請求。

因此,您可以使用這個簡單的補丁來不發送 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

如果查詢來自未經授權的網路/不支援的網域,則不會有「拒絕」回應。

相關內容