DNS Dampening
Anzahl der Kommentare:
14,
Seiten:
1
Stefan
24.09.2012 10:20
Deine Überlegungen von "schlimmstenfalls logarithmisch" und "linear" sind zwar sehr löblich, aber dennoch ist der Code recht ineffizient. Der Grund dafür ist die lineare Suche, die noch dazu unter einem Mutex statt findet, sodass alle anderen Threads warten, während du den Speicher durchkämmst.
Für diese Aufgabe sind Hashtabellen typischerweise die bessere Lösung.
Für diese Aufgabe sind Hashtabellen typischerweise die bessere Lösung.
Lutz Donnerhacke
24.09.2012 10:32
Welche Algorithmen sich bewähren, ist noch offen.
Welche Datenstrukturen sich bewähren, ist noch offen.
Die aktuellen Annahmen besagen, daß die Optimierung auf den durchschnittlichen Fall mit der linearen Suche entlang der Häufigsstatistik erfolgt.
Alle Annahmen können nur durch die Praxis, vor allem mit Messen, Messen und Messen geprüft werden.
Aktuell habe ich Probleme mit Kollateralschäden. Es trifft z.B. IPv6 Tunnelbroker, die Kunden mit qmail haben.
Welche Datenstrukturen sich bewähren, ist noch offen.
Die aktuellen Annahmen besagen, daß die Optimierung auf den durchschnittlichen Fall mit der linearen Suche entlang der Häufigsstatistik erfolgt.
Alle Annahmen können nur durch die Praxis, vor allem mit Messen, Messen und Messen geprüft werden.
Aktuell habe ich Probleme mit Kollateralschäden. Es trifft z.B. IPv6 Tunnelbroker, die Kunden mit qmail haben.
tjac
24.09.2012 11:49
Nett. Man kann sowas ähnliches übrigens auch mit einem vorgeschalteten iptables + recent Modul erreichen, so zwischen den entsprechenden bind-Instanzen und dem Internet irgendwo ein Linux läuft. Ist zwar wahrscheinlich performanter, da alles interessante im kernel abläuft, aber dafür nicht so schön bzw. so einfach parametrisierbar nach Requesttyp. Bitte um Aufnahme in die Mainline ersuchen, wenn dann irgendwann die meisten Binds der Welt mit sinnvollen Dampening defaults laufen würden, hättest du auf jeden Fall einen Preis verdient ;)
mic_e
24.09.2012 23:58
@Stefan: Aber auch bei Hashmaps ist Vorsicht geboten: Ein Angreifer, der deine Hashfunktion kennt, kann gezielt eine Überlast verursachen, indem er nur Schlüssel sendet, die den selben Hash haben.
Thomas
25.09.2012 15:18
Wie schützt Du Dich vor IP-Spoofing? Was passiert, wenn ich ein paar tausend Abfragen mit den IP-Adressen der Resolver der Telekom im Absender schicke?
Lutz Donnerhacke
25.09.2012 15:49
IP Spoofing ist genau der Grund, weswegen der Zinnober gemacht wird. Meine Antwortpakete stellen ja genau den Angriff dar.
Ich schweig dann also eine Weile (bis die Punkte verfallen) und mache dann erst weiter. Ja, das öffnet einem DoS Tür und Tor. Ja, es kann sein, daß dann der DTAG Resolver meine Domains gar nicht mehr auflösen kann, weil ich seinen legitimen Paketen auch nicht antworte.
Ich schweig dann also eine Weile (bis die Punkte verfallen) und mache dann erst weiter. Ja, das öffnet einem DoS Tür und Tor. Ja, es kann sein, daß dann der DTAG Resolver meine Domains gar nicht mehr auflösen kann, weil ich seinen legitimen Paketen auch nicht antworte.
Thomas
25.09.2012 18:03
Wie sinnvoll ist eine Lösung, die "DoS Tür und Tor öffnet"?
Sie macht es sogar noch viel einfacher, Domains für manche Gruppen, zum Beispiel DTAG-Kunden oder x-beliebige andere aus dem Netz zu schießen. Ich muß Deine Nameserver gar nicht mehr unter Dauerfeuer nehmen, sondern ich kann das bequem und bandbreitenschonend über die Strafpunkte steuern. Also DoS statt dDoS.
Sie macht es sogar noch viel einfacher, Domains für manche Gruppen, zum Beispiel DTAG-Kunden oder x-beliebige andere aus dem Netz zu schießen. Ich muß Deine Nameserver gar nicht mehr unter Dauerfeuer nehmen, sondern ich kann das bequem und bandbreitenschonend über die Strafpunkte steuern. Also DoS statt dDoS.
Lutz Donnerhacke
25.09.2012 21:51
Es gibt keine offensichtliche Lösung des Problems. Allerdings hat mir Dein Kommentar geholfen, meine aktuellen Experimente an diesem Problem auszurichten: Wie kann ich wenigstens ansatzweise legitime Anfragen beantworten, während der Angriff selbst versandet.
Abwarten!
Abwarten!
jym
27.09.2012 17:28
Hallo Lutz,
ist vielleicht ein bisschen off-topic, aber hast du dich mal mit Namecoin beschäftigt?
http://de.wikipedia.org/wiki/Namecoin
Was hältst du von so einem Ansatz?
Gruß
jym
ist vielleicht ein bisschen off-topic, aber hast du dich mal mit Namecoin beschäftigt?
http://de.wikipedia.org/wiki/Namecoin
Was hältst du von so einem Ansatz?
Gruß
jym
Lutz Donnerhacke
27.09.2012 22:49
Namecoin skaliert nicht, weil es zu viele "zentrale" Stellen hat. Namecoin ist nicht massentauglich, weil es nicht in die aktuelle Protokollversion hineinwächst, wie es DNSSEC derzeit tut.
Karl Ranseier
27.09.2012 22:58
Das eigentliche Problem des Lösungsansatzes ist, daß er nicht allgemein genutzt werden kann:
Blockiere ich die gespooften IPs (allgemein), so kann ich dafür sorgen, daß ganze Access Netze einen Resolver nicht mehr erreichen. Ein einfaches Beispiel hierfür ist:
Man nehme an, die DNSes von google z.B. würden ein Dampening anwenden wollen. Ich suggeriere eine Amplification attack seitens der recursor mehrerer großer Provider. Der DNS des Anbieters (im Beispiel google) würde also die Recursor der Zugangsprovider 'blacklisten' zumindest solange ich regelmässig (aber nur gelegentlich) einige Anfragen aussende, um die Penalty gezielt oben zu halten. Die Amplification-Attacke ist abgewendet, dafür habe ich sie gegen eine Service-Denial beim Dienstanbieter getauscht. Daher wäre ein Dampening für keinen Diensteanbieter umsetzbar, sofern er gelegentlich erreichbar sein möchte. Das schlimmste aber ist, ich kann spezifische Targets für spezifische Kunden (Clients) gezielt ins Dampening treiben und somit 2 Parteien direkt schaden, wenn ich es geschickt anstelle. (Sorge dafür das Firma X nicht mehr bei Clouddiensteanbieter Y resolven kann ... Nicht so klug ;-) )
Blockiere ich die gespooften IPs (allgemein), so kann ich dafür sorgen, daß ganze Access Netze einen Resolver nicht mehr erreichen. Ein einfaches Beispiel hierfür ist:
Man nehme an, die DNSes von google z.B. würden ein Dampening anwenden wollen. Ich suggeriere eine Amplification attack seitens der recursor mehrerer großer Provider. Der DNS des Anbieters (im Beispiel google) würde also die Recursor der Zugangsprovider 'blacklisten' zumindest solange ich regelmässig (aber nur gelegentlich) einige Anfragen aussende, um die Penalty gezielt oben zu halten. Die Amplification-Attacke ist abgewendet, dafür habe ich sie gegen eine Service-Denial beim Dienstanbieter getauscht. Daher wäre ein Dampening für keinen Diensteanbieter umsetzbar, sofern er gelegentlich erreichbar sein möchte. Das schlimmste aber ist, ich kann spezifische Targets für spezifische Kunden (Clients) gezielt ins Dampening treiben und somit 2 Parteien direkt schaden, wenn ich es geschickt anstelle. (Sorge dafür das Firma X nicht mehr bei Clouddiensteanbieter Y resolven kann ... Nicht so klug ;-) )
Erid
15.11.2015 22:42
Could you please have your whole blog in English.We also would like to read
Lutz Donnerhacke
19.11.2015 08:08
Please use the language selector in the top navigation to switch to English
Und wenn jetzt noch im allerletzten Satz das falsche "Ein" gegen das richtige "Einen" ausgetauscht werden sollte, gibt es so gut wie Nichts mehr zu meckern ... ;-)
Herzlichen Gruß, wirklich vielen und großen Dank auch schon für Deine bisherigen Arbeiten und diversen Veröffentlichungen und auch weiterhin hoffentlich noch richtig viel Spaß und Erfolg bei Deiner Arbeit und auch sonst so ...! :-)