So verwenden Sie SSH-Tunneling, um auf eingeschränkte Server zuzugreifen und sicher zu surfen

Ein SSH-Client stellt eine Verbindung zu einem Secure Shell-Server her, mit dem Sie Terminalbefehle ausführen können, als würden Sie vor einem anderen Computer sitzen. Mit einem SSH-Client können Sie jedoch auch einen Port zwischen Ihrem lokalen System und einem Remote-SSH-Server „tunneln“.

Es gibt drei verschiedene Arten von SSH-Tunneln, die alle für unterschiedliche Zwecke verwendet werden. Bei jedem wird ein SSH-Server verwendet, um den Datenverkehr von einem Netzwerkport zu einem anderen umzuleiten. Der Datenverkehr wird über die verschlüsselte SSH-Verbindung gesendet, sodass er während der Übertragung nicht überwacht oder geändert werden kann.

Sie können dies mit dem sshBefehl tun, der unter Linux, macOS und anderen UNIX-ähnlichen Betriebssystemen enthalten ist. Unter Windows, das keinen integrierten ssh-Befehl enthält, empfehlen wir das kostenlose Tool PuTTY, um eine Verbindung zu SSH-Servern herzustellen. Es unterstützt auch SSH-Tunneling.

Lokale Portweiterleitung: Machen Sie Remote-Ressourcen auf Ihrem lokalen System zugänglich

Mit „Lokale Portweiterleitung“ können Sie auf lokale Netzwerkressourcen zugreifen, die nicht dem Internet ausgesetzt sind. Angenommen, Sie möchten von zu Hause aus auf einen Datenbankserver in Ihrem Büro zugreifen. Aus Sicherheitsgründen ist dieser Datenbankserver nur so konfiguriert, dass er Verbindungen vom lokalen Büronetzwerk akzeptiert. Wenn Sie jedoch im Büro Zugriff auf einen SSH-Server haben und dieser SSH-Server Verbindungen von außerhalb des Büronetzwerks zulässt, können Sie von zu Hause aus eine Verbindung zu diesem SSH-Server herstellen und auf den Datenbankserver zugreifen, als wären Sie im Büro. Dies ist häufig der Fall, da es einfacher ist, einen einzelnen SSH-Server vor Angriffen zu schützen, als verschiedene Netzwerkressourcen zu sichern.

Dazu stellen Sie eine SSH-Verbindung zum SSH-Server her und weisen den Client an, den Datenverkehr von einem bestimmten Port von Ihrem lokalen PC (z. B. Port 1234) an die Adresse des Datenbankservers und dessen Port im Büronetzwerk weiterzuleiten. Wenn Sie also versuchen, auf den Datenbankserver an Port 1234 Ihres aktuellen PCs, "localhost", zuzugreifen, wird dieser Datenverkehr automatisch über die SSH-Verbindung "getunnelt" und an den Datenbankserver gesendet. Der SSH-Server befindet sich in der Mitte und leitet den Datenverkehr hin und her. Sie können eine beliebige Befehlszeile oder ein grafisches Tool verwenden, um auf den Datenbankserver zuzugreifen, als würde er auf Ihrem lokalen PC ausgeführt.

Um die lokale Weiterleitung zu verwenden, stellen Sie normalerweise eine Verbindung zum SSH-Server her, geben Sie jedoch auch das -LArgument an. Die Syntax lautet:

ssh -L local_port: remote_address: remote_port [email protected]

Angenommen, der Datenbankserver in Ihrem Büro befindet sich unter 192.168.1.111 im Büronetzwerk. Sie haben Zugriff auf den SSH-Server des Büros ssh.youroffice.comunter und Ihr Benutzerkonto auf dem SSH-Server ist bob. In diesem Fall würde Ihr Befehl folgendermaßen aussehen:

ssh -L 8888: 192.168.1.111: 1234 [email protected]

