bind9: Loggen von Anfragen für nicht existente Namen?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 27.06.2015 21:00:37

Guten Abend

Wir erhalten DNS-Attakten in Form von Anfragen für zufällige (und somit nicht existierende) Domänen-Namen wie z.B.

qE3LuA.domain.de
EvwGU.domain.de
643AFs.domain.de

Ich habe alle bind9 Logging-Kategorien auf Stufe debug 3 aktiviert und erhalte MByte-weise Logfiles - aber finde keinen Eintrag, der Abfragen für nicht existierende Namen markiert, so dass man die IP-Adressen automatisch blockieren kann.

Kenn jemand einen Weg, um diese Anfragen zu filtern?

Vielen Dank für jeden Tipp!,
Tom

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von Colttt » 27.06.2015 22:16:53

Du möchtest also abfragen Blöcken die nach einer nicht existierenden domain fragen? Aber du bzw der pc weiss doch gar nicht ob sie existieren oder nicht das findet er ja noch raus. Aber du solltest BIND so einstellen können das er nur domain eigene Sachen beantwortet und den Rest weiterleitet.. Ansonsten wäre evtl noch fail2ban ne Idee aber das kann schnell nach hinten los gehen..
Debian-Nutzer :D

ZABBIX Certified Specialist

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von eggy » 27.06.2015 22:25:20

Aschenputtelmethode, die guten ins Töpfchen, die schlechten ins andere Log

Code: Alles auswählen

logging {
    channel query.log {
        file "/var/log/bind/query.log";
        severity dynamic;
        print-category yes;
    };
    channel notfoundquery.log {
        file "/var/log/bind/notfoundquery.log";
        severity debug 4;
        print-category yes;
    };
 category queries { query.log; };
 category query-errors { notfoundquery.log; };
} 
http://www.bind9.net/arm99.pdf Chapter 6
At the debug levels of 3 or higher, the same messages as those at the debug 1 level are logged for other
errors than SERVFAIL. Note that negative responses such as NXDOMAIN are not regarded as errors
here.
Aber bist Du wirklich sicher, dass das ne gute Idee ist? Vertippt sich da mal einer Deiner braven User, und schon landet er auf der Blacklist ... ups.

tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 27.06.2015 23:38:08

Colttt hat geschrieben:Aber du bzw der pc weiss doch gar nicht ob sie existieren oder nicht das findet er ja noch raus.
Vielen Dank für Deine Antwort!, unsere Benutzer kennen unsere Domain-Namen, d.h. es gibt keinen Grund, alle paar ms nach der Auflösung eines unbekannten Namens zu fragen.
Colttt hat geschrieben:Aber du solltest BIND so einstellen können das er nur domain eigene Sachen beantwortet und den Rest weiterleitet.. Ansonsten wäre evtl noch fail2ban ne Idee aber das kann schnell nach hinten los gehen..
Der Trick der Attacke liegt ja darin, unbekannte Namen in *unserer* Domain abzufragen, d.h. wir können diese Anfragen nicht weiterleiten. Das hat zur Folge, dass es bis zu 10s dauert, bis wir eine Antwort für einen gültigen Namen erhalten.

Danke für den Tipp mit fail2ban!, ich hatte vor, es einzusetzen - dafür brauche ich aber Logeinträge, damit ich die Attackierer finden und blockieren kann.

tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 27.06.2015 23:45:22

eggy hat geschrieben:Aber bist Du wirklich sicher, dass das ne gute Idee ist? Vertippt sich da mal einer Deiner braven User, und schon landet er auf der Blacklist ... ups.
Vielen Dank für Deine ausführliche Antwort!!, ich hoffe, fail2ban so einrichten zu können, dass erst z.B. nach 100 falschen Anfragen die IP-Adresse blockiert wird - ich hoffe keiner der User versucht sich so oft :-)

Ich werde Deine Log-Konfiguration gleich mal testen...

Vielen Dank und liebe Grüsse, Tom

tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 28.06.2015 00:07:19

