- VPN-Tunnel
-
Tunnel bzw. Tunneling bezeichnet den Gebrauch des Kommunikationsprotokolls eines Netzwerkdienstes als Transportmittel für Daten, die nicht zu diesem Dienst gehören.
Die Tunnelsoftware wird sowohl auf dem Client als auch auf dem Server benötigt und dient dazu, dienstfremde Daten auf der einen Seite einzubetten und auf der anderen Seite wieder zu extrahieren. Um dabei den Standard des Protokolls nicht zu verletzen, wird im Bedarfsfall eine Konvertierung in das jeweilige Format vorgenommen. Ein Tunnel kann so die Daten eines Dienstes eingebettet im Protokoll eines anderen Dienstes übertragen. Nachdem sie auf dem Zielsystem in das ursprüngliche Format zurückgewandelt wurden, leitet die Tunnelsoftware die Daten dann an den Dienst weiter, für den sie tatsächlich bestimmt sind.
Das verwendete Kommunikationsprotokoll 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 zur Einbindung von Geräten eines benachbarten Netzes an das eigene Netz dienen, ohne dass die Netzwerke zueinander kompatibel sein müssen (z. B. VPN-Tunnel). Ferner eignen sich Tunnel dafür, das Regelwerk einer Firewall und andere Sicherheitsmaßnahmen zu umgehen (z. B. HTTP-Tunnel).
Inhaltsverzeichnis
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 einbetten zu können. So lassen sich z. B. auch 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
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 problemlos 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.
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ß gewertet werden kann, wodurch man als Arbeitnehmer eine 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 zuvor verschlüsselt und in einem für die Übertragung verschlüsselter Daten vorgesehenen 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)
Indem sich die Tunnelsoftware des Clients in den TCP/IP-Stack hängt, könnte sie ausgehende Anfragen an Port X automatisch nach Port Y umleiten und dabei eine Konvertierung der Daten vornehmen. Dieser Automatismus ließe sich jedoch nicht einrichten, wenn die Kennung auf dem System keine administrativen Rechte besitzt. Hier sollte eine elegantere Lösung helfen, das Hindernis zu überwinden. So bindet sich die Tunnelsoftware selbst an einen festen Port des PCs, sodass der PC – wie man es normalerweise von einem Server gewohnt ist – Anfragen an diesem Port entgegennehmen kann.
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 = „Server:Port Y“).
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 anders herum (sie lauscht am Tunnelport, konvertiert alle dort eingehenden Pakete in das Ursprungsformat zurück und leitet sie dann zum Bestimmungs(p)ort weiter).
Alternativ zu dem vorher beschriebenen Verfahren, kann die Tunnelsoftware die begehrte Funktionalität des Client-Programms auch selbst beinhalten. 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
- OpenSSH – SSH bietet die Möglichkeit verschlüsselte TCP-Tunnel aufzubauen
- OpenVPN – VPN-Lösung für Unix und Windows, 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 – PingFu ist ein Game Tunnel Service
- Your Freedom – Your Freedom ist ein teilweise kostenloser HTTP Tunnel Service
- Crypto IP Encapsulation (CIPE)
- Tunnel – TCP-Tunnel-Software (eingeschränkt kostenlos nutzbar, Windows + linux)
Sicherheit
Getunnelte Verbindungen gelten nur so lange als sicher, wie die dabei verwendeten Verschlüsselungsverfahren als ausreichend stark angesehen werden.
Siehe auch
Weblinks
- RFC 2003 – IP Encapsulation in IP
Wikimedia Foundation.