Tunnel (Rechnernetz)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Netzwerktunnel)

Ein Tunnel – in einem Rechnernetz – ist ein virtueller Übertragungsweg. Die Übersetzung und Übertragung eines Netzwerkprotokolls, das für den Transport in ein anderes Protokoll eingebettet wird, wird auch als (das) Tunneln sowie auch (aus dem Englischen entlehnt) als (das) Tunneling[1] bezeichnet. Vor und hinter den Tunnelpartnern wird somit das ursprüngliche Protokoll „gesprochen“, während zwischen den Tunnelpartnern ein anderes Protokoll verwendet wird, das einer anderen Art der Kommunikation dienen kann und dennoch die Daten des ursprünglichen Protokolls transportiert. Dafür wird die Tunnelsoftware auf beiden Seiten des Tunnels benötigt. Nachdem sie die ursprünglichen Kommunikationsdaten in ein anderes Protokoll eingebettet hat, muss die Software auf der jeweils anderen Seite des Tunnels die Daten wieder zurückübersetzen und weiterreichen.

Ein plastisches Beispiel für Tunneling innerhalb des öffentlichen Wählnetzes ist die Übertragung digitaler Computerdaten durch ein analoges Sprachnetz mittels Akustikkoppler. Dort bildet der Übergang zwischen dem Akustikkoppler und Telefonhörer einen sichtbaren Eingang (wenn der Computer Daten sendet) und Ausgang des Tunnels (Daten empfangen). Tunnel wie DSL werden heute benötigt, um über das öffentliche Wählnetz auf das Internet zugreifen zu können.[2]

Der Internetzugriff über das Wählnetz ist ein Beispiel für einen Tunnel, der Netzwerke (das private Netz und das Internet) durch ein benachbartes Netz hindurch miteinander verbindet, ohne dass das benachbarte Netz (das Wählnetz) kompatibel zu diesen Netzwerken sein muss.[3] Darüber hinaus wird Tunneling dafür verwendet, in einem Computernetz Daten eines Netzwerkdienstes eingebettet im Protokoll eines anderen Netzwerkdienstes zu übertragen. Das verwendete Kommunikationsprotokoll des anderen Dienstes wird wie eine Hülle genutzt, die dabei hilft, den tatsächlichen Inhalt zu verschleiern. Auf diese Weise lassen sich unsichere Netzwerkprotokolle eingebettet in einem gesicherten und verschlüsselten Netzwerkprotokoll abhör- und manipulationssicher transportieren (z. B. SSH-Tunnel). Tunnel können auch dazu dienen, Teilnehmer eines Netzes aus ihrem ursprünglichen Netz heraus an ein anderes Netz zu binden (z. B. VPN-Tunnel).[3] Ferner eignen sich Tunnel dafür, das Regelwerk einer Firewall und andere Sicherheitsmaßnahmen zu umgehen (z. B. HTTP-Tunnel).

Fünf parallel aufgebaute SSH-Tunnel eines Clients (komplette linke Seite) über eine Firewall hinweg (Firewall1) durch ein benachbartes Netz hindurch (hier das Internet) zu seinem SSH-Tunnelpartner auf oder hinter Firewall2 (liegt er dahinter, reicht die Firewall die Port-22-Anfrage dorthin durch). Der Tunnelpartner nimmt die Anfragen entgegen und leitet sie an die Server seines privaten (in sich geschlossenen) Netzes weiter, für die die Anfragen bestimmt sind (rechte Seite); zur Nutzung verschiedener Dienste der Server (hier VNC, Druck, SSH-Shell, RDP und Telnet), wobei die Daten zwischen dem Client und seinem SSH-Tunnelpartner dank des verwendeten Tunnelprotokolls (SSH) verschlüsselt und damit abhör- und manipulationssicher übertragen werden.

Tunneling innerhalb des öffentlichen Wählnetzes

Das öffentliche Wählnetz enthält eine Infrastruktur. Ein dort angeschlossenes Gerät muss diese Infrastruktur bedienen können (deren Protokoll sprechen). Andernfalls könnte das Gerät seinen Gesprächspartner nicht erreichen.

