Man ist das eine schwere Geburt! Aber im Detail.
Angefangen hat alles mit einem Artikel auf
Heise News über das
ORSN (Open Root Server Network) Projekt.
Nach den immer neuen Veröffentlichungen über die Geheimdienste und deren grenzenlosen Überwachung, schon eine tolle Sache, ein DNS-System was nicht so einfach kontrolliert und manipuliert werden kann.
Also, die FritzBox kurz konfiguriert und einen offenen
DNS-Server von ORSN benutzen. Cool ging ohne Problem auf Anhieb.
Hm, irgendwie ist die Idee zu gut und ich denke es wäre eine gute Idee selbst so einen ORSN DNS-Server aufzusetzen. Geht total einfach mit der Beispielkonfiguration und einem
Bind als DNS-Server!
Die ersten Tage lief das ganz System gut, dann aber lernte ich die Probleme offener DNS-Server (ein Open Resolver beantwortet alle Anfragen zu jeder Domain) und dem DNS System gut kennen! Dazu müssen wir kurz in die Grundlagen von DNS und
UDP als Netzwerkprotokoll einsteigen. UDP ist ein verbindungsloses Protokoll, welches sich sehr gut mit einem offenen DNS-Server zum
Denial of Service (DoS) gegen andere Systeme benutzen lässt. Dazu muss der Angreifer dem DNS-Server DNS-Anfragen stellen und dabei seine Absender-IP-Adresse fälschen. Dieses Vorgehen vom Angreifer wird
IP-Spoofing genannt und erstellt DNS-Antworten zu der gefälschten Absender-IP-Adresse, die die Anfrage gar nicht gestellt hat.
Wenn ein Angreifer nun sehr viele Anfragen (viele hundert und mehr) mit gefälschten Absender-IP-Adressen sendet, erhalten die angegriffenen Systeme die ganzen DNS-Antworten und werden dadurch in ihrer Arbeit beeinträchtigt oder sogar blockiert, da die Systeme und die Infrastruktur mit der schieren Datenmenge klar kommen müssen.
Über meinen DNS-Server wurden so mehr als 2 GB Traffic pro Stunde generiert. Da musste ich die Notbremse ziehen und den DNS-Server wieder abschalten.
Nun sollte eine Lösung her, aber welche? Einige haben versucht mit Firewallregeln die vielen Anfragen abzuwehren und andere haben DNS-Anfragen per
TCP erzwungen, was leider zu langsameren DNS-Anfragen führt. Ich habe mich dann für einen Patch entschlossen, der den Bind um ein Response Rate Limit (RRL) erweitert. Dieser Patch, der seit der Version 9.9.4 in der offiziellen Bind Version enthalten ist, kann DNS-Anfragen so begrenzen, dass eine IP-Adresse unbegrenzt Anfragen stellen kann aber nicht mehr alle Anfragen beantwortet werden. Perfekt dachte ich!
Hm, den oder die Angreifer interessierte es überhaupt nicht. Es kamen immer noch tausende Anfragen pro Stunde, aber mein System antwortete nur noch auf jede zehnte Anfrage und siehe da, nach einer Woche hörte die Angriffswelle einfach auf.
Seit dem sieht man immer wieder einmal Tests ob sich mein DNS-Server sich für DoS benutzen lässt, hört aber nach kurzer Zeit wieder auf. Somit ist mein System fast einsetzbar, wenn meine FritzBox nicht öfters meinen würde, dass der DNS-Server nicht da ist. Daran arbeite ich aber noch. Ich gebe nicht so schnell auf.
Kurz zur Erklärung warum das RRL funktioniert.
Surft eine Person ganz normal, stellt sein System vielleicht 10-50 verschiedene DNS-Anfragen pro Minute an einen DNS-Server. Die Angreifer versuchten es aber mit mehr als 25 DNS-Anfragen pro Sekunde zum immer dem gleichen Zielnamen und einer gefälschten Absender-IP-Adresse, wodurch sich der Angreifer problemlos von einer normalen Person unterscheiden lässt und das RRL zuschlägt. Wenn eine normale Person nun ebenso 25 DNS-Anfragen pro Sekunde zum immer dem gleichen Zielnamen stellt, ist er aber auch ein Angreifer gegen sich selbst und RRL schützt ihn vor sich selbst.