
Ich habe einen Nameserver, der öffentlich zugänglich ist, da erist der autoritative Nameserver für einige Domänen.
Derzeit ist der Server überflutet mit gefälschten Typ- ANY
Anfragen für isc.org, ripe.net und ähnliche (das ist einBekannter verteilter DoS-Angriff).
Der Server führt BIND aus und ist allow-recursion
auf mein LAN eingestellt, so dass diese Anfragen abgelehnt werden. In solchen Fällen antwortet der Server nur mit authority
und additional
Abschnitten, die auf die Root-Server verweisen.
Kann ich BIND so konfigurieren, dass es diese Anfragen vollständig ignoriert, ohne überhaupt eine Antwort zu senden?
Antwort1
Angesichts des gleichen Problems habe ich beschlossen, alle rekursiven Anfragen zu ignorieren. Alle Resolver senden eine nicht rekursive Abfrage, wenn sie meinen Server als autoritativen Server verwenden möchten. Nur falsch konfigurierte Clients und Angreifer, wie in meinem Fall, verwenden rekursive Abfragen.
Leider habe ich keine Möglichkeit gefunden, BIND dies tun zu lassen, aber falls iptables für Sie gut genug ist, habe ich
iptables -t raw -I PREROUTING -i eth0 -p udp --destination-port 53 \
-m string --algo kmp --from 30 \
--hex-string "|01000001000000000000|" -j DROP
Antwort2
Ich würde versuchen:
zone "." {
type redirect;
allow-query "none";
}
Die Antworten, die Clients an die Root-Server verweisen, werden durch die „Redirect“-Zone gesteuert. Dies sollte bedeuten, dass auf diese nicht geantwortet werden soll.
Darauf wird in den Bind9-Dokumenten hingewiesen:http://ftp.isc.org/isc/bind9/cur/9.9/doc/arm/Bv9ARM.ch06.html#id2592674
"none"
Sie können durch Ihr lokales Subnetz ersetzen .
Sollten Sie bereits eine zone "."
Erklärung haben, ergänzen Sie allow-query "none";
diese einfach.
Antwort3
Haben Sie versucht, die Zeichenfolge isc.org oder die Hex-Zeichenfolge dafür zu blockieren?
Das hat bei mir funktioniert:
iptables -A INPUT -p udp -m string --hex-string "|03697363036f726700|" --algo bm -j DROP
Antwort4
Die Grundidee besteht darin, dass Bind die DNS-Antwort als abgelehnt klassifizieren und dann iptables verwenden, um die abgelehnte Antwort in eine stillschweigend ignorierte Antwort umzuwandeln.
Abgelehnt ist der einfache Teil im Optionsabschnitt von named.conf:
allow-recursion { none;};
Oder natürlich Ihre bevorzugten ACLs für lokale Ausnahmen ...
Als nächstes die verrückte iptables-Magie: Passen Sie „-o eth0“ nach Bedarf an oder entfernen Sie es. Dieser Befehl setzt einen standardmäßigen 20-Byte-IPv4-Layer-Header vor UDP voraus.
iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --from 30 --to 32 --hex-string "|8105|" --algo bm -j DROP
Dieser Schlüssel basiert auf dem Flag-Feld der DNS-Antwort mit den folgenden gesetzten Bits
- DNS-Antwort
- Rekursive Abfrage
- Antwortcode abgelehnt
Beim Ausführen von Bind im Debug wurde die Protokollnachricht „Fehler beim Senden der Antwort: Host nicht erreichbar“ bemerkt, wenn die Regel übereinstimmt, um Feedback zum Testen zu erhalten.
Ich muss zugeben, dass das alles ziemlich sinnlos ist. Wenn es keine Verstärkung gibt, könnte ein Angreifer genauso gut TCP SYN reflektieren. Letztendlich ist DNS kaputt, es gibt einfach keine praktikable Lösung außer der Verwendung von TCP oder der Bereitstellung von Eastlakes DNS-Cookies.