Skip to main content

Secure Shell über das Onion-Netzwerk

1 Hintergrund

Wir möchten eine Möglichkeit haben, Server die bei Kunden stehen aus der Ferne zu warten, ohne auf dem Router Ports zu öffnen. Hierfür werden wir einen Hidden Service einrichten, welcher es ermöglich sich über das Onion-Netzwerk mit SSH zu verbinden. 

In den Nachfolgenden Ausführungen läuft sowohl der Server als auch der Client mit Arch Linux. 

Mehr Information über Onion Routing.

2 Server

Zuerst nehmen wir alle nötigen Installationen und Konfigurationen auf dem Server vor, welchen wir erreichen möchten. 

2.1 Installation der nötigen Software

Auf dem Server müssen die Pakete tor und openssh installiert werden. 

Beide Pakete können mit folgendem Befehl gleichzeitig installiert werden. 

 

sudo pacman tor openssh

2.2 Konfiguration des SSH Daemons

Wir möchten zuerst den SSH-Daemon aktivieren und starten. Vorher nehmen wir aber noch einige kleine Konfigurationen vor. Wir öffnen die entsprechende Konfigurationsdatei mit einem Editor: 

 

sudo vim /etc/ssh/sshd_config

 

In der Datei werden wir einen Port definieren, welcher verwendet werden soll. Wir ändern die Zeile

 

#Port 22

 

in 

 

Port 52222

 

Nach dem Speichern kann der Dienst aktiviert und gestartet werden. 

 

sudo systemctl enable sshd
sudo systemctl start sshd

2.3 Konfiguration von TOR

Zunächst muss für den Hidden Service ein Ordner im Verzeichnis /var/lib/tor erstellt werden. Wir nennen dieses sshd. 

 

sudo mkdir /var/lib/tor/sshd

 

Da der User tor den Service betreibt, soll auch dieser und nur dieser User Zugriff auf den Ordner haben. 

 

sudo chown tor:users /var/lib/tor/sshd
sudo chmod -R 700 /var/lib/tor/sshd

 

Der Hidden Service muss nun noch in der Konfiguration für TOR-Benutzer eingetragen werden. 

 

sudo vim /etc/tor/torrc

 

Die Datei wird um die folgenden Zeilen ergänzt: 

 

HiddenServiceDir /var/lib/tor/sshd
HiddenServicePort 52222 127.0.0.1:52222
HiddenServiceAuthorizeClient stealth clientname #clientname = hostname des Client

 

Nun müssen wir noch den TOR Daemon aktivieren und starten, damit der Hidden Service zur Verfügung gestellt wird. Wenn alles erfolgreich eingerichtet wurde, sollte der tor.service laufen und im Ordner /var/lib/tor/sshd wurden die Dateien "client_keys", "hostname" und "private_key" erstellt. 

Wir lassen uns nun die Datei hostname anzeigen und kopieren den Inhalt. 

 

cat /var/lib/tor/sshd/hostname

 

Es wird bei unserem Beispiel das folgende ausgegeben: 

 

mhxifkxct4dz7gu4.onion pYYNwG+RsD8YB/TcKQFhDB # client: service

 

mhxifkxct4dz7gu4.onion ist die Adresse und pYYNwG+RsD8YB/TcKQFhDB ist ein Cookie ohne den die Verbindung nicht möglich ist. 

3 Client

Um eine Verbindung herstellen zu können muss auch jeder Client, der sich Verbinden möchte, entsprechend Konfiguriert werden. 

3.1 Installation der benötigten Pakete

Auf dem Client muss tor und torsocks installiert werden. Letzteres um den SSH-Befehl über das Onion-Netzwerk ausführen zu können. 

 

sudo pacman -S tor torsocks

3.2 Konfiguration

Damit der Client sich beim Server authentifizieren kann müssen die Adresse und der Cookie in die Datei torrc eingetragen werden.

 

sudo vim /etc/tor/torrc

 

Die Datei muss nun um die folgende Zeile ergänzt werden: 

 

HidServAuth mhxifkxct4dz7gu4.onion pYYNwG+RsD8YB/TcKQFhDB

 

Der TOR Daemon kann nun gestartet werden

 

sudo systemctl start tor

 

und kann, wenn er nicht mehr benötigt wird, wieder gestoppt werden. 

 

sudo systemctl stop tor 

3.3 Verbinden

Um sich zu verbinden sollte man sich zuerst vergewissern, dass der tor Daemon läuft. Ist dies der Fall können wir uns mit dem folgenden Befehl mit dem Server verbinden.

 

torify ssh -p 52222 username@mhxifkxct4dz7gu4.onion

 

Bei der ersten Verbindung wird der Server-Schlüssel angezeigt, welcher umbedingt mit dem Server abgeglichen werden sollte.