Nur ein Feedback fürs andere Leser:
Die nachfolgende Lösung funktioniert leider nicht: Anfragen für undefinierte Namen einer Domäne, die bind9 selber verwaltet, werden komischerweise nicht als Fehler behandelt. Ich versuchte severity debug 1 bis 4 - notfoundquery.log blieb leer, während im query.log alle paar ms Anfragen aufgezeichnet werden, die nicht aufgelöst werden können.
eggy hat geschrieben:Aschenputtelmethode, die guten ins Töpfchen, die schlechten ins andere Log

Code: Alles auswählen

logging {
    channel query.log {
        file "/var/log/bind/query.log";
        severity dynamic;
        print-category yes;
    };
    channel notfoundquery.log {
        file "/var/log/bind/notfoundquery.log";
        severity debug 4;
        print-category yes;
    };
 category queries { query.log; };
 category query-errors { notfoundquery.log; };
} 
Trotzdem vielen Dank!, ich habe wieder eine neue Log-Kategorie entdeckt :-)

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von eggy » 28.06.2015 12:59:37

Ich habs jetzt nicht weiter getestet, aber eigentlich sollte das auch "lokal" klappen. Die üblichen Stolpersteine hast Du bedacht? touch $logfile && chown bind $logfile && /etc/init.d/bind9 restart ... Oder evtl noch wo anders Logging aktiviert, das sich hiermit in die Haare kommt? Die logging Direktive darf, soweit ich mich erinnere, nur einmal vorkommen, steht im Syslog beim Dienst restart irgendwas warum da was nicht passt?
Mal darüber nachgedacht lokale und remote Anfragen zu trennen? Dann hast Du zumindest lokal (falls Dir das wichtiger sein sollte) nen "stabileren Service" (ja ändert nichts am Problem, nimmt aber evtl etwas Druck raus). Bind9x bringt n bisschen was an ACL und Ratelimits mit (Chapter 6.2.16.21, Response Rate Limiting) vielleicht hilft davon schon was?

tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 29.06.2015 14:27:24

Vielen Dank, eggy, für Deine Antwort und Deine Ideen!,

im query-errors Logfile hat es inzwischen Einträge, jedoch betrachtet bind9 nicht auflösbaren Namen tatsächlich nicht als Fehler - obwohl solche Anfragen in der Regel keinen Sinn machen :cry: . D.h. Anfragen für nicht definierte Namen werden mit query-erros nicht erfasst.

Ich habe den internen und externen DNS Server bereits getrennt 8) .

Ich teste mal PowerDNS - es scheint, als hätten sie diese Art Attacke bereits im Griff.

Vielen Dank und liebe Grüsse,
Tom

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von r4pt0r » 30.06.2015 09:41:33

Rate-limiting aktivieren und auf die Frequenz dieser Anfragen anpassen - ich gehe mal aus eigener Erfahrung davon aus, dass du mehrere anfragen/Sekunde bekommst, davon viele aufeinanderfolgende von der selben IP. Das wird vom Rate-limiting einwandfrei abgefangen.
Ein ausgelöstes limit erzeugt eine Fehlermeldung in den logs (auch ohne debuglevel das dir schnell die /var/log volllaufen lassen kann!!), lässt sich also sehr leicht mit fail2ban auslesen und entsprechend in eine iptables-regel umsetzen. So erstickt man auch amplification-attacken bereits im Keim und hat schnell mehrere tausend geblockte IPs in den iptables die sich schön sammeln und auswerten lassen für persistente Regeln auch an anderen Diensten/Servern! (Z.B. IPs die mehrmals und an verschiedenen Tagen auftauchen)

Falls andere Nameserver diesen hier als forwarder nutzen, können sie vom rate-limiting ausgeschlossen werden (IIRC via whitelisting möglich, ansonsten evtl einen eigenen view für die anderen NS anlegen).

tomstoms
Beiträge: 6
Registriert: 27.06.2015 20:38:39

Re: bind9: Loggen von Anfragen für nicht existente Namen?

Beitrag von tomstoms » 03.07.2015 11:37:26

Herzlichen Dank r4pt0r, für Deine ausführliche Antwort!, ich brauchte etwas Zeit für die Umsetzung - und Deine Lösung klappt sehr gut.

Fürs Protokoll: hier ist eine gute Ausgangslage zur Konfiguration bind-rate-limit und fail2ban:
http://gergernaut.de/bind-ratelimiting-fail2ban/

Vielen Dank und liebe Grüsse,
Tom

Antworten