Einen SSH-Server mit Tor einrichten um ihn vor Shodan und Hackern zu verstecken

Tor SSH Key

Der nächste libSSH- oder OpenSSH-Exploit könnte gleich um die Ecke sein. Halten Sie Ihren SSH-Dienst aus der Datenbank von Shodan heraus, bevor Hacker neue Wege finden, das Passwort zu umgehen, das den Server schützt.

Shodan wird als “Suchmaschine für Hacker” bezeichnet, weil es buchstäblich eine durchsuchbare Datenbank von Geräten und Servern ist, die mit dem Internet verbunden sind. Es erlaubt jedem, nach Webcams, Routern, Servern, Raspberry Pis, Ampeln, Kassensystemen, industriellen Kontrollsystemen und vielem mehr zu suchen.

Das Web-Tool erreicht dies, indem es nach dem Zufallsprinzip jede mögliche existierende IP-Adresse durchläuft (unabhängig davon, ob sie online ist oder nicht verwendet wird) und versucht, Service-Banner auf verschiedenen Ports zu extrahieren. Dienstbanner speichern normalerweise Metadaten über den laufenden Dienst, wie den Dienstnamen, den Typ und die Versionsnummer.

Warum SSH mit Tor einrichten?

Jedes Gerät, das mit dem Internet verbunden ist, wird unweigerlich von Shodan und anderen Datenbanken wie Censys gescannt. Hacker benutzen diese Datenbanken, um veraltete, verwundbare Server zu finden. Selbst Systemadministratoren, die ihre Server regelmäßig aktualisieren und die besten Sicherheitspraktiken befolgen, sind anfällig für Exploits. Die libSSH-Authentifizierungsumgehungsschwachstelle ist ein hervorragendes Beispiel dafür.

Die libSSH-Schwachstelle ermöglichte es Hackern, sich mit SSH-Diensten zu verbinden, ohne vorher eine Authentifizierung durchzuführen. Die aktuellsten Dienste waren immer noch anfällig für diesen Exploit und gefährdeten viele Server und Websites. Noch wichtiger ist, dass vollständig aktualisierte Systeme immer noch für Exploits anfällig sind, die noch nicht bekannt sind. Blackhats horten und verkaufen manchmal Sicherheitslücken in privaten Communities. Es ist nicht abzusehen, wie viele unveröffentlichte OpenSSH-Exploits heute existieren könnten.

Tor-Onion-Dienste können helfen, die Gefährdung zu verringern. Ähnlich wie man auf Onion-Webseiten nicht mit einem normalen Webbrowser zugreifen kann, können SSH-Dienste so konfiguriert werden, dass sie nur den Zugriff über Tor erlauben. Das kann die Dienste für Suchmaschinen wie Shodan komplett unzugänglich machen und für Hacker schwieriger zu finden.

Schritt 1: Tor installieren

Als erstes müssen wir Tor sowohl auf dem Virtual Private Server (VPS) als auch auf dem Client-Computer installieren. Der Client kann ein Debian-, Ubuntu- oder ein Kali-System sein, um mitzumachen. Benutzer von MacOS und Windows 10 können sich die offizielle Dokumentation des Tor-Projekts ansehen, um Tor richtig zu installieren. Für die meisten Leser wird der SSH-Server wahrscheinlich ein Debian-VPS sein. Dieser kann aber auch auf einem Ubuntu-Desktop oder einem Raspberry Pi eingerichtet werden, für diejenigen, die von zu Hause aus auf Computer zugreifen wollen.

Tor ist in vielen Linux-Repositories verfügbar. In den meisten Fällen werden die Pakete nicht zuverlässig gewartet oder aktualisiert, was bedeutet, dass kritische Stabilitäts- und Sicherheitsupdates fehlen könnten. Außerdem sollte Anonymitätssoftware immer direkt von der Quelle (z.B. torproject.org) erworben werden.

SSH Server

Logge dich in deinen SSH-Server ein und füge das Repository des Tor-Projekts zu deiner APT-Repository-Liste mit dem folgenden echo-Befehl hinzu, der unter Debian funktioniert.

~$ echo -e "deb https://deb.torproject.org/torproject.org $(lsb_release -sc) main \ndeb-src https://deb.torproject.org/torproject.org $(lsb_release -sc) main" > /etc/apt/sources.list.d/tor.list

