SSH-Port-Forwarding-Beispiel

Was Ist SSH-Port-Weiterleitung, auch bekannt als SSH-Tunneling?

Die SSH-Portweiterleitung ist ein Mechanismus in SSH zum Tunneln von Anwendungsports vom Clientcomputer zum Servercomputer oder umgekehrt. Es kann verwendet werden, um älteren Anwendungen Verschlüsselung hinzuzufügen, Firewalls zu durchlaufen, und einige Systemadministratoren und IT-Experten verwenden es, um Hintertüren von ihren Heimcomputern aus in das interne Netzwerk zu öffnen. Es kann auch von Hackern und Malware missbraucht werden, um den Zugriff aus dem Internet auf das interne Netzwerk zu öffnen., Eine umfassendere Übersicht finden Sie auf der SSH-Tunneling-Seite.

Lokale Weiterleitung

Lokale Weiterleitung wird verwendet, um einen Port vom Clientcomputer an den Servercomputer weiterzuleiten. Grundsätzlich überwacht der SSH-Client Verbindungen an einem konfigurierten Port und tunnelt die Verbindung zu einem SSH-Server, wenn er eine Verbindung empfängt. Der Server stellt eine Verbindung zu einem konfigurierten Zielport her, möglicherweise auf einem anderen Computer als dem SSH-Server.,

Typische Anwendungen für die lokale Portweiterleitung sind:

  • Tunneln von Sitzungen und Dateiübertragungen über Jump-Server

  • Herstellen einer Verbindung zu einem Dienst in einem internen Netzwerk von außen

  • Herstellen einer Verbindung zu einer Remote-Dateifreigabe über das Internet

Einige Organisationen für alle eingehenden SSH-Zugriffe über einen einzelnen Jump-Server. Der Server kann eine Standard-Linux / Unix-Box sein, in der Regel mit einigen zusätzlichen Härten, Intrusion Detection und / oder Protokollierung, oder es kann eine kommerzielle Jump-Server-Lösung sein.,

Viele Jump-Server erlauben eingehende Portweiterleitung, sobald die Verbindung authentifiziert wurde. Eine solche Portweiterleitung ist praktisch, da technisch versierte Benutzer interne Ressourcen recht transparent nutzen können. Sie können beispielsweise einen Port auf ihrem lokalen Computer an den Intranet-Webserver des Unternehmens, an den IMAP-Port eines internen Mailservers, an die 445-und 139-Ports eines lokalen Dateiservers, an einen Drucker, an ein Versionskontroll-Repository oder an fast jedes andere System im internen Netzwerk weiterleiten. Häufig wird der Port zu einem SSH-Port auf einem internen Computer getunnelt.,

In OpenSSH wird die lokale Portweiterleitung mit der Option -L konfiguriert:

 ssh -L 80:intra.example.com:80 gw.example.com

Dieses Beispiel öffnet eine Verbindung zum gw.example.com jump Server und leitet jede Verbindung zu Port 80 auf dem lokalen Computer an Port 80 auf intra.example.comweiter.

Standardmäßig kann jeder (auch auf verschiedenen Computern) eine Verbindung zum angegebenen Port auf dem SSH-Clientcomputer herstellen., Dies kann jedoch auf Programme auf demselben Host beschränkt werden, indem eine Bindeadresse angegeben wird:

 ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

Die Option LocalForward in der OpenSSH-Clientkonfigurationsdatei kann zum Konfigurieren der Weiterleitung verwendet werden, ohne sie in der Befehlszeile angeben zu müssen.

Remote Forwarding

In OpenSSH werden Remote-SSH-Portweiterleitungen mit der Option -R angegeben. Beispiel:

 ssh -R 8080:localhost:80 public.example.com

Dadurch kann jeder auf dem Remote-Server eine Verbindung zum TCP-Port 8080 auf dem Remote-Server herstellen., Die Verbindung wird dann zurück zum Client-Host getunnelt, und der Client stellt dann eine TCP-Verbindung zu Port 80 auf localhosther. Anstelle von localhost kann jeder andere Hostname oder jede andere IP-Adresse verwendet werden, um den Host anzugeben, mit dem eine Verbindung hergestellt werden soll.

Dieses spezielle Beispiel wäre nützlich, um jemandem von außen Zugriff auf einen internen Webserver zu gewähren. Oder eine interne Webanwendung dem öffentlichen Internet zugänglich machen. Dies kann von einem Mitarbeiter, der von zu Hause aus arbeitet, oder von einem Angreifer durchgeführt werden.,

