OpenVPN ist ein Programm zur Herstellung eines Virtuellen Privaten Netzwerkes ü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 ist ein Open-Source-Programm unter der Lizenz der GNU GPL. Das Programm gibt es für verschiedene Betriebssysteme Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, und Windows 2000/XP.
Das Programm kann mit zwei verschiedenen Authentifizierungsarten konfiguriert werden:
Bei Austausch eines "preshared key" (ein statischer Schlüssel) werden die Daten mit diesem ver- und entschlüsselt. Das Verfahren ist einfach anzuwenden, der Schlüssel darf jedoch nicht abhanden kommen, dann müssen alle Kommunikationspartner den neuen Schlüssel bekommen. Daher sollte man einen "vertrauenswürdigen" Installationsort (z.B. PGP-Disk Container) wählen, damit der Schutz der Schlüssel garantiert ist.
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 der der CRL (Certification Revokation 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.
Die zertifikatbasierte Authentifizierung soll näher beschrieben werden, da es die zu bevorzugende ist.
Jeder Nutzer bekommt ein Paar Schlüssel (öffentlich/privat) für die Kommunikation ausgestellt. Die Schlüssel werden von einer CA (Certification Authority) ausgestellt. Diese kann eine eigene, eine vertrauenswürdige andere oder eine kommerzielle sein. Jedes ausgestellte Schlüsselpaar wird mit dem Schlüssel der CA signiert.
Funktionsweise
Um eine Verbindung aufzubauen, schickt der Client Daten an den Server (SSL-Version und zufällige Daten). Der Server schickt die gleichen Daten zurück und sein Zertifikat. 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.
Die Kommunikation im unsicheren Internet erfolgt nun "durch" den Tunnel mit verschlüsselten Daten von Client zu Server.
Server und Clientseite benötigen zum Aufbau der Verbindung entweder eine feste IP (gewöhnlich vom Provider) oder müssen ihre vom Provider dynamisch vergebene IP bei einem DNS-Server registrieren (dynamisches DNS). Ein Anbieter dazu findet sich unter http://dyndns.org.
Befindet sich im Netz vor dem VPN-Gateway ein Paketfilter, Proxy oder wird NAT durchgeführt, so müssen die Dienste so konfiguriert werden, dass ein in der Konfiguration von OpenVPN zu vergebender UDP-Port (zumeist ab 5000 aufwärts) durchgelassen wird (Input, Forward und Output).
Auf den OpenVPN Gateways muss in jedem Fall das IP-Forwarding (Routing) eingestellt sein.
Das Programm baut beim Start eine Route über zwei virtuelle IPs, die in einem Subnet mit der Maske 255.255.255.252 liegen müssen (zwei benachbarte IPs, z.B. 192.168.1.1 und 192.168.1.2) 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 Emails 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.
Für den IT-Sicherheitsverantwortlichen ist der Dienst relativ einfach und sicher einzurichten, da lediglich ein TCP- oder UDP-Port pro Verbindung in der Firewall geöffnet werden muss. Die Verbindung kommt dann nur nach erfolgreichem "Handshake" zustande.
In der aktuell als Release Candidate vorliegenden Version 2.0 ist es nun auch möglich über einen einzigen Port theoretisch unbegrenzt viele Clientverbindungen zuzulassen. Die finale Version wird voraussichtlich im Frühjahr 2005 erscheinen..