Wenn Sie Kali Linux verwenden, benutzen Sie stattdessen den folgenden Befehl.

~$ echo -e "deb https://deb.torproject.org/torproject.org stretch main \ndeb-src https://deb.torproject.org/torproject.org stretch main" > /etc/apt/sources.list.d/tor.list

Dann lade den Paket-Signierschlüssel des Tor-Projekts herunter und importiere ihn in deinen APT-Schlüsselbund mit dem folgenden Kommando.

~$ wget -O- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -

–2019-03-05 06:29:13– https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc
Resolving deb.torproject.org (deb.torproject.org)… 82.195.75.101, 2001:41b8:202:deb:213:21ff:fe20:1426
Connecting to deb.torproject.org (deb.torproject.org)|82.195.75.101|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 19665 (19K) [text/plain]
Saving to: ‘STDOUT’

– 100%[================================>] 19.20K 54.8KB/s in 0.4s

2019-03-05 06:29:16 (54.8 KB/s) – written to stdout [19665/19665]

You’ll see the “OK” output when the signing key has been added to your keyring. Next, update APT using the below apt-get command.

~$ apt-get update

Get:2 https://deb.torproject.org/torproject.org stretch InRelease [4,965 B]
Get:4 https://deb.torproject.org/torproject.org stretch/main Sources [1,169 B]
Get:5 https://deb.torproject.org/torproject.org stretch/main amd64 Packages [2,400 B]
Fetched 8,534 B in 8s (1,091 B/s)
Reading package lists… Done

Install Tor using the below apt-get command, and you’re done.

~$ apt-get install tor deb.torproject.org-keyring torsocks

Reading package lists… Done
Building dependency tree
Reading state information… Done
Suggested packages:
mixmaster torbrowser-launcher socat tor-arm apparmor-utils obfs4proxy
The following NEW packages will be installed:
deb.torproject.org-keyring
The following packages will be upgraded:
tor

Sowohl auf dem Client als auch auf dem VPS, auf dem der SSH-Server läuft, sollte Tor installiert sein. Stellen Sie sicher, dass Sie die oben genannten Schritte auf beiden Systemen durchführen.

SSH Client SSH Server

Schritt 2: Einrichten eines Onion-Dienstes auf dem Server

Der Tor-Prozess wird wahrscheinlich sofort nach der Installation ausgeführt, also stoppen Sie als root (sudo) den Prozess. Dies kann mit dem systemctl-Befehl gemacht werden.

~$ sudo systemctl stop tor

Dann öffnen Sie mit einem Texteditor die Datei /etc/tor/torrc. Dies ist die Konfigurationsdatei, die von Tor benutzt wird, um sein Verhalten zu ändern und Onion-Dienste zu erstellen.

~$ sudo nano /etc/tor/torrc

Es wird eine Menge Informationen in dieser Datei geben. Die meisten davon sind für diesen Artikel nicht relevant. Scrollen Sie ein wenig nach unten zum Abschnitt “Dieser Abschnitt ist nur für ortsgebundene Dienste”. In Debian und Kali Linux sieht er wie unten dargestellt aus.

############### Dieser Abschnitt ist nur für ortsgebundene versteckte Dienste ###

## Sobald Sie einen versteckten Dienst konfiguriert haben, können Sie sich den
## Inhalt der Datei “…/hidden_service/hostname” nach der Adresse
## um es anderen mitzuteilen.
##
## HiddenServicePort x y:z sagt, dass Anfragen auf Port x an die
## Adresse y:z umzuleiten.

## HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80

