Tunneling / Portweiterleitung
Was ist Tunneling beziehungsweise Portweiterleitung?
Tunneling oder Portweiterleitung (Port Forwarding) ist die Übertragung von Daten, die man nur innerhalb eines privaten, in der Regel eines Unternehmensnetzwerks, verwenden will, über ein öffentliches Netzwerk. Die Routing-Knoten des öffentlichen Netzwerks erkennen dabei nicht, dass die Übertragung Teil eines privaten Netzwerks ist. Dadurch kann das Internet als öffentliches Netzwerk zur Übertragung von Daten im Auftrag eines privaten Netzwerks verwendet werden.
Das Konzept des Tunneling
Tunneling bezeichnet die Umleitung von Netzwerk-Traffic von einem Port zu einem anderen, um einen sicheren Zugriff auf Netzwerk-Traffic und Dienste über Firewalls hinweg und auch von außerhalb des Netzwerks zu ermöglichen. Einfach ausgedrückt ist Tunneling eine Port-Umleitungstechnik, bei der der Traffic an einem Port empfangen und an einen anderen Port weitergeleitet wird. Dies geschieht häufig durch die Kapselung der privaten Netzwerkdaten und Protokollinformationen innerhalb des öffentlichen Netzwerks, sodass dieses die Daten im Auftrag des privaten Netzwerks übertragen kann. Heute werden mehrere Tunneling-Protokolle verwendet, zum Beispiel Generic Routing Encapsulation (GRE).

Generic Routing Encapsulation (GRE)
GRE ist ein häufig verwendetes Tunneling-Protokoll. Es wurde von Cisco entwickelt. Bei GRE werden Datenpakete, die ein Routing-Protokoll verwenden, in andere Pakete gekapselt, die ein anderes, von GRE unterstütztes Protokoll verwenden. Der Name des Protokolls geht auf diese Kapselung zurück, die eine Form des Tunneling ist.
GRE vereinfacht Verbindungen zwischen separaten Netzwerken, indem es eine direkte Punkt-zu-Punkt-Verbindung herstellt. Durch die Kapselung kann ein Paket ein Netzwerk durchqueren, das es sonst nicht passieren könnte. Ein Beispiel hierfür ist die Übertragung von Paketen zwischen lokalen Netzwerken (LAN) an zwei verschiedenen physischen Standorten. Selbst wenn beide LANs dasselbe Protokoll unterstützen (zum Beispiel IPv6), muss der Datenverkehr möglicherweise ein Netzwerk eines Drittanbieters durchlaufen, um von einem LAN zum anderen zu gelangen. Dieses Netzwerk eines Drittanbieters unterstützt möglicherweise ein anderes Protokoll, beispielsweise IPv4. GRE behebt diese Inkompatibilität, indem IPv6-Pakete in IPv4-Pakete gekapselt werden, sodass die IPv6-Pakete über das Netzwerk eines Drittanbieters von LAN1 zu LAN2 übertragen werden können.
Was ist SSH-Tunneling?
Beim SSH-Tunneling, auch SSH Port Forwarding genannt, wird eine verschlüsselte SSH-Verbindung zwischen einem Client und einem Server (oder einem lokalen und einem Remote-Host) hergestellt. Über diese Verbindung können Service-Ports weitergeleitet werden. SSH erhält eine Serviceanfrage vom Clientcomputer, stellt eine Verbindung her und übermittelt die Anfrage an den Servercomputer. Die Anfrage wird entschlüsselt und anschließend an den Server gesendet. SSH-Tunneling kann nur verwendet werden, wenn sowohl auf dem Client- als auch auf dem Server-Rechner SSH eingerichtet ist.
SSH-Tunneling wird häufig eingesetzt, um Firewalls zu umgehen. Systemadministratoren (Sysadmins) und Cyberangreifer nutzen es auch, um von entfernten Standorten aus Hintertüren in das interne Netzwerk zu öffnen.
Es gibt drei Arten von SSH-Tunneling:
1. Lokale Portweiterleitung
Dabei wird ein Port vom SSH-Client an den Server weitergeleitet, um Remote-Ressourcen, die sich möglicherweise in einem internen Netzwerk oder hinter einer Firewall befinden, lokal verfügbar zu machen. Zunächst wartet der Client auf Verbindungen an einem konfigurierten Port. Wenn er eine Verbindung empfängt, leitet er diese an einen SSH-Server weiter, der dann eine Verbindung zu einem konfigurierten Zielport herstellt.
In OpenSSH wird die lokale Portweiterleitung mit folgender Syntax konfiguriert:
ssh -L 80:intra.example.com:80 gw.example.com
2. Remote-Portweiterleitung
Die Remote-Portweiterleitung ist eine Möglichkeit, um remote auf lokale Ressourcen zuzugreifen. Wenn diese eingerichtet ist, kann sich jeder mit dem konfigurierten TCP-Port (zum Beispiel Port 8080) auf dem Remote-Server verbinden. Diese Technik ist nützlich, wenn ein Mitarbeiter keinen Remote-Zugriff auf Bürosysteme oder interne Webserver hat.
In OpenSSH wird die Remote-SSH-Portweiterleitung mit folgender Syntax konfiguriert:
ssh -R 8080:localhost:80 public.example.com
3. Dynamische Portweiterleitung
Der Hauptzweck der dynamischen Portweiterleitung besteht darin, mehrere Ports zu tunneln und die Kommunikation zwischen ihnen zu ermöglichen. In diesem Fall fungiert SSH wie ein Proxy-Server. Dieser Server ist ein lokaler (SSH-Client-)Rechner.
Wenn ein Client eine Verbindung zu diesem Computer herstellt, wird die Verbindung zunächst an den Remote-Computer (SSH-Server) und dann an einen dynamischen Port auf dem Zielcomputer weitergeleitet. Mit dieser Methode verbinden sich alle Computer mit dem SSH-Server, der den Datenverkehr anschließend an sein Ziel weiterleitet.
Unter Linux, macOS und anderen Unix-Systemen wird die dynamische Portweiterleitung mit folgender Syntax konfiguriert:
ssh -D [LOCAL_IP:]LOCAL_PORT [USER@]SSH_SERVER

Die Vorteile von Tunneling
Der Hauptvorteil von Tunneling besteht darin, dass Benutzer über Firewalls sicher auf den Netzwerk-Traffic zugreifen können. Unternehmen können Tunneling nutzen, um VPN-Verbindungen einzurichten und ihren Mitarbeitern den sicheren Zugriff auf Unternehmensdaten von einem beliebigen Standort aus zu ermöglichen.
Beim SSH-Tunneling ermöglicht der SSH-Tunnel die Übertragung von Daten an Remote-Systeme, ohne dass die Sicherheitsprotokolle der Standard-Firewall umgangen werden müssen. SSH-Tunnel sind sicher und schützen die übertragenen Daten vor Abhörversuchen und anderen unerwünschten Situationen.
Die lokale Portweiterleitung ist besonders nützlich, da sie Remote-Benutzern die Verbindung zu Diensten und Dateien in einem internen Netzwerk von außerhalb des Netzwerks ermöglicht.
Ebenso ist die Remote-Weiterleitung nützlich, um autorisierten Benutzern von außerhalb den Zugriff auf einen internen Webserver zu gewähren. Allerdings können Angreifer die Remote-Weiterleitung auch nutzen, um eine interne Webanwendung und die damit verbundenen Daten für das öffentliche Internet zugänglich zu machen. Aus diesem Grund sollten Systemadministratoren und IT-Teams bei der Konfiguration von Tunneln und der Gewährung von Zugriff auf lokale Unternehmenssysteme über diese Tunnel durch Remote-Benutzer vorsichtig sein.