OpenVPN

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen

OpenVPN (Homepage, Wikipedia) ist ein Programm zur Herstellung eines Virtuellen Privaten Netzwerkes (VPN) über eine verschlüsselte Verbindung. OpenVPN verwendet wahlweise UDP oder TCP zum Datentransport. OpenVPN ist freie Software unter der GNU GPL und unterstützt viele Betriebssysteme.

Hintergrund VPN

Oftmals besteht der Bedarf, eine sichere Kommunikation über ein unsicheres Netzwerk, womit meistens das Internet oder ein WLAN 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, bereitgestellt werden. Die Vorteile dieses Ansatzes liegen vor allem in der einmaligen Implementation der Sicherheitsfunktionen, dem geringeren Verwaltungsaufwand und der höheren Kompatibilität für Software von Drittherstellern, auf deren Implementierungen man häufig keinen Einfluss hat.

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, 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 IPs, die in einem Subnet mit der Maske 255.255.255.252 liegen müssen (zwei benachbarte IPs, 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.

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