TARPIT kann verwendet werden, um die Ressourcen eines Angreifers zu verschwenden, wodurch seine Angriffe verlangsamt und seine Fähigkeit, andere Hosts anzugreifen, verringert werden. Dies scheint eine gute Idee zu sein.
Es wird als Netfilter- Addon bereitgestellt und kann wie jedes andere IPTables-Ziel verwendet werden.
Gibt es bekannte Nachteile oder Schwachstellen bei diesem Ansatz des Umgangs mit (D) DoS?
Antworten:
Früher dachte ich, es sei eine gute Idee. Aber jetzt weiß ich, dass es leider eine sehr schlechte Idee ist.
Haben Sie jemals eine http-Benchmark-App wie Apache Bench ausgeführt? Auf einem einzelnen Computer können Sie festlegen, dass Hunderte von Verbindungen pro Sekunde zu einem Zielserver hergestellt werden. Wenn einige dieser Clients mit aktiviertem Tarpitting ausgeführt werden und eine Verbindung zu Ihrem Server hergestellt wird, werden Sie wahrscheinlich ein Problem feststellen.
Überlegen Sie, wie sich das Erstellen von Tausenden von Verbindungen pro Sekunde zu Ihrem Server auf den Server auswirkt, wenn jede Verbindung in einem Tarpit eingeschlossen ist.
Ihr Server verbraucht schnell alle verfügbaren Ressourcen (oder Dateihandles), sodass keine Verbindungen mehr zulässig sind. Dies ist schlimmer als nur das Schließen der Verbindung. Es wäre besser, den Täter für eine Weile fallen zu lassen, als zu versuchen, seine Ressourcen zu binden. Welches ist, was Skripte wie fail2ban erreichen.
Außerdem möchten Sie niemals, dass Ihre normalen Benutzer im Tarpit stecken bleiben. Zumindest für interaktive Sitzungen. Wie entscheidest du, wer erlaubt ist und wer nicht im Voraus? Für einige Protokolle können Sie nicht. Zum Beispiel HTTP-Verkehr. Sie müssen davon ausgehen, dass ein Client in Ordnung ist, bis Sie von ihm eine Aktivität erhalten, die Ihnen etwas anderes sagt. Dann können Sie entscheiden, es als schlecht zu behandeln, und beim nächsten Mal wird es im Tarpit hängen bleiben. Was in Ordnung zu sein scheint, außer dass viele dieser Angriffe von dynamischen ADSL-Benutzern usw. stammen können, die zufällig den neuesten Wurmvirus erhalten haben.
Angesichts der Tatsache, dass viele Angriffe auf PCs durch Wurmviren erfolgen, ohne dass der Benutzer dynamische Adressen kennt und ausführt, können Sie am Ende eine leicht veraltete Tarpit-Blacklist erstellen. Beginnen Sie einige Probleme zu sehen?
quelle
Zusammenfassung
Das Ausführen eines Tarpits auf einem Allzweckserver birgt Risiken. Wenn Sie wissen, welche Risiken bestehen, können Sie diese je nach Komfort verringern.
Zum Glück ist dies alles möglich und mit normalen iptables und ipset recht einfach.
Begrenzung der TARPIT-Ressourcennutzung
Sie können iptables verwenden, um die Anzahl der Hosts zu begrenzen, die Sie TARPITEN, ohne zu viele Systemressourcen zu verwenden. Siehe Beispiel unten. Dies umfasst Netzwerkbandbreite, Systemspeicher, statusstabile Einträge und andere Systemressourcen. Holen Sie sich zu viele Tarpitted-Verbindungen und ignorieren Sie sie. Wenn Sie Ihren Regelsatz in der richtigen Reihenfolge organisieren, landet keine der tarpitierten Verbindungen in Ihren Statustabellen. Stellen Sie außerdem sicher, dass Sie nicht protokollieren, es sei denn, Sie erstellen Echtzeitstatistiken mit einem benutzerdefinierten ulog - Direct iptables-Tarpit-Protokolle können eine Festplatte schnell füllen.
Nach meiner Erfahrung können meine aktuellen Hosts problemlos mehr als 200 Hosts in einem Tarpit speichern, ohne dass sich dies merklich auf die Speichernutzung, die Verkehrsnutzung oder die CPU-Auslastung auswirkt. Wahrscheinlich könnte ich das weiter vorantreiben, aber bisher bin ich im Durchschnitt nur ungefähr 130 Hosts in einem bestimmten Moment gefangen.
Der Grund, warum ich die Grenzwerte implementiert habe, war, wie in einem anderen Vorschlag angegeben, weil mein erster Tarpit-Host überflutet wurde. Dies war eine triviale Problemumgehung. Ich habe seitdem keine Probleme mehr gehabt.
Verwenden von ipset für effiziente Blacklists
ipset ist ein großartiges kleines Tool, mit dem Sie Gruppen von Objekten erstellen können, die in iptables-Regeln verwendet werden. Nicht nur das, sondern da es die Objekte in einer Hash-Tabelle enthalten kann, ist es umso schneller, je größer das ipset ist, verglichen mit dem entsprechenden linearen Satz von iptables-Regeln.
Darüber hinaus können die Listen Zähler (Pakete / Bytes), Zeitlimit und Ausschluss pro Objekt enthalten.
Sie können ipset mit den meisten automatisch blockierenden Programmen hinzufügen / entfernen, z. B. fail2ban, ossec und mehr. Da Sie ein Standardzeitlimit festlegen können, können Sie sicherstellen, dass Einträge abgelaufen sind, unabhängig davon, welches Programm den Eintrag festgelegt hat.
Beispiel
Hier ist ein Beispiel basierend auf meiner Verwendung auf von mir verwalteten Servern, das die oben aufgeführten Risiken mindert:
Vorbehalt
Ipset konfigurieren
Iptables konfigurieren
Betrachtet gefangene Hosts in Echtzeit
quelle