Tor Hidden Service mit OnionBalance

Für mein Jabber/XMPP Projekt blabber.im habe ich eine Möglichkeit gesucht, eine .onion-Adresse für mehrere Server nutzen zu können.
In dieser Anleitung möchte ich euch zeigen, wie dies mittels Tor Dienst und OnionBalance möglich ist.

Anhand des folgenden Szenario zeige ich euch meine Umsetzung, diese kann natürlich variieren, vorallem in der Anzahl der Server-Nodes und Server-Ports.

Das blabber.im Szenario kann im Blog-Eintrag nachgelesen werden. Fragen dazu sind gerne gesehen.

Punkt 1: Installation von Tor

Auf jeder Node installieren wir zuerst den Tor Dienst, ich gehe von einem Debian 9 (Stretch) System aus.

Punkt 2: Tor Hidden Service Konfiguration

Ebenfalls auf jeder Node aktivieren wir den Hidden Service Teil in der Konfiguration. Je nach Projekt könnt ihr z.B. den XMPP Port oder auch den Webserver Port wählen. Ich denke das Prinzip sollte somit klar sein.

Punkt 3: Tor Hidden Server starten

Den Tor Dienst können wir nun auf jeder Node starten.

Beim ersten Start wird im angegeben Ordner (z.B. /var/lib/tor/projektname_xmpp/) eine hostname und private_key Datei erzeugt. In der hostname Datei liegt die .onion-Adresse die wir später für den OnionBalance Dienst benötigen.

Punkt 4: Installation von OnionBalance

Die OnionBalance Software funktioniert im Grunde wie ein gewöhnlicher DNS-Lastverteiler im Round-Robin Verfahren. OnionBalance ist in der Lage die Tor-Nodes im Backend auf Erreichbarkeit zu überprüfen. Das ist ein großer Vorteil gegenüber DNS.

Zusätzlich hält OnionBalance die Verbindung nicht selbst aufrecht, sondern leitet direkt an die Tor-Nodes weiter. Somit fließt kein Traffic direkt über OnionBalance!

Wir installieren OnionBalance wieder auf jeder Node.

Punkt 5: OnionBalance Konfiguration erstellen

Mit dem folgenden Befehl erstellen wir eine komplette Konfiguration inklusive Tor Hidden Service, welche wir bereits durchgeführt haben.

Nur auf einer Node ausführen!

Wir kopieren nur die Master Konfiguration /root/onionbalance_master_conf/master/.

Punkt 6: OnionBalance Konfiguration anpassen

Wir passen die Konfiguration nach unseren Wünschen an. In jeder address: Zeile muss der .onion-Hostname (ohne .onion) der einzelnen Node stehen. Diesen haben wir bereits in Punkt 3 unter /var/lib/tor/projektname_xmpp/hostname auf jeder Node erzeugt.

Beispiel Konfiguration:

Die config.yaml und den Master Key ifvjmemqhjwrylze.key verteilen wir auf alle 3 Server-Nodes.
OnionBalance kann laut eigener Beschreibung mehrfach mit dem selben Master Key online gehen. Eine Node wird im Tor-Netzwerk automatisch zum Primary auserwählt.

Punkt 7: OnionBalance starten

Wir starten auf allen Nodes unseren Tor-Lastverteiler.

Das war es auch schon, euer XMPP oder Web Dienst ist nun unter ifvjmemqhjwrylze.onion erreichbar. Sollte eine Node ausfallen übernimmt automatisch eine andere die Primary-Funktion.

Tipp: Ich empfehle jedem ein wenig CPU oder GPU Zeit in die Erstellung eigener Tor Private Keys zu stecken. Eins der besten Tools dazu ist Scallion. Ergebnis kann dann wie bei blabber.im die .onion-Adresse blabberdrepaujvm.onion sein.

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.