OpenVPN ist ein Programm zur Herstellung eines Virtuellen Privaten Netzwerkes (VPN) über eine verschlüsselte SSL-Verbindung. Zur Verschlüsselung werden dazu die Bibliotheken des Programmes OpenSSL genutzt. OpenVPN verwendet wahlweise UDP oder TCP zum Transport.
OpenVPN
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | OpenVPN Solutions LLC |
Erscheinungsjahr | 23. März 2002[1] |
Aktuelle Version | 2.0.7 (12. April 2006) |
Betriebssystem | Linux, Windows 2000/XP, OpenBSD, FreeBSD, NetBSD, Mac OS X, Solaris |
Programmiersprache | C[2] |
Kategorie | Virtual Private Network |
Lizenz | GPL |
www.openvpn.net |
OpenVPN ist freie Software unter der GNU GPL und unterstützt die Betriebssysteme Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, und Windows 2000/XP.
Hintergrund VPN
Oftmals besteht der Bedarf eine sichere Kommunikation über ein unsicheres Netzwerk, womit meistens das Internet oder ein Wireless LAN gemeint ist, durchzuführen. „Sicher“ bezieht sich in diesem Zusammenhang vor allem auf zwei Aspekte: eine hinreichende Verschlüsselung der Kommunikationsinhalte und eine Authentifizierung der beteiligten Kommunikationspartner. Diese Sicherheitseigenschaften können durch geeignete Protokolle (z. B. SSH, HTTPS, SFTP) von jeder Anwendung selber bereitgestellt werden. Alternativ kann diese Sicherheit auch von einer zentralen Stelle, also unabhängig von den einzelnen Anwendungen, wünschenswert sein. Die Vorteile dieses Ansatzes liegen vorrangig in der einmaligen Implementation der Sicherheitsfunktionen, dem geringeren Wartungsaufwand und der Möglichkeit, Datenkommunikation von Dritthersteller-Software einzubinden, auf deren Sicheitsfunktionen man häufig keinen Einfluss hat. Eine solche, zentral bereitsgestellte Sicherung der Datenkommunikation ist ein Virtual Private Network (VPN); OpenVPN ist eine von vielen Implementierungen eines VPNs.
Funktionsweise
Bei den oben erwähnten Kommunikationspartnern kann es sich jeweils entweder um einen einzelnen Computer oder um ein Netzwerk von Computern handeln. Häufige Szenarien sind die Verbindung einzelner Außendienstmitarbeiter in das Netzwerk ihrer Firma, die Verbindung einer Filiale mit dem Rechenzentrum oder die Verbindung örtlich verteilter Server oder Rechenzentren untereinander. In jedem Fall baut einer der beiden Kommunikationsteilnehmer die Verbindung auf (Client) und der andere wartet auf eingehende Verbindungen (Server). Dazu muss der Server unter einer festen IP-Adresse oder unter einem festen Hostnamen erreichbar sein. Dies kann für Computer, die aufgrund von Einwählverbindungen mit ständig wechselnden IP-Adressen konfrontiert sind, auch mit Hilfe eines dynamischen DNS-Dienstes erfolgen.
Befindet sich vor dem VPN-Gateway ein Paketfilter oder Proxy, oder wird NAT durchgeführt, so müssen diese Dienste so konfiguriert werden, dass ein in der Konfiguration von OpenVPN zu vergebender UDP- oder TCP-Port (zumeist ab 5000 aufwärts, Standard in OpenVPN 2.0 ist 1194/UDP) durchgelassen wird (Input, Forward und Output).
OpenVPN arbeitet mit virtuellen Netzwerkkarten, den sogenannten tun- bzw. tap-Devices, die auf dem Computer genauso wie eine physikalische Netzwerkkarte zur Verfügung stehen und somit von den Anwendungen genutzt werden können.
tun-Devices
Auf den OpenVPN-Gateways muss in jedem Fall das IP-Forwarding (Routing) eingestellt sein.
Das Programm baut beim Start eine Route über zwei virtuelle IP-Adressen, die in einem Subnet mit der Maske 255.255.255.252 liegen müssen (zwei benachbarte IP-Adressen, z. B. 192.168.1.5 und 192.168.1.6) auf. Die Route zu einem über OpenVPN erreichbaren Netzwerk wird in der Konfiguration angegeben.
„Durch“ den Tunnel können alle gängigen Netzwerkprotokolle auf IP-Basis transportiert werden. So können Daten vom Fileserver sowie Datenbankinfos abgerufen, ebenso können E-Mails bei einem Mailserver abgeholt werden. Das alles funktioniert, als ob man sich im heimischen Netzwerk befände, allerdings mit der Geschwindigkeit der langsamsten genutzen Internetverbindung.
Interessant ist die Technik auch für Außendienstler (Roadwarrior), die sich von unterwegs in der Zentrale einloggen wollen, um ihre Daten abzugleichen.
tap-Devices
Im Gegensatz zu OpenVPN mit einem tun-Device beherrscht die Konfiguration mit einem tap-Device ein vollständiges Tunneln von Ethernet-Frames (Layer 2) und erlaubt somit beispielsweise auch den Einsatz von IPX über einem Tunnel. Ist OpenVPN 2.0 für tap-Devices konfiguriert, bekommen Clients IP-Adressen aus dem Adresspool des Servernetzes. Dies setzt voraus, dass dort bereits ein DHCP-Server seinen Dienst verrichtet. Alternativ kann OpenVPN einen DHCP-Server simulieren und selbst IP-Adressen verteilen.
Probleme und Einschränkungen
Kurz zusammengefasst ermöglicht eine solche VPN-Verbindung eine Verbindung mit einem Netzwerk herzustellen als wäre man selbst vor Ort im Netzwerk mit angeschlossen. Doch dabei gibt es auch Einschränkungen, denn es handelt sich eben nur um eine virtuelle Verbindung, die geroutet werden muss und darin liegt auch deren Einschränkung. So ist es bspw. nicht möglich mit Hilfe eines "Magic Pakets" einen Computer "aufzuwecken" (Wake-On-LAN). Für eine derartige Funktion wird nämlich häufig ein sogenannter Broadcast verwendet, der aber eben immer nur innerhalb eines Netzwerkes Gültigkeit hat (was auch Sinn macht) und von einem Router nicht geroutet wird. An der Grenze des Routers ist also in jedem Fall Ende. Um einen Computer folglich von der Ferne einschalten zu können, muss der "Aufweck-Befehl" innerhalb des Netzes ausgeführt werden, bspw. von einem Server oder Client, der vor Ort im Netz angeschlossen ist. Ebenso ist es nicht möglich, Windows-Computer über deren Namen mittels einer VPN-Verbindung anzusprechen, da dafür ebenfalls ein Broadcast nötig ist.
Sicherheit
Authentifikation
Zur Authentifikation stellt OpenVPN zwei Methoden zur Verfügung:
Preshared Key
Bei Austausch eines „preshared key“ (ein statischer Schlüssel) werden die Daten mit diesem ver- und entschlüsselt. Das Verfahren ist einfach anzuwenden. Es besteht jedoch der Nachteil, dass der Schlüssel nicht abhanden kommen bzw. kompromittiert werden darf. In diesem Fall muss ein neuer Schlüssel an alle Kommunikationspartner verteilt werden. Daher sollte man einen „vertrauenswürdigen“ Installationsort (z. B. PGP-Disk Container) wählen, damit der Schutz der Schlüssel garantiert ist. Der Schlüssel kann über ein automatisiertes Verfahren durch eine laufende Verbindung hindurch ausgetauscht werden.
Zertifikatsbasiert
Bei der Anwendung einer zertifikatbasierten Authentifizierung über das TLS-Protokoll werden private/öffentlich Schlüsselpaare beziehungsweise Zertifikate verwendet.
Der Vorteil des Verfahrens ist, dass einem Nutzer die Zugangsberechtigung entzogen werden kann, indem er der Zertifikatsperrliste (certificate revocation list) zugefügt wird. Wird bei der Prüfung des Schlüssels beziehungsweise Zertifikats ein Eintrag in der Liste entdeckt, wird die Verbindung mit dem Kommunikationspartner zurückgewiesen.
Jeder Nutzer bekommt ein Paar Schlüssel (öffentlich/privat) für die Kommunikation ausgestellt. Die Schlüssel können von einer Zertifizierungsstelle erstellt werden. Diese kann eine eigene, eine vertrauenswürdige andere oder eine kommerzielle sein. Jedes ausgestellte Schlüsselpaar wird mit dem Schlüssel der Zertifizierungsstelle signiert.
Die zertifikatbasierte Authentifizierung ist die aktuell meistverwendete und ist damit auch am stärksten der Weiterentwicklung unterworfen.
Um eine Verbindung aufzubauen, schickt der Client Daten an den Server (SSL-Version und zufällige Daten). Der Server schickt die gleichen Daten und sein Zertifikat zurück. Der Client autorisiert das Zertifikat. Bei beidseitiger Authentifizierung schickt der Client auch sein Zertifikat an den Server. Hat die Überprüfung geklappt, erstellt der Client das „pre-master secret“ und verschlüsselt dies mit dem öffentlichen Schlüssel des Servers. Der Server entschlüsselt die Daten mit seinem privaten Schlüssel und erstellt das „master-secret“. Mit diesem werden Session-Keys erstellt. Das sind einmalige Schlüssel, mit denen die Daten ver- und entschlüsselt werden. Der Client teilt dem Server mit, dass ab nun alle Daten mit dem Session-Key verschlüsselt werden. Der Server bestätigt dies, der Tunnel ist aufgebaut.
Weblinks
- die OpenVPN-Webseite
- deutschsprachige Installationsanleitung (inkl. Zertifikat-Einrichtung) online-tutorials.net
- OpenVPN Erweiterung/Addon für IPCop (Zerina)
- OpenVPN - Support Forum
- Chaosradio Podcast über OpenVPN
- OpenVPN für die Fritz!Box
- OpenVPN Gui für Windows
- OpenVPN Gui für PocketPC
- OpenVPN Gui für Mac OS X
- OpenVPN Gui für Linux/KDE
- VPN-Client Gui für Linux/KDE
- ↑ openvpn.net.
- ↑ The openvpn Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 18. Juli 2018).