OpenVPN
Aus Palita
| OpenVPN | |
|---|---|
| |
| VPN-Software | |
| Eigenschaften | |
| Entwickler | OpenVPN Solutions LLC |
| Aktuelle Version Veröffentlicht | 2.0.9 01.10.2006 |
| Betriebssystem | Windows, Linux, MacOS X, ... |
| Lizenz | GPL |
| Kategorie | VPN |
| http://openvpn.net | |
OpenVPN ist ein Serverdienst, der dazu dient, ein Virtuelles Privates Netzwerk (VPN) über eine verschlüsselte TLS-Verbindung herzustellen. Es handelt sich um freie Software, somit sind Portierungen für Linux, Windows, MacOS X und andere Unix-Derivate verfügbar.
Entwickelt wird die Software von OpenVPN Solutions LLC und liegt derzeit in Version 2.0.9 unter der GNU General Public Licence vor. Es nutzt die Datenübertragungsprotokolle TCP und UDP, zur Verschlüsselung kommt die ebenfalls freie Bibliothek OpenSSL zum Einsatz.
Inhaltsverzeichnis |
Motivation
Da es in der Praxis oftmals von großer Bedeutung ist, eine gesicherte Verbindung zweier interner Netzwerke (LANs) über ein öffentliches Netzwerk (z.B. WAN) herzustellen und auf beliebige Dienste zugreifen zu können, bietet sich ein Virtuelles Privates Netzwerk an. Neben OpenVPN stehen noch weitere Implementierungen zur Auswahl, so zum Beispiel IPsec3 oder auch PPPTP, OpenVPN ist wegen seiner einfachen Konfiguration und vielen Einstellmöglichkeiten für die meisten Zwecke eine gute Wahl.
Oftmals wird OpenVPN auch dazu verwendet Mitarbeiter einer Firma im Außendienst sicheren Zugriff auf das interne Firmennetzwerk zu gewährleisten, um etwa Daten zu synchronisieren etc.
Funktionsweise
OpenVPN öffnet im Servermodus einen TCP bzw. UDP Port, der durch eine sichere TLS-Verbindung geschützt ist. Somit können Clients über die WAN-IP-Adresse mit dem Server Verbinden und beide stehen somit in einem neuen, virtuellen Netzwerk. Auch hier gibt es (virtuelle) IP-Adressen, die den virtuellen Netzwerk-Controllern (tun0 / tap0) zugewiesen sind und ab diesem Zeitpunkt für die Kommunikation bereit sind. Je nach Konfiguration kann nun auf jeden Dienst beider Rechner zugegriffen werden (unter der Verwendung der virtuellen IP-Adressen).
Beispiel
- Ein PC startet einen OpenVPN-Server auf Port 666 und hat die WAN-IP 214.19.3.128.
- Ein weiterer PC (WAN-IP: 214.48.2.40) verbindet mit einem OpenVPN-Client auf den Server über seine WAN-IP auf Port 666
- Der Server erstellt einen virtuellen Netzwerkcontroller tap0 mit der IP 10.0.2.1 und vergibt dem Client die IP 10.0.2.2
- Beide können jetzt über diese neue Schnittstelle kommunizieren und auf alle Dienste zugreifen, auch, wenn diese beispielsweise durch eine Firewall im WAN gesperrt sind.
- Die Übertragung erfolgt stets verschlüsselt
Authentifizierung
Zur Berechtigungskontrolle stehen mehrere Möglichkeiten zur Verfügung.
Die simpelste Methode ist die Authentifizierung mittels Pre-Shared-Key (PSK): hier wird von Anfang an ein fester, statischer Schlüssel erstellt, den sowohl der Server als auch der (oder die) Client(s) besitzen müssen.
Nachteil bei dieser Methode ist die Gefahr, dass der Schlüssel in falsche Hände gerät oder kompromittiert wird. Diese Methode eignet sich daher für die Verwendung mit einem bzw. wenigen Clients.
Benutzername & Passwort
Ebenfalls eine sehr simple Methode: die Authentifizierung mit eindeutigen Benutzernamen und zugehörigen Passwörtern. Sicherheitsrisiken bestehen allerdings akut z.B. durch Man-in-the-middle-Angriffe. Auch diese Methode sollte nur in sehr kleinen Netzwerken verwendet werden.
Zertifikatbasiert
Die wohl mit Abstand sicherste, allerdings auch komplizierteste Methode zur Authentifizierung ist die Verwendung von Zertifikaten. Hierbei besitzen sowohl der Server als auch die Clients jeweils ein eigenes Zertifikat. Diese Zertifikate müssen von der sog. Certificate Authority (CA) unterschrieben werden, um als vertrauenswürdig zu gelten. Die CA ist eine eigenständige, unabhängige und überstehende Entität in der Zertifikathierarchie. Sie verteilt ihre CA-Permission an die Clients und an den Server, mit der überprüft wird, ob ein zu überprüfendes Zertifikat gültig ist.
Handshake
Die nachfolgenden Absätze enthalten detailliertere Informationen zu OpenVPN. Diese musst du dir nicht zwingend durchlesen, um eine grobes Verständnis für OpenVPN zu erlangen.
Bei der Verbindung von Client zu Server werden zunächst die TLS-Version und zufällige Daten übertragen. Im Anschluss schickt der Server die gleichen Daten und sein Zertifikat an den Client zurück. Der Client verifiziert das Zertifikat des Servers mit der CA-Permission und teilt dem Server sein eigenes Zertifikat mit – welches dann auch vom Server mittels CA-Permission überprüft wird.
Jetzt schickt der Client das von ihm erstellte Pre-Master-Secret (48-Bit Pseudo-Zufallszahl), verschlüsselt mit des Servers Public-Key, an den Server. Dieses Pre-Master-Secret wird vom Server benutzt, um das Master-Secret zu generieren. Das Master-Secret dient dazu, Session-Keys zu vergeben.
Mithilfe des Client-Public-Keys wird dem Client der momentane Session-Key (Einmal-Schlüssel) mitgeteilt, mit dem nun die Daten mittels symmetrischer Verschlüsselung übertragen werden. Aus Sicherheitsgründen ersetzt der Server den Session-Key nach einer bestimmten Zeitspanne automatisch und vergibt neue Session-Keys.
Diese Prozedur ist nun Analog für mehrere Clients zu betrachten. Die zertifikatbasierende Authentifizierung eignet sich theoretisch auch für kleine Netzwerke, durch den größeren Aufwand und gefordertes Know-How kommt sie aber hauptsächlich in großen und Firmennetzwerken zum Einsatz. Einzige Sicherheitsrisiken bestehen beim Public-Key-Austausch, der auf einem sicheren Weg erfolgen muss (bestenfalls durch Austausch mittels geschlossener Medien).
Soviel zum technischen Hintergrund.
Installation
Folgende Anleitungen stehen zur Verfügung:
diese enthalten sowohl eine Anleitung zur Installation eines Servers, als auch eine Anleitung zur Installation eines Clients. Es ist natürlich möglich, einen Linux-Server und einen Windows-Client zu installieren.
