Schutz eines Tor Relays vor DDoS Angriffen

Schutz eines Tor Relays vor DDoS Angriffen

Seit einigen Wochen äußern Benutzer ihre Besorgnis (siehe https://www.reddit.com/r/TOR/comments/1cnmsdz/tor_extremely_slow_lately/, https://forum.torproject.org/t/is-there-currently-a-major-ddos-affecting-the-networks-availability/12492, etc.) über Leistungseinbußen (langsame Geschwindigkeit, Timeouts), wenn sie Tor benutzen, um sowohl v3 Onion Seiten als auch Clearnet Seiten zu besuchen. Ich persönlich habe festgestellt, dass die meisten v3 Onion Dienste so langsam sind, dass sie praktisch unbenutzbar sind. Aus diesem Grund habe ich einige Skripte installiert und getestet, ob meine Tor-Relays davon profitieren.

Einige Skripte habe ich auf GitHub gefunden:

toralf/torutils: Few tools for a Tor relay. (github.com)
Enkidu-6/tor-ddos: iptables rules for Tor relay operators to mitigate ddos (github.com)

ipset ist ein Werkzeug zur Verwaltung von IP-Sets im Kontext des Linux Network Stack. IP-Sets sind im Wesentlichen Datenstrukturen, die Sammlungen von IP-Adressen, Netzwerkadressen, Ports oder andere netzwerkbezogene Objekte speichern können. Diese Sets werden oft in Kombination mit iptables verwendet, um effizientere und flexiblere Firewall-Regeln zu erstellen.

Hier sind einige der wichtigsten Anwendungsfälle und Funktionen von ipset:

Performance: Da IP-Sets für den Umgang mit großen Mengen von IP-Adressen optimiert sind, ermöglichen sie im Vergleich zu herkömmlichen iptables-Regeln, die sequentiell durchsucht werden müssen, schnellere Suchvorgänge.

Flexibilität: IP-Sets können verwendet werden, um verschiedene Arten von Sets zu erstellen, z. B:
        hash:ip: Ein Satz von einzelnen IP-Adressen.
        hash:net: Eine Menge von Netzwerken.
        hash:ip,port: Eine Gruppe von IP-Adressen und Ports.
        bitmap:ip: Eine Menge von IP-Adressen in einem bestimmten Bereich.
        list:set: Eine Menge, die andere IP-Mengen enthalten kann.

Dynamisch: IP-Sets können dynamisch zur Laufzeit geändert werden. Es ist nicht notwendig, bestehende iptables-Regeln zu ändern. Das bedeutet, dass IP-Adressen zu einem Set hinzugefügt oder aus einem Set entfernt werden können, ohne die Performance zu beeinträchtigen oder bestehende Verbindungen zu unterbrechen.

Zusammenfassung

ipset ist ein leistungsfähiges Werkzeug zur effizienten Verwaltung und Nutzung von IP-Adressen und Netzwerken innerhalb von iptables-Regeln. Es bietet erhebliche Performance- und Flexibilitätsvorteile, insbesondere wenn eine große Anzahl von IP-Adressen oder komplexe Firewall-Regeln verwaltet werden müssen.

Auf meinen TOR-Relays verwende ich persönlich UFW.

ufw (Uncomplicated Firewall) ist eine Benutzeroberfläche für iptables, die die Konfiguration von Firewall-Regeln vereinfacht. ipset und ufw sind zwei getrennte Werkzeuge, die aber zusammen verwendet werden können, um die Verwaltung von Firewall-Regeln zu vereinfachen und zu optimieren.
Verwendung von ipset mit ufw

ufw unterstützt standardmäßig keine direkte Integration mit ipset. Sie können jedoch ipset verwenden, um IP-Sets zu erstellen, und diese dann in iptables-Regeln aufnehmen, die ufw-Regeln ergänzen.

Um sicherzustellen, dass diese Regel auch nach einem Neustart des Systems oder der Firewall bestehen bleibt, können Sie sie zu einem ufw-Konfigurationsskript hinzufügen.

Öffnen Sie dazu die Datei /etc/ufw/before.rules mit einem Texteditor.

Zusammenfassung

ipset und ufw sind separate Werkzeuge, die zusammen verwendet werden können, um die Verwaltung von Firewall-Regeln zu optimieren. ipset kann verwendet werden, um große Mengen von IP-Adressen effizient zu verwalten, während ufw eine benutzerfreundliche Oberfläche für iptables bietet. Durch Hinzufügen von ipset-Regeln zu den ufw-Konfigurationsdateien können die Vorteile beider Werkzeuge genutzt werden.