Standardmäßig erlaubt OpenSSH nur die Verbindung zu entfernten weitergeleiteten Ports vom Serverhost. Die Option in der Serverkonfigurationsdatei sshd_config kann jedoch verwendet werden, um dies zu steuern. Folgende Alternativen sind möglich:

 GatewayPorts no

Dadurch wird eine Verbindung zu weitergeleiteten Ports von außerhalb des Servercomputers verhindert.

 GatewayPorts yes

Dadurch kann jeder eine Verbindung zu den weitergeleiteten Ports herstellen. Wenn sich der Server im öffentlichen Internet befindet, kann jeder im Internet eine Verbindung zum Port herstellen.,

 GatewayPorts clientspecified

Dies bedeutet, dass der Client eine IP-Adresse angeben kann, von der aus Verbindungen zum Port zulässig sind. Die Syntax hierfür lautet:

 ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

In diesem Beispiel sind nur Verbindungen von der IP-Adresse 52.194.1.73 zu Port 8080 zulässig.

OpenSSH lässt auch den weitergeleiteten Remote-Port als 0 angeben. In diesem Fall weist der Server dynamisch einen Port zu und meldet ihn dem Client. Bei Verwendung mit der Option -O forward druckt der Client die zugewiesene Portnummer in die Standardausgabe.,

Öffnen von Hintertüren in das Unternehmen

Remote-SSH-Portweiterleitung wird häufig von Mitarbeitern verwendet, um Hintertüren in das Unternehmen zu öffnen. Der Mitarbeiter kann beispielsweise festlegen, dass er einen Server mit freier Ebene von Amazon AWS abruft und sich vom Büro bei diesem Server anmeldet, wobei er die Remoteweiterleitung von einem Port auf dem Server an einen Server oder eine Anwendung im internen Unternehmensnetzwerk angibt. Es können mehrere Remote Forwards angegeben werden, um den Zugriff auf mehr als eine Anwendung zu öffnen.,

Der Mitarbeiter würde auch GatewayPorts yes auf dem Server setzen (die meisten Mitarbeiter haben zu Hause keine festen IP-Adressen, sodass sie die IP-Adresse nicht einschränken können).

Der folgende Befehl öffnet beispielsweise den Zugriff auf eine interne Postgres-Datenbank an Port 5432 und einen internen SSH-Port an Port 2222.

 ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net

Serverseitige Konfiguration

Die AllowTcpForwarding-Option in der OpenSSH Server-Konfigurationsdatei muss auf dem Server aktiviert sein, um die Portweiterleitung zuzulassen. Standardmäßig ist die Weiterleitung zulässig., Mögliche Werte für diese Option sind yes oder all, um alle TCP-Weiterleitungen zuzulassen, no, um alle TCP-Weiterleitungen zu verhindern, local, um lokale Weiterleitungen zuzulassen, und remote, um Remote-Weiterleitungen zuzulassen.

Eine weitere Option von Interesse ist AllowStreamLocalForwarding, die zum Weiterleiten von Unix-Domänensockets verwendet werden kann. Es können die gleichen Werte wie AllowTcpForwarding. Der Standardwert ist yes.,

Zum Beispiel:

 AllowTcpForwarding remote AllowStreamLocalForwarding no

Die Konfigurationsoption GatewayPorts wie oben beschrieben wirkt sich auch auf Remote-Port-Weiterleitungen aus. Mögliche Werte waren no (nur lokale Verbindungen vom Serverhost zulässig; Standard), yes (jeder im Internet kann eine Verbindung zu Remote forwarded Ports herstellen) und clientspecified (Client kann eine IP-Adresse angeben, die eine Verbindung herstellen kann, jeder kann, wenn nicht angegeben).,

So verhindern Sie, dass die SSH-Portweiterleitung Firewalls umgeht

Wir empfehlen, die Portweiterleitung ausdrücklich zu deaktivieren, wenn sie nicht benötigt wird. Wenn Sie die Portweiterleitung aktiviert lassen, kann die Organisation Sicherheitsrisiken und Hintertüren ausgesetzt werden. Wenn beispielsweise ein Server, der nur SFTP-Dateiübertragungen bereitstellen soll, Portweiterleitungen zulässt, können diese Weiterleitungen verwendet werden, um unbeabsichtigten Zugriff über das Intranet auf das interne Netzwerk zu erhalten.

Das Problem ist, dass die Portweiterleitung in der Praxis nur durch einen Server oder eine Firewall verhindert werden kann., Ein Unternehmen kann nicht alle Server im Internet kontrollieren. Die Firewall-basierte Steuerung kann auch schwierig sein, da die meisten Unternehmen über Server in Amazon AWS und anderen Cloud-Diensten verfügen und auf diese Server normalerweise über SSH zugegriffen wird.

Leave a Comment