#HiddenServiceDir /var/lib/tor/other_hidden_service/
#HiddenServicePort 80 127.0.0.1:80
#HiddenServicePort 22 127.0.0.1:22
Unkommentieren (#) Sie eine “HiddenServiceDir”- und eine “HiddenServicePort”-Zeile, als solche:

############### Dieser Abschnitt ist nur für standortversteckte Dienste ###

## Sobald Sie einen versteckten Dienst konfiguriert haben, können Sie sich den
## Inhalt der Datei “…/hidden_service/hostname” nach der Adresse
## um es anderen mitzuteilen.
##
## HiddenServicePort x y:z sagt, dass Anfragen auf Port x an die
## Adresse y:z umzuleiten.

## HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80

HiddenServiceVerzeichnis /var/lib/tor/other_hidden_service/
#HiddenServicePort 80 127.0.0.1:80
VersteckterServicePort 22 127.0.0.1:22

Speichern Sie und beenden Sie den Texteditor. Starten Sie dann tor mit dem unten stehenden Befehl neu.

Nicht verpassen: Vim, der Unix-Texteditor, mit dem jeder Hacker vertraut sein sollte

~$ sudo systemctl restart tor

Die Datei “hostname” im Verzeichnis /var/lib/tor/other_hidden_service/ enthält die neue Onion-Adresse. Verwenden Sie cat, um die Datei zu lesen. Notieren Sie sich diese Onionadresse, sie wird im nächsten Schritt benötigt.

~$ cat /var/lib/tor/other_hidden_service/hostname

pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion

Schritt 3: Überprüfen Sie, ob der Onion-Dienst funktioniert (optional)

Bevor Sie fortfahren, sollten Sie sicherstellen, dass der SSH-Dienst über die neue Onion-Adresse erreichbar ist. Dies kann schnell mit torsocks überprüft werden, einem Shell-Wrapper, der verwendet wird, um Kommandozeilenanwendungen wie curl, wget oder nmap transparent für Tor zu machen.

Nicht verpassen: Die 80+ besten Webseiten im Tor-Netzwerk
Der folgende torsocks- und curl-Befehl fragt den neuen Onion-Dienst ab. Achte darauf, dass du die SSH-Portnummer (:22) anhängst, sonst fragt curl standardmäßig Port 80 ab und schlägt fehl. Eine erfolgreiche Abfrage gibt das SSH-Versionsbanner zurück, wie unten gezeigt.

~$ torsocks curl
http://pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion:22

SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u5

Schritt 4: Den SSH-Dienst privat machen

Standardmäßig lauschen die meisten SSH-Dienste auf jeder IPv4-Schnittstelle. Das ist zwar nicht bei allen Linux-Distributionen der Fall, aber bei beliebten wie Ubuntu und Debian. Dies wird normalerweise als “0.0.0.0” in der Datei /etc/ssh/sshd_config dargestellt, in der SSH alle Dienstkonfigurationen speichert.

Tor SSH

Auf diese Weise konfigurierte SSH-Dienste ermöglichen den Zugriff auf den Server von jedem Rechner der Welt aus. Das ist praktisch für Website-Administratoren, die von verschiedenen Geräten und Netzwerken aus Änderungen an ihrer Website vornehmen müssen.

Werfen wir zunächst einen Blick auf den SSH-Dienst, der im Hintergrund läuft. Verwenden Sie ss, ein Werkzeug zum Untersuchen von Sockets, um Prozesse (-p) anzuzeigen, die auf TCP-Verbindungen (-t) warten (-l).

~$ ss -plt

Zustand Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port
LISTEN 0 128 *:ssh *:* Benutzer:((“sshd”,pid=1148,fd=3))

Wenn der Server Anwendungen im Hintergrund laufen hat (z. B. Apache, Nginx, IRC-Software usw.), können hier viele Dienste erscheinen. Konzentrieren wir uns auf die Spalte Lokale Adresse:Port, die *:ssh lautet. Platzhalter zeigen an, dass der SSH-Dienst auf jeder verfügbaren IPv4- und IPv6-Schnittstelle lauscht.

Shodan ist in der Lage, diesen SSH-Dienst zu finden, weil er in diesem Zustand verfügbar (lauschend) ist. Um dies zu ändern, öffnen Sie die Datei /etc/ssh/sshd_config und suchen Sie die Zeile(n) “ListenAddress”.

~$ sudo nano /etc/ssh/sshd_confnig

Unter Debian sieht sie wie unten gezeigt aus. Sie werden wahrscheinlich auskommentiert sein, was normal ist. Wenn jede ListenAddress auskommentiert ist, fällt SSH auf seine Standardkonfiguration zurück, um auf jeder Schnittstelle zu lauschen.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Ändern Sie die ListenAddress-Zeile in “127.0.0.1” und kommentieren Sie sie als solche aus:

#Port 22
#AddressFamily beliebig
ListenAddress 127.0.0.1
#ListenAddress ::
Starten Sie dann den SSH-Dienst neu.

~$ sudo systemctl restart ssh

Unmittelbar nach dem Ausführen des systemctl-Befehls wird die aktuelle SSH-Verbindung möglicherweise geschlossen. Der SSH-Dienst ist unter keiner IPv4- oder IPv6-Adresse mehr verfügbar, daher ist es normal, dass die Verbindung unterbrochen wird.

Schritt 5: Verbinden Sie sich mit dem SSH-Server über Tor

Glücklicherweise wurde der Onion-Dienst auf dem Server eingerichtet, so dass der SSH-Dienst weiterhin erreichbar ist. Benutzen Sie nun vom Client (d.h. Laptop oder Remote-Computer) den folgenden torsocks-Befehl, um sich mit dem SSH-Dienst zu verbinden.

~$ torsocks ssh -p 22 username@pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion

Die Authentizität des Hosts ‘pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion (127.42.42.0)’ kann nicht festgestellt werden.
Der Fingerabdruck des ECDSA-Schlüssels ist SHA256:f22LX7WJfLGOiKxP+0+cA/l5Q1GsJLFA30ZyMyGLMl4.
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)? ja