Neben dem öffentlichen Wählnetz, das ursprünglich für die Telefonie entwickelt wurde, gibt es weitere Netze. Stark vereinfacht ausgedrückt lässt sich ein weiteres Netz vorstellen, das irgendwo, beispielsweise in Deutschland, steht und mehrere Computer miteinander verbindet. Die Computer stellen Dienste bereit, auf die man über deren Netz zugreifen kann. Der Anbieter könnte nun eigene Leitungen bis in die Wohnung seiner Kunden legen, um dort einen Anschluss für das neue Netz zur Verfügung zu stellen. Dieser Vorgang wäre allerdings sehr aufwendig und teuer und es gäbe sehr viele Anschlussdosen in einem Haushalt, der auf ähnliche Weise mehrere Netze kontaktieren möchte.

Alternativ dazu kann das bereits vorhandene öffentliche Wählnetz unter Verwendung eines Tunnels genutzt werden: Auf der einen Seite wird das neue Netz über ein Gateway mit dem öffentlichen Wählnetz verbunden; auf der anderen Seite, an der Telefondose des Anwenders, wird eine Gegenstelle installiert, an der die für das neue Netz vorgesehenen Endgeräte angeschlossen werden können (hier die eigenen Computer des Kunden). Zwischen der Gegenstelle und dem Gateway werden die Daten dem Protokoll des öffentlichen Wählnetzes gemäß übertragen (sie werden getunnelt; genauer werden sie in ein Protokoll gepackt, das die Adressierung des Wählnetzes beherrscht und die Daten des anderen Netzes in sich „verpackt“, ohne die technischen Spezifikationen des Wählnetzes zu verletzen). Diese Geräte sind Tunnelpartner, da sie die ursprünglichen Pakete in ein anderes Protokoll packen und auf der jeweils anderen Seite auspacken und weiterleiten. Vor und hinter diesen Geräten wird wieder das Protokoll des anderen Netzes gesprochen; die Adressierung findet beispielsweise wieder in einer Form statt, die das Computernetz versteht.

Solche Tunnel, die Netzwerke über ein anderes Netz hinweg miteinander verbinden, gehören zu den VPNs.[3] Bekannte Tunnel innerhalb des öffentlichen Wählnetzes sind beispielsweise ISDN, X.25, Frame Relay und DSL.[2]

Tunneling innerhalb eines Computernetzes

Geeignete Protokolle

Prinzipiell lassen sich alle Protokolle für einen Tunnel gebrauchen. Sie müssen sich nur durch das Netzwerk routen lassen und die Möglichkeit bieten, die zu transportierenden Daten einzubetten. So lassen sich z. B. bei einem ICMP-Tunnel ping-Pakete (ICMP) für den Datentransport verwenden. Es sind auch asymmetrische Tunnel möglich, in dem zwei unterschiedliche Protokolle für den Hin- und Rückweg eingesetzt werden.

Mit einem Tunnel eine Firewall umgehen

Tunnel können dazu verwendet werden, die Sicherheitspolice eines Netzwerksystems zu umgehen. Man nennt solche Tunnel in der akademischen Literatur verdeckte Kanäle (englisch network covert channels). Eine Sicherheitspolice kann beispielsweise mithilfe einer Firewall durchgesetzt werden. Ein Tunnel erlaubt unter Umständen das "Umgehen" einer Firewall. Das folgende Beispiel illustriert ein solches Vorgehen.

Beispiel

Ein Netzwerkdienst arbeitet auf einem festgelegten Port. Werden Ports mit Hilfe einer Firewall gesperrt, will man damit erreichen, dass bestimmte Dienste nicht genutzt werden können. Ist z. B. Port 80 (HTTP) erlaubt und Port 21 (FTP) gesperrt, so kann der Anwender Internetseiten aufrufen, aber keine Dateien per FTP mit einem Internetserver austauschen.

Man könnte nun das FTP-Client-Programm und den Serverdienst seines eigenen Internetservers so verändern, dass sie ebenfalls über Port 80 kommunizieren und so die Filterregel der Firewall umgehen.

Eine Firewall, welche in der Lage ist, die Pakete zu analysieren, kann zusätzlich den Aufbau der Daten untersuchen und alle Pakete blockieren, welche nicht dem Protokoll des freigegebenen Dienstes entsprechen. Hier würde der Trick also theoretisch nicht mehr funktionieren. In der Praxis ist eine solche Kontrolle jedoch nicht trivial. Schließlich soll jedes Protokoll irgendwelche Daten transportieren. So ist es möglich, z. B. die Daten eines FTP-Dienstes in dem Protokoll eines HTTP-Dienstes einzubetten, ohne dabei den Protokollstandard zu verletzen. Die Daten müssen dazu lediglich entsprechend konvertiert werden.