Nachdem Sie diesen Befehl ausgeführt haben, können Sie über Port 8888 bei localhost auf den Datenbankserver zugreifen. Wenn der Datenbankserver einen Webzugriff anbietet, können Sie // localhost: 8888 in Ihren Webbrowser einbinden, um darauf zuzugreifen. Wenn Sie ein Befehlszeilentool hatten, das die Netzwerkadresse einer Datenbank benötigt, verweisen Sie auf localhost: 8888. Der gesamte an Port 8888 auf Ihrem PC gesendete Datenverkehr wird in Ihrem Büronetzwerk auf 192.168.1.111:1234 getunnelt.

Es ist etwas verwirrender, wenn Sie eine Verbindung zu einer Serveranwendung herstellen möchten, die auf demselben System wie der SSH-Server selbst ausgeführt wird. Angenommen, Sie haben einen SSH-Server an Port 22 auf Ihrem Bürocomputer, aber Sie haben auch einen Datenbankserver an Port 1234 auf demselben System unter derselben Adresse. Sie möchten von zu Hause aus auf den Datenbankserver zugreifen, das System akzeptiert jedoch nur SSH-Verbindungen an Port 22 und die Firewall lässt keine anderen externen Verbindungen zu.

In diesem Fall können Sie einen Befehl wie den folgenden ausführen:

ssh -L 8888: localhost: 1234 [email protected]

Wenn Sie versuchen, über Port 8888 auf Ihrem aktuellen PC auf den Datenbankserver zuzugreifen, wird der Datenverkehr über die SSH-Verbindung gesendet. Wenn es auf dem System ankommt, auf dem der SSH-Server ausgeführt wird, sendet der SSH-Server es an Port 1234 auf "localhost", dem gleichen PC, auf dem der SSH-Server selbst ausgeführt wird. Der "localhost" im obigen Befehl bedeutet also "localhost" aus Sicht des Remote-Servers.

Wählen Sie dazu in der PuTTY-Anwendung unter Windows Verbindung> SSH> Tunnel. Wählen Sie die Option "Lokal". Geben Sie unter "Quellport" den lokalen Port ein. Geben Sie unter "Ziel" die Zieladresse und den Port in der Form remote_address: remote_port ein.

Wenn Sie beispielsweise denselben SSH-Tunnel wie oben einrichten möchten, geben Sie ihn 8888als Quellport und localhost:1234als Ziel ein. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Sie müssen natürlich auch die Adresse und den Port des SSH-Servers selbst im Hauptbildschirm „Sitzung“ eingeben, bevor Sie eine Verbindung herstellen.

Remote Port Forwarding: Machen Sie lokale Ressourcen auf einem Remote-System zugänglich

"Remote-Port-Weiterleitung" ist das Gegenteil von lokaler Weiterleitung und wird nicht so häufig verwendet. Damit können Sie eine Ressource auf Ihrem lokalen PC auf dem SSH-Server verfügbar machen. Angenommen, Sie betreiben einen Webserver auf dem lokalen PC, vor dem Sie sitzen. Ihr PC befindet sich jedoch hinter einer Firewall, die keinen eingehenden Datenverkehr zur Serversoftware zulässt.

Angenommen, Sie können auf einen Remote-SSH-Server zugreifen, können Sie eine Verbindung zu diesem SSH-Server herstellen und die Remote-Port-Weiterleitung verwenden. Ihr SSH-Client weist den Server an, einen bestimmten Port (z. B. Port 1234) auf dem SSH-Server an eine bestimmte Adresse und einen bestimmten Port auf Ihrem aktuellen PC oder lokalen Netzwerk weiterzuleiten. Wenn jemand auf den Port 1234 auf dem SSH-Server zugreift, wird dieser Datenverkehr automatisch über die SSH-Verbindung "getunnelt". Jeder, der Zugriff auf den SSH-Server hat, kann auf den auf Ihrem PC ausgeführten Webserver zugreifen. Dies ist effektiv eine Möglichkeit, durch Firewalls zu tunneln.

Verwenden Sie den sshBefehl mit dem -RArgument , um die Fernweiterleitung zu verwenden. Die Syntax ist weitgehend dieselbe wie bei der lokalen Weiterleitung:

ssh -R remote_port: local_address: local_port [email protected]

Angenommen, Sie möchten eine Serveranwendung, die an Port 1234 auf Ihrem lokalen PC lauscht, an Port 8888 auf dem Remote-SSH-Server verfügbar machen. Die Adresse ssh.youroffice.comdes SSH-Servers lautet und Ihr Benutzername auf dem SSH-Server lautet bob . Sie würden den folgenden Befehl ausführen:

ssh -R 8888: localhost: 1234 [email protected]

Jemand könnte dann eine Verbindung zum SSH-Server an Port 8888 herstellen, und diese Verbindung wird zu der Serveranwendung getunnelt, die an Port 1234 auf dem lokalen PC ausgeführt wird, von dem aus Sie die Verbindung hergestellt haben.

Wählen Sie dazu in PuTTY unter Windows Verbindung> SSH> Tunnel. Wählen Sie die Option "Remote". Geben Sie unter „Quellport“ den Remote-Port ein. Geben Sie unter "Ziel" die Zieladresse und den Port in der Form local_address: local_port ein.

Wenn Sie beispielsweise das obige Beispiel einrichten möchten, geben Sie 8888als Quellport und localhost:1234als Ziel ein. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Sie müssen natürlich auch die Adresse und den Port des SSH-Servers selbst im Hauptbildschirm „Sitzung“ eingeben, bevor Sie eine Verbindung herstellen.

Die Benutzer könnten dann eine Verbindung zu Port 8888 auf dem SSH-Server herstellen und ihr Datenverkehr würde zu Port 1234 auf Ihrem lokalen System getunnelt.

Standardmäßig überwacht der Remote-SSH-Server nur Verbindungen von demselben Host. Mit anderen Worten, nur Personen auf demselben System wie der SSH-Server selbst können eine Verbindung herstellen. Dies ist aus Sicherheitsgründen. Sie müssen die Option "GatewayPorts" in sshd_config auf dem Remote-SSH-Server aktivieren, wenn Sie dieses Verhalten überschreiben möchten.

Dynamische Portweiterleitung: Verwenden Sie Ihren SSH-Server als Proxy

VERBINDUNG: Was ist der Unterschied zwischen einem VPN und einem Proxy?

Es gibt auch eine "dynamische Portweiterleitung", die ähnlich wie ein Proxy oder VPN funktioniert. Der SSH-Client erstellt einen SOCKS-Proxy, für den Sie Anwendungen konfigurieren können. Der gesamte über den Proxy gesendete Datenverkehr wird über den SSH-Server gesendet. Dies ähnelt der lokalen Weiterleitung: Der lokale Datenverkehr wird an einen bestimmten Port Ihres PCs gesendet und über die SSH-Verbindung an einen Remotestandort gesendet.

VERBINDUNG: Warum die Verwendung eines öffentlichen Wi-Fi-Netzwerks selbst beim Zugriff auf verschlüsselte Websites gefährlich sein kann

Angenommen, Sie verwenden ein öffentliches Wi-Fi-Netzwerk. Sie möchten sicher surfen, ohne beschnüffelt zu werden. Wenn Sie zu Hause Zugriff auf einen SSH-Server haben, können Sie eine Verbindung zu diesem Server herstellen und die dynamische Portweiterleitung verwenden. Der SSH-Client erstellt einen SOCKS-Proxy auf Ihrem PC. Der gesamte an diesen Proxy gesendete Datenverkehr wird über die SSH-Serververbindung gesendet. Niemand, der das öffentliche Wi-Fi-Netzwerk überwacht, kann Ihr Surfen überwachen oder die Websites zensieren, auf die Sie zugreifen können. Aus der Sicht aller Websites, die Sie besuchen, ist es, als würden Sie zu Hause vor Ihrem PC sitzen. Dies bedeutet auch, dass Sie diesen Trick verwenden können, um außerhalb der USA nur auf US-amerikanische Websites zuzugreifen - vorausgesetzt, Sie haben natürlich Zugriff auf einen SSH-Server in den USA.

Als weiteres Beispiel möchten Sie möglicherweise auf eine Medienserveranwendung zugreifen, die Sie in Ihrem Heimnetzwerk haben. Aus Sicherheitsgründen ist möglicherweise nur ein SSH-Server dem Internet ausgesetzt. Sie erlauben keine eingehenden Verbindungen aus dem Internet zu Ihrer Medienserveranwendung. Sie können die dynamische Portweiterleitung einrichten, einen Webbrowser für die Verwendung des SOCKS-Proxys konfigurieren und dann über den Webbrowser auf Server zugreifen, die in Ihrem Heimnetzwerk ausgeführt werden, als würden Sie zu Hause vor Ihrem SSH-System sitzen. Befindet sich Ihr Medienserver beispielsweise an Port 192.168.1.123 in Ihrem Heimnetzwerk, können Sie die Adresse 192.168.1.123über den SOCKS-Proxy in eine beliebige Anwendung einbinden und auf den Medienserver zugreifen, als wären Sie in Ihrem Heimnetzwerk.

Um die dynamische Weiterleitung zu verwenden, führen Sie den Befehl ssh mit dem folgenden -DArgument aus:

ssh -D local_port [email protected]

Angenommen, Sie haben Zugriff auf einen SSH-Server unter ssh.yourhome.comund Ihr Benutzername auf dem SSH-Server lautet bob. Sie möchten die dynamische Weiterleitung verwenden, um einen SOCKS-Proxy an Port 8888 auf dem aktuellen PC zu öffnen. Sie würden den folgenden Befehl ausführen:

ssh -D 8888 [email protected]

Sie können dann einen Webbrowser oder eine andere Anwendung so konfigurieren, dass Ihre lokale IP-Adresse (127.0.01) und Port 8888 verwendet werden. Der gesamte Datenverkehr dieser Anwendung wird durch den Tunnel umgeleitet.

Wählen Sie dazu in PuTTY unter Windows Verbindung> SSH> Tunnel. Wählen Sie die Option "Dynamisch". Geben Sie unter "Quellport" den lokalen Port ein.

Wenn Sie beispielsweise einen SOCKS-Proxy an Port 8888 erstellen möchten, geben Sie diesen 8888als Quellport ein. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Sie müssen natürlich auch die Adresse und den Port des SSH-Servers selbst im Hauptbildschirm „Sitzung“ eingeben, bevor Sie eine Verbindung herstellen.

Sie können dann eine Anwendung für den Zugriff auf den SOCKS-Proxy auf Ihrem lokalen PC konfigurieren (dh die IP-Adresse 127.0.0.1, die auf Ihren lokalen PC verweist) und den richtigen Port angeben.

VERBINDUNG: So konfigurieren Sie einen Proxyserver in Firefox

Beispielsweise können Sie Firefox für die Verwendung des SOCKS-Proxys konfigurieren. Dies ist besonders nützlich, da Firefox eigene Proxy-Einstellungen haben kann und keine systemweiten Proxy-Einstellungen verwenden muss. Firefox sendet seinen Datenverkehr über den SSH-Tunnel, während andere Anwendungen Ihre Internetverbindung normal verwenden.

Wenn Sie dies in Firefox tun, wählen Sie "Manuelle Proxy-Konfiguration", geben Sie "127.0.0.1" in das Feld "SOCKS-Host" ein und geben Sie den dynamischen Port in das Feld "Port" ein. Lassen Sie die Felder HTTP-Proxy, SSL-Proxy und FTP-Proxy leer.

Der Tunnel bleibt aktiv und geöffnet, solange die SSH-Sitzungsverbindung geöffnet ist. Wenn Sie Ihre SSH-Sitzung beenden und die Verbindung zu einem Server trennen, wird der Tunnel ebenfalls geschlossen. Verbinden Sie sich einfach erneut mit dem entsprechenden Befehl (oder den entsprechenden Optionen in PuTTY), um den Tunnel erneut zu öffnen.