Lassen Sie BIND9 nicht autoritative Abfragen löschen

Lassen Sie BIND9 nicht autoritative Abfragen löschen

Mein ISP erlaubt mir, einen DNS-Server zu betreiben, solange er nicht auf nicht-autoritative Anfragen antwortet. Das bedeutet, dass überhaupt keine Antwort erfolgt. Ich habe ihn so konfiguriert, dass er nicht-autoritative Anfragen ablehnt, und zwar wie folgt:

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

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

Aber anscheinend reicht das nicht mehr aus. Es muss einfach überhaupt keine Antwort gesendet werden. Ist das überhaupt möglich?

Dies ist meine aktuelle Optionsdatei;

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;

};

Meine interne ACL

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

Vielleicht google ich nicht das Richtige, aber ich kann eine solche Option nicht finden.

Antwort1

Sie müssen die Rekursion deaktivieren.

Dadurch wird verhindert, dass auf Abfragen für nicht autoritative Zonen geantwortet wird.

Die Antwort lautet jedoch weiterhin „SERVFAIL“.

Antwort2

Habe hier eine iptables-Lösung gefunden. Ähnliche Frage auf Serverfault gepostet. https://serverfault.com/questions/438515/bind-blackhole-for-invalid-recursive-queries

Mit Bind ist dies nicht möglich. Sie können jedoch iptables-Firewallregeln verwenden, um Antworten auf alle rekursiven Abfragen zu blockieren.

Antwort3

Wie Sie mag ich es nicht, wenn mein Server in DDOS verwickelt ist, selbst wenn er mit kleinen 30-Byte-Paketen antwortet. Außerdem kann ich aus irgendeinem Grund keine iptables verwenden, um gefälschte Anfragen zu blockieren. Die Server-Sicherheitslücke wurde vor 3 Monaten behoben, aber das Botnetz sendet immer noch gefälschte Anfragen an den Server.

Daher können Sie diesen einfachen Patch verwenden, um keine abgelehnten Antworten zu senden (Anfragen werden gelöscht):

--- 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

... als Ergebnis erhalten Sie schöne Protokolle wie dieses:

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

Und es wird keine „ABGELEHNT“-Antwort geben, wenn die Abfrage aus einem nicht autorisierten Netzwerk/für eine nicht unterstützte Domäne kam.

verwandte Informationen