Ein Tunnel nimmt eine solche Konvertierung vor: Er schickt die Daten eines gesperrten Dienstes eingebettet in den Daten eines freigegebenen Dienstes durch die Firewall zu seinem Zielsystem. Dafür muss auf dem PC und dem Zielsystem jedoch eine Tunnelsoftware installiert sein, welche die Daten auf der einen Seite konvertiert und auf der anderen Seite wieder in das ursprüngliche Format zurückwandelt.

Erlaubt die Firewall verschlüsselte Verbindungen, wie z. B. zu HTTPS-Servern, lassen sich die Daten an der Firewall nicht mehr mitlesen. Somit ist eine Inhaltsprüfung nicht möglich. Diese Verbindungen eignen sich besonders gut für Tunnel. Hier eignet sich die Software OpenVPN mit dem Protokoll TCP sehr gut, da der Aufbau der Verbindung nahezu identisch mit dem einer Webseite (HTTPS) ist.[4]

Hole Punching ist eine Tunneling-Technik, die man anwenden kann, wenn beide Seiten einer Verbindung jeweils durch Firewalls vom Internet abgeschirmt sind.

Arbeitgeber untersagen mitunter die Nutzung anderer Dienste als HTTP und stellen dies durch eine Nutzungsbestimmung und eine Firewall sicher. Wird eine Firewall in Firmennetzwerken unter solchen Bedingungen umgangen, so ist zu beachten, dass dies als ein vorsätzlicher Verstoß gegen die Nutzungsbestimmung gewertet werden kann, wodurch man als Arbeitnehmer eine fristlose Kündigung riskiert.

Das Tunnelprinzip für eine verschlüsselte Verbindung verwenden

Tunnel werden vornehmlich dazu verwendet, um abhörsichere Verbindungen über ungesicherte Computernetzwerke hinweg aufzubauen. Dabei sorgt die Tunnelsoftware dafür, dass die Netzwerkpakete in einem verschlüsselungsfähigen Protokoll eingebettet werden, um sie auf der Gegenseite wieder zu entschlüsseln und auszupacken. Dadurch wird eine verschlüsselte Datenübertragung auch für Dienste realisiert, die normalerweise über keine eigene Verschlüsselung verfügen. Auch ganze Netzwerke können so abhörsicher miteinander verbunden werden.

Tunnelsoftware (Konverter)

Lokale Portweiterleitung mit SSH per Kommandozeile. Das ssh-Kommando wird auf dem blauen Computer gestartet.
Remote Portweiterleitung mit SSH per Kommandozeile. Das ssh-Kommando wird auf dem blauen Computer gestartet.
Lokale Portweiterleitung mit SSH per PuTTY. Das PuTTY-Programm wird auf dem blauen Computer gestartet.

Indem sich die Tunnelsoftware des Clients in die IP-Implementierung hängt, könnte sie ausgehende Anfragen an bestimmte Dienste (genauer an einen TCP- oder UDP-Port X, in Skizze grün) automatisch nach Port Y (in Skizze violett) eines anderen Dienstes umleiten und dabei eine Konvertierung der Daten vornehmen, sobald ein bestimmtes Ziel (IP-Adresse, in Skizze orange) angesprochen wird. Port X könnte nach dem obigen Beispiel der Port für den FTP-Dienst sein, während Port Y dann der Port für den HTTP-Dienst wäre, über den die Anfrage getunnelt werden soll.

Damit lediglich das lokale System diesen Port nutzen kann, bindet sich die Tunnelsoftware in der Regel nicht an die externe Adresse der Netzwerkkarte, sondern an die interne lokale Adresse des Computers (localhost, die so genannte Loopback-Schnittstelle 127.0.0.1). Dann wird das Client-Programm dahingehend konfiguriert, dass es seine Anfragen nicht mehr an das Zielsystem schickt, sondern an den eigenen Computer auf den Port der Tunnelsoftware sendet (Zielsystem = „localhost:Port X“). Je nach Einstellung reicht die Tunnelsoftware wiederum alle Pakete, welche an Port X eintreffen, automatisch an das tatsächliche Zielsystem weiter (Zielsystem = „entfernter Server:Port Y“, im Bild oranger farawayhost bzw. nearhost).

Auf diese Weise können auch mehrere lokale Ports verwendet werden, die man einzeln konfigurieren und mit unterschiedlichen Zielen verbinden kann.

Auf dem Server läuft die Tunnelsoftware nach demselben Prinzip – nur genau andersherum (siehe `Remote Portweiterleitungs`-Skizze rechts): Sie lauscht am Tunnelport, konvertiert alle dort eingehenden Pakete in das Ursprungsformat zurück und leitet sie dann zum Bestimmungsort und -port weiter.

Alternativ zu dem vorher beschriebenen Verfahren gibt es auch Anwendungsprogramme, bei denen die Tunnelsoftware bereits integriert ist. Der Tunnel kann so direkt genutzt werden, ohne ein separates Konverterprogramm dazwischen schalten zu müssen.

Beispiele für eine Tunnelsoftware

  • GNU httptunnel HTTP-Tunnelinglösung.
  • HTTPTunnel – eine plattformunabhängige (Perl/PHP) HTTP tunneling software
  • OpenSSHSSH bietet die Möglichkeit verschlüsselte TCP-Tunnel aufzubauen
  • OpenVPN – VPN-Lösung für Unix, Windows, Android und iOS, verwendet wahlweise UDP oder TCP (ab Version 2.0)
  • corkscrew – ein SSH-HTTP(s) Tunnel-Programm
  • PuTTY ist ein freies SSH- und Telnet-Client-Programm
  • FreeS/WAN
  • OpenS/WAN
  • iPig Hotspot VPN – TCP/UDP-Tunnel-Software und Service (Eine eingeschränkte Version ist kostenlos nutzbar.)
  • VTun
  • PingFu ist ein Game Tunnel Service
  • LogMeIn Hamachi – ein kostenloser VPN-Tunnel Service
  • Your Freedom ist ein teilweise kostenloser HTTP Tunnel Service
  • Crypto IP Encapsulation (CIPE)
  • Tunnel – TCP-Tunnel-Software (eingeschränkt kostenlos nutzbar, Windows + Linux)
  • Tunngle P2P-VPN-Gaming-Tool
  • Token2Shell - Universal Windows-App
  • XLink Kai - kommerzieller Tunneldienst für z. B. den Nintendo GameCube oder der XBox 360

Sicherheit

Getunnelte Verbindungen gelten nur so lange als sicher, wie die dabei verwendeten Verschlüsselungsverfahren als ausreichend stark angesehen werden.

Auch muss man sich bewusst werden, dass Daten, die über einen öffentlichen Anbieter geleitet werden, von diesem und auch dessen dahinterliegenden Knotenpunkten (z. B. dem Provider) lesbar sind, sofern nicht höherliegende Protokolle wie TLS im HTTPS-Protokoll die Verschlüsselung zum Ziel sicherstellen. Daher ist man auf der sicheren Seite, wenn man vertrauenswürdigere Anbieter wie z. B. den eigenen Server, einen Zugangspunkt der Arbeitsstelle oder eines Freundes nutzt.

Die Software, die man nutzt, kann Lücken und Einfallstore enthalten, die ein Angreifer ausnutzen kann. Daher sollte man stets auf die Aktualität der Endpunkte (Server ↔ Client) achten.

Der verwendete Schlüssel des Tunnels kann in falsche Hände fallen. Daher sollte auch hier sichergestellt werden, dass dieser nicht kompromittiert ist.

Zusammenfassend gilt es folgende Aspekte zu beachten:

Siehe auch

Weblinks

  • RFC 2003 – IP Encapsulation in IP
  • Tunneling (PDF; 259 kB), Wolfgang Schulte. NET 11/2009 S. 30

Einzelnachweise

  1. Tunneling. Duden, 2019.
  2. a b Virtuelles privates Netzwerk, IT-Wissen, Onlinelexikon für Informationstechnologie
  3. a b c Paul Ferguson, Geoff Huston: „What is a VPN?“ (PDF; 652 kB) potaroo.net, April 1998.
  4. How to hide OpenVPN traffic. Blogbeitrag zu OpenVPN über Port 443 tcp (englisch)