Überall per SSH erreichbar mit TOR

Arch
Heimserver
ubuntuusers
IPv6
Autor:in

produnis

Veröffentlichungsdatum

2. Januar 2018

Heute möchte ich eine alternative Verwendungsweise von TOR vorstellen: Wir nutzen das TOR-Netzwerk, um unseren Rechner per SSH erreichbar zu machen. Der Vorteil des TOR-Netzes ist hierbei, dass wir uns keine Gedanken mehr um Firewalls, Port-Forwarding und DynDNS-Adressen machen müssen. Über das TOR-Netz ist unser Rechner direkt erreichbar, (fast) egal, wo wir ihn ans Netz hängen. Das ist für einen Homeserver interessant, der “nur” IPv6 hat, oder aber (bei mir zB) für RaspberryPis, die man irgendwo mit hinnimmt, anschließt und stehen lässt.

Vorbereitung

Wir installieren TOR, torsocks und nyx. Unter Archlinux geht das zB per:

pacaur -S tor torsocks nyx

Jetzt legen wir noch ein Verzeichnis für das Logfile an:

sudo mkdir /var/log/tor                   # Logfile
sudo touch /var/log/tor/notices.log       # Logfile
sudo chmod a+rw /var/log/tor/notices.log  # Logfile

Wir machen unseren Port 22 als “hidden service” verfügbar. Hierfür benötigt TOR noch ein eigenes Verzeichnis:

sudo mkdir /var/lib/tor/hidden_service/   # für Hidden-Service (zB SSH)

Mit dem Programm nyx können wir unseren TOR-Server später kontrollieren. Damit nicht jeder Zugriff auf den Controllport bekommt, erstellen wir ein Passwort-Hash:

tor --hash-password "MEIN PASSWORT"       # Password für nyx festlegen

Dies wirft so einen Hashwert aus: 16:EC846041E12046F96027CDB036371025913DDEC98B66B0AE4D0F19B409. Diesen Hash-Wert benötigen wir noch!

Konfiguration

Die Kofiguration von TOR erfolgt über die Datei /etc/tor/torrc. Tor bringt hier eine Standardeinstellung mit, die unbedingt geändert werden muss. Standardmäßigt ist der TOR-Server nämlich als Exit-Node konfiguriert, und das wollen wir ja nicht! Folgende Einstellungen reichen für unsere Zwecke aus:

Log notice file /var/log/tor/notices.log
DataDirectory /var/lib/tor
ControlPort 9051            # für nyx
HashedControlPassword 16:EC846041E12046F96027CDB036371025913DDEC98B66B0AE4D0F19B409 #ersetze s.o.
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22  # Port 22 auch über TOR 
ExitPolicy reject *:*       # no exits allowed !!!

Ihr müsst natürlich den Hash-Wert eures Passwortes entsprechend anpassen. Wichtig ist die letzte Zeile ExitPolicy reject *:*, welche den Exit-Node ausschaltet.

TOR ist jetzt installiert und kann über Port 9051 kontrolliert werden. Es wird KEIN Traffic nach außen geleitet (Exit-Node) und es wird KEIN Traffic hin- und hergeschoben (relay).

Der TOR-Server wird gestartet mit:

sudo systemctl start tor.service

Mit dem Programm nyx kann man nun die Aktivitäten des TOR-Servers begutachten.

nyx

SSH

Nach dem Start des TOR-Servers steht in der Datei /var/lib/tor/hidden_service/hostname die Onion-Adresse, unter welcher der Server nun erreichbar ist.

Der ssh-Aufruf am Client (der ebenfalls mit TOR verbunden sein muss, ist ja klar) erfolgt dann zB per torsocks:

torsocks ssh produnis@ipujtasre32xw656s.onion

Die Onion-Adressen können auch in der .ssh/config wie gewohnt hinterlegt werden.