Warnung: Permanently added ‘pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion’ (ECDSA) to the list of known hosts.
Das Passwort von username@pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion:

Schritt 6: Sicherstellen, dass der SSH-Dienst für Shodan nicht sichtbar ist

Nachdem Sie sich mit der onion-Adresse beim Server angemeldet haben, verwenden Sie erneut den Befehl ss, um die lauschenden Dienste anzuzeigen. Es sollte nicht mehr anzeigen, dass SSH auf jeder verfügbaren Schnittstelle lauscht, sondern nur noch auf 127.0.0.1.

~$ ss -plt

Zustand Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port
LISTEN 0 128 127.0.0.1:ssh *:* users:((“sshd”,pid=1162,fd=3))
Wir können dies weiter verifizieren, indem wir einen einfachen nmap-Versionsscan (-sV) auf dem Server ausführen.

~$ nmap -p 22 -sV

PORT ZUSTAND SERVICE VERSION
22/tcp geschlossen ssh

Der SSH-Dienst kann noch Tage oder sogar Wochen lang auf Shodan erscheinen. Shodan ist nicht besonders gut darin, alte Dienstbanner und Informationen zu löschen. Das bedeutet aber nicht, dass der SSH-Dienst für Angreifer noch zugänglich ist.

Fazit
Der bei weitem größte Nachteil bei der Verwendung von SSH mit Onion-Diensten ist die Langsamkeit. Die Antworten im Terminal können für jemanden, der nicht an Onion-Dienste und Tor gewöhnt ist, schmerzhaft langsam sein.

Tor so zu konfigurieren, dass es mit SSH-Diensten zusammenarbeitet, versteckt es vor Shodan, macht es aber nicht komplett unmöglich, von Hackern gefunden zu werden. Er kann immer noch über Tor erreicht werden, was seine Gefährdung deutlich minimiert, ihn aber nicht völlig unangreifbar macht.

Es gibt eine Sicherheitsfunktion in Tor namens HiddenServiceAuthorizeClient. Diese Funktion erlaubt es Benutzern, den Onion-Dienst mit einem Authentifizierungs-Cookie zu schützen. Zum Zeitpunkt der Erstellung dieses Artikels wird HiddenServiceAuthorizeClient nicht von den neueren Onion-Diensten der nächsten Generation unterstützt. Es wäre möglich, ältere Onion-Dienste zu generieren, aber es scheint eine schlechte Sicherheitspraxis zu sein, ein bald veraltetes Feature von Tor zu benutzen. In der Zukunft wird es möglich sein, HiddenServiceAuthorizeClient mit den Onionn der nächsten Generation zu benutzen, um sie komplett unzugänglich für jeden außer dir zu machen. Im Moment hilft es, wenn du die SSH-Portnummer auf einen Nicht-Standard wie 62359 oder 41171 änderst, damit sie nicht von den Skript-Kiddies im Darknet gesehen wird, die den Port 22 massenhaft scannen.

Schreibe einen Kommentar

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

Solve : *
13 × 14 =