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.

UnterstützenDas Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld.
Unterstütze unsere Arbeit mit einer Spende.
0

dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

2 Antworten

  1. Jim sagt:

    Leider komplett falsch!
    Du schreibst wie folgt:

    Beispiel XMPP:
    HiddenServiceDir /var/lib/tor/projektname_xmpp/
    HiddenServicePort 5222 127.0.0.1:5222

    Beispiel Web:
    HiddenServiceDir /var/lib/tor/projektname_web/
    HiddenServicePort 80 127.0.0.1:80

    Sobald ich diesen Pfad umbenenne etc. geht nichts mehr!
    Sprich ich kann auf das Projekt nichjt zugreifen.
    Und ja ich habe Tor neu gestartet.

    Es geht also um die folgende Einstellung:
    HiddenServiceDir /var/lib/tor/projektname_web/

    Im Orginal steht da:
    HiddenServiceDir /var/lib/tor/hidden_service/

    Sobald ich den Pfad anpasse z.B.: HiddenServiceDir /var/lib/tor/new/
    Funktioniert nichts mehr, sprich der Webserver erkennt den Pafd und die html Daten in dem Ordner nicht!
    Nur den orginalen Pfad nimmt TOR!!!

    Daher stimmt die Anleitung nicht und sollte mal überarbeitet werden.
    Zur Info, das ganze wurde auf einem vserver mit ubuntu 20.04 LTS getestet!

    • dominion sagt:

      Ich vermute du hast die Zeilen „Beispiel XMPP:“ und „Beispiel Web:“ auch in die /etc/tor/torrc eingefügt. Um das zu vermeiden, kommentiere ich die Zeilen in der Anleitung aus.

      Gerade unter Ubuntu 20.04 getestet, Ordner wird angelegt:
      root@ubuntu-2gb-nbg1-1:~# ls -lah /var/lib/tor/projektname_web/
      total 24K
      drwx--S--- 3 debian-tor debian-tor 4.0K May 6 17:51 .
      drwx--S--- 4 debian-tor debian-tor 4.0K May 6 17:51 ..
      drwx--S--- 2 debian-tor debian-tor 4.0K May 6 17:51 authorized_clients
      -rw------- 1 debian-tor debian-tor 63 May 6 17:51 hostname
      -rw------- 1 debian-tor debian-tor 64 May 6 17:51 hs_ed25519_public_key
      -rw------- 1 debian-tor debian-tor 96 May 6 17:51 hs_ed25519_secret_key

      Gruß
      dominion

Schreibe einen Kommentar

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