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 nyxJetzt 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 # LogfileWir 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 festlegenDies 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.serviceMit dem Programm nyx kann man nun die Aktivitäten des TOR-Servers begutachten.
nyxSSH
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.onionDie Onion-Adressen können auch in der .ssh/config wie gewohnt hinterlegt werden.