GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH-Tunneling und Proxying

Einführung:

SSH, auch bekannt als Secure Shell oder Secure Socket Shell, ist ein Netzwerkprotokoll, das Benutzern, insbesondere Systemadministratoren, eine sichere Möglichkeit bietet, über ein ungesichertes Netzwerk auf einen Computer zuzugreifen.

Secure Shell bietet starke Kennwortauthentifizierung und Authentifizierung mit öffentlichen Schlüsseln sowie verschlüsselte Datenkommunikation zwischen zwei Computern, die über ein offenes Netzwerk wie das Internet verbunden sind.

SSH-Tunneling ist eine Methode zum Transport beliebiger Netzwerkdaten über eine verschlüsselte SSH-Verbindung. Es kann aus zahlreichen Gründen verwendet werden, hauptsächlich um Legacy-Anwendungen zu verschlüsseln, als virtuelles privates Netzwerk zu verwenden und über Firewalls auf Intranetdienste zuzugreifen. Es bietet auch eine Möglichkeit, den Datenverkehr einer bestimmten Anwendung durch Portweiterleitung zu sichern, indem im Grunde jeder TCP/IP-Port über SSH getunnelt wird. Das bedeutet, dass der Anwendungsdatenverkehr innerhalb einer verschlüsselten SSH-Verbindung geleitet wird, sodass er während der Übertragung nicht belauscht oder abgefangen werden kann.

Voraussetzungen:

  1. SSH-Server Hören auf SSH-Verbindungen, (X11Forwarding muss aktiviert sein, Sie können es in der sshd-Konfigurationsdatei überprüfen)
  2. SSH-Client um Datenverkehr von einem lokalen Überwachungsport über den SSH-Server an den Anwendungsserver weiterzuleiten
  3. Zielserver Dienste anbieten (http, vnc, etc.)

Der SSH-Server und der Zielserver können sich auf demselben Computer oder auf verschiedenen Computern befinden, auf die über das Netzwerk zugegriffen werden kann. Das folgende Diagramm zeigt den SSH-Server und die Anwendungsserver befinden sich auf verschiedenen Computern und sind im Netzwerk verbunden, und der Client-Computer greift über das Internet auf den SSH-Server zu.

Lassen Sie uns ein Setup erstellen, bei dem der Client eine Verbindung zu einem Dienst herstellen möchte, der keine native Verschlüsselung verwendet, aber nicht möchte, dass der Datenverkehr unverschlüsselt über das Internet gesendet wird. Die Umgebung für dieses Szenario ist wie folgt.

SSH-Server:SSH lauscht auf Port 22 an der IP-Adresse 192.168.1.1

Zielserver:Der VNC-Dienst überwacht Port 5900 an der IP-Adresse 192.168.1.2

Client-Rechner:SSH- und VNC-Clients installiert

Tunnel mit PuTTY erstellen :

  1. Öffnen Sie die Benutzeroberfläche des PuTTY-Clients
  2. Geben Sie im Sitzungsfenster unter „Grundlegende Optionen für Ihre PuTTY-Sitzung“ die IP-Adresse und den Überwachungsport für den SSH-Server ein, wie im folgenden Bild zu sehen:

3. Wählen Sie im linken Bereich Connection->SSH->Tunnel

4. Geben Sie unter „Optionen zur Steuerung der SSH-Portweiterleitung“ die folgenden Einstellungen ein.

5. Quellport:Wählen Sie einen beliebigen Port, der auf Ihrem Client nicht verwendet wird; das Beispiel verwendet 1590.

6. Ziel:IP-Adresse und Überwachungsport für den Zielserver, 192.168.1.2:5900.

7. Lassen Sie die Optionsfelder „Lokal“ und „Auto“ aktiviert.

8. Klicken Sie auf „Hinzufügen“, um diese Einstellungen zu speichern.

9. Klicken Sie auf „Öffnen“, um den SSH-Tunnel zu erstellen. Geben Sie Ihren Benutzernamen und Ihr Passwort für den SSH-Server ein, wenn Sie dazu aufgefordert werden.

SSH-Tunnel mit OPENSSH erstellen:

Ein SSH-Tunnel kann mit dem folgenden Befehl mit dem OPENSSH-Client erstellt werden.

ssh -L 1590:192.168.1.2:5900 192.168.1.1

Hier -L 1590 gibt den lokalen Port an

192.168.1.2:5900 gibt die IP und den Port des Zielservers an

192.168.1.1 Gibt die IP-Adresse des SSH-Servers an

Melden Sie sich nach Eingabe des Befehls mit Ihren Zugangsdaten am SSH-Server an.

VNC-Dienst über SSH-Tunnel verbinden :

Nach erfolgreicher Anmeldung beim SSH-Server konfigurieren Sie Ihren VNC-Client so, dass er sich über den lokalen Port beim Zielserver anmeldet.

Verwenden Sie die lokale Loopback-Adresse 127.0.0.1 und Port 1590

Das Beispiel zeigte das Tunneling für den VNC-Port, die gleichen Einstellungen können verwendet werden, um auf jeden Dienst zuzugreifen, indem die Ports und IPs geändert werden.

SSH-Reverse-Tunneling :

Reverse-Tunneling ist ähnlich, aber in diesem Fall kann der Zielserver den Tunnel verwenden, um auf Dienste zuzugreifen, die im Quellnetzwerk oder auf der Maschine selbst gehostet werden.

Betrachten wir ein Beispiel,

Angenommen, Sie haben einen Server in einem Remote-Netzwerk hinter einer Firewall und nur SSH (Port 22) ist vom Remote-Netzwerk zu Ihrem Netzwerk geöffnet, aber Sie möchten auf einen HTTP-Dienst zugreifen, der auf Port 80 läuft und auf Ihrem Linux-Rechner gehostet wird.

Für Szenarien wie dieses ist Reverse-Tunneling praktisch. Sehen wir uns unten an, wie es sicher und einfach funktioniert.

Verwenden Sie den folgenden Befehl auf Ihrer Linux-Box, auf der Ihr HTTP-Dienst gehostet wird…

ssh -R 180:localhost:80 [email protected]

Wobei -R 180:localhost ist der entfernte Port und die IP / der Hostname (wird vom entfernten Server verwendet, um auf den HTTP-Dienst zuzugreifen)

Und [email protected] ist die IP und der Benutzername des Remote-Servers, von dem aus Sie auf Ihren Webdienst zugreifen möchten

Nach Eingabe des Befehls login mit den Zugangsdaten,

Jetzt können Sie vom Remote-Server aus auf Ihren Webserver zugreifen.

Es kann viele Szenarien geben, in denen SSH-Tunneling und Reverse-Tunneling verwendet werden können, um auch auf das Unzugängliche zuzugreifen 🙂 mit der Leichtigkeit und Sicherheit von ssh dahinter.


Linux
  1. So richten Sie SSH-Tunneling ein

  2. Herunterladen und Hochladen von Dateien über SSH

  3. Warum ist meine SSH-Anmeldung langsam?

  4. vncserver -localhost und SSH-Tunneling

  5. Benutzername und Passwort in der Befehlszeile mit sshfs

ScanSSH – Schneller SSH-Server und offener Proxy-Scanner

SSH-Server

So installieren und aktivieren Sie den SSH-Server unter Debian 10

Generieren und Verwenden eines SSH-Schlüssels mit PuTTY

So führen Sie SSH zum Server über Linux

Häufige Serverprobleme und Lösungen