Categories: Open Source

OpenVPN – Der Standard der Open-Source-VPNs in der Praxis

Wenn Unternehmen im Netzwerk einen eigenen VPN-Server aufbauen, kommt häufig OpenVPN zum Einsatz. Der Open-Source-VPN-Server gehört zu den beliebtesten Lösungen in diesem Bereich. Das liegt an der stabilen Basis von OpenVPN, der bekannten Sicherheit, aber auch den zahlreichen Clients, die unterstützt werden. Neben Clients für Windows und Linux stehen auch Clients für die Anbindung von OS X, Solaris, OpenBSD, FreeBSD und NetBSD zur Verfügung.

Außerdem hat OpenVPN keine allzu großen Hardware-Ansprüche. Allerdings ist die Einrichtung relativ kompliziert. Im folgenden gibt ZDNet einige Tipps zur Einrichtung eines OpenVPN-Servers sowie einer möglichen Konfiguration. Durch die flexiblen Funktionen und zahlreichen Einstellungsmöglichkeiten lassen sich aber auch eine Vielzahl weiterer Optionen aktivieren. Für die Einrichtung und den Betrieb von OpenVPN in einer produktiven Umgebung sind Linux-Kenntnisse durchaus empfehlenswert.

OpenVPN auf Basis von Linux installieren

Generell lässt sich die VPN-Serveranwendung auch auf sehr kleinen Servern und auf Geräten wie Rasperry Pi installieren sowie auf virtuellen Servern. Experimentierfreudige Administratoren können OpenVPN auch auf Routern installieren, die mit dem alternativen Betriebssystem OpenWrt betrieben werden. Als Betriebssystem unterstützt OpenVPN die gängigsten Linux-Distributionen und deren Versionen. Es ist aber auch eine Installation auf Windows Server 2012 R2 und auch Windows 10 möglich. Sinnvoll ist der Betrieb allerdings nur auf Basis von Linux, da das System für dieses Betriebssystem auch optimiert ist. Beim Betrieb auf Windows-Servern kann generell das gleiche Schicksal erfolgen, wie bei OwnCloud: Bei einer neuen Version wird Windows möglicherweise nicht mehr unterstützt. Diese Gefahr droht beim Einsatz auf Linux-Servern nicht.

Auch auf Servern mit Windows Server 2016 lässt sich OpenVPN in der aktuellen Version betreiben. Allerdings sollte hier im produktiven Betrieb darauf geachtet werden, eine freigegebene Version zu verwenden. Beim Betrieb von OpenVPN auf einem Linux-Server lässt sich die Lösung auch zusammen mit IPTables betreiben. Um OpenVPN zu installieren, lassen sich auch direkt die Installationsquellen der jeweiligen Distribution anzapfen. Um zum Beispiel die Installationsquellen auf Ubuntu-Servern zu aktualisieren, und dann die notwendigen Pakete für OpenVPN zu installieren, werden folgende Befehle verwendet:

sudo apt-get update

sudo apt-get install openvpn easy-rsa

Mit diesen Befehlen erfolgt die Installation auch auf Servern mit Ubuntu 16.04 LTS. Dadurch sind alle notwendigen Pakete für die Einrichtung auf dem Ubuntu-Server verfügbar. Die Installation und Einrichtung beschreiben die Entwickler auch in ihrer Wiki zur Einrichtung OpenVPN.

Weitere Seiten, die bei der Einrichtung von OpenVPN helfen sind:

Tutorials – OpenVPN Tutorial

How To Set Up an OpenVPN Server on Ubuntu 16.04

OpenVPN Setup Guide for Beginners

OpenVPN-Server installieren (Debian, Ubuntu)

How to install OpenVPN Server and Client on CentOS 7

Freifunk OpenVPN Howto

Zertifizierungsstelle konfigurieren

Nachdem alle Pakete auf dem Linux-Server zur Verfügung stehen, besteht der nächste Schritt meistens darin, die notwendige Zertifizierungsstelle und die Zertifikate der Clients und Server zu konfigurieren. OpenVPN basiert auf großen Teilen auf TSL/SSL und stellt auf dieser Basis auch das VPN zur Verfügung. Um die dafür notwendige Zertifizierungsstelle optimal einzurichten kann die Vorlage von Easy RSA in ein eigenes Verzeichnis kopiert werden. In dieses wird anschließend im Terminal gewechselt, um die Einstellungen anzupassen:

make-cadir ~/openvpn-ca

cd ~/openvpn-ca

Die Einstellungen der Easy RSA-CA werden in der Datei „vars“ vorgenommen. Dazu muss die Datei im Editor geöffnet werden:

nano vars

Für Profis sind hier viele Einstellungen interessant. Wer aber eine OpenVPN-Umgebung zusammen mit Easy RSA einrichtet, muss zu Beginn nur die wichtigsten Einstellungen für die Zertifikate vornehmen. Diese sind am Ende der Datei zu finden. Alle anderen Einstellungen lassen sich jederzeit anpassen.

Mit einem Editor lassen sich die Anpassungen für Easy-RSA-Zertifikate anpassen. Diese sind für die Konfiguration von OpenVPN notwendig (Screenshot: Thomas Joos).

Auf Wunsch kann auch gleich der Wert export KEY_NAME=“EasyRSA“ angepasst werden. Sinnvoll ist hier die Verwendung des Servernamens, mit dem sich die Anwender verbinden. Danach wird die Datei mit

source vars

./clean-all

./build-ca

umgewandelt und die CA erstellt. Im Fenster erscheinen dabei die Einträge, die in der Datei „vars“ vorgenommen wurden. Diese müssen lediglich bestätigt werden. Sobald die Aktion abgeschlossen ist, lassen sich die Serverzertifikate abrufen und die Schlüsselpaare erstellen:

./build-key-server server

./build-dh

openvpn –genkey –secret keys/ta.key

Auch hier müssen wieder die einzelnen Informationen aus der „vars“-Datei bestätigt werden. Nachdem alle Daten bestätigt sind, lassen sich Schlüsselpaar und Zertifikat mit „y“ erstellen.

Schlüsselpaar und Serverzertifikat werden im Terminal erstellt (Screenshot: Thomas Joos).

Durch den Befehl „./build-dh“ werden Schlüsselpaare auf Basis von Diffie-Hellmann-Schlüsseln erstellt. Mit dem Befehl „openvpn –genkey –secret keys/ta.key“ erstellt das Terminal eine Hash Message Authentication Code-Signatur.

Client-Zertifikate und Schlüsselpaare erstellen

Für die Verbindung von Clients sind zusätzlich auch Zertifikate für Clients und entsprechende Schlüsselpaare notwendig. Für einen einfachen Test kann der Vorgang auch direkt auf dem Server vorgenommen werden. Idealerweise sollte für jeden Client ein Zertifikat mit Schlüsselpaar erstellt werden. Der Vorgang dazu lässt sich auch skripten. Die Befehle dazu sehen folgendermaßen aus:

cd ~/openvpn-ca

source vars

./build-key client01

Generell entspricht die Vorgehensweise dem Erstellen des Serverzertifikats.

OpenVPN anpassen

Wenn die Konfigurationsdateien erstellt, und die Zertifikate verfügbar sind, können die notwendigen Konfigurationsdateien in die Systemverzeichnisse von OpenVPN kopiert werden. Bei diesem Vorgang werden alle bereits erstellten Dateien kopiert und eine Beispiel-Konfiguration von OpenVPN erstellt. Diese lässt sich jederzeit an die eigenen Anforderungen anpassen:

cd ~/openvpn-ca/keys

sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf

Die Beispiel-Konfiguration von OpenVPN lässt sich jederzeit an die eigenen Anforderungen anpassen (Screenshot: Thomas Joos).

Das Semikolon (;) bei der Zeile “tls-auth ta.key 0 # This file is secret” kann entfernt werden. Zusätzlich ist die neue Zeile „key-direction 0“ notwendig. Dadurch wird die zuvor erstellte HMAC-Signatur verwendet. Anschließend muss noch das Semikolon bei der Zeile „;cipher AES-128-CBC   # AES“ entfernt werden. Zusätzlich ist noch die neue Zeile „auth SHA256“ notwendig. Anschließend sollten noch die beiden Semikolons der Zeilen „user nobody“ und „group nogroup“ entfernt werden.

Routen, IP-Forwarding und Firewall anpassen

Abhängig von der Umgebung, in welcher der Server eingesetzt wird, ist es noch notwendig die IP-Routen, das Forwarding sowie die Firewall auf dem Server einzustellen. Das IP-Forwarding für IPv4 lässt sich über die Systemdatei „sysctl.conf“ konfigurieren:

sudo nano /etc/sysctl.conf

In der Datei muss vor der Zeile „net.ipv4.ip_forward=1“ das Raute-Zeichen (#) entfernt werden. Nach der Speicherung wird die Konfiguration mit folgendem Befehl neu eingelesen:

sudo sysctl -p

In diesem Zusammenhang sollten auch die IP-Konfiguration sowie die externe Netzwerkschnittstelle überprüft werden. Dabei hilft der Befehl:

ip route | grep default

Die öffentliche Schnittstelle ist normalerweise hinter der Zeichenfolge „dev“ in der Mitte der Ausgabe zu sehen. Die Daten dieser Ausgabe werden dann wiederum in der Datei „before.rules“ für die UFW hinterlegt. Hier lässt sich für die Schnittstelle das Masquerading aktivieren. Dazu wird die Schnittstelle, die mit „ip route | grep default“ ausgelesen wurde, in der Spalte „-A POSTROUTING -s“ eingetragen.

Auch das Forwarding von Paketen sollte in den Systemdateien erlaubt sein. Die Einstellungen dazu lassen sich mit „sudo nano /etc/default/ufw“ anpassen. Standardmäßig löscht UFW solche Pakete. Damit die Pakete zugelassen werden, muss der Wert der Spalte „DEFAULT_FORWARD_POLICY=“ACCEPT““ von „Drop“ auf „Accept“ gesetzt werden.

Außerdem muss noch der OpenVPN-Port und der Port für OpenSSH geöffnet werden. Die Änderungen sind nach einem Neustart der UFW verfügbar:

sudo ufw allow 1194/udp

sudo ufw disable

sudo ufw enable

Nachdem alle Einstellungen vorgenommen sind, kann OpenVPN gestartet werden:

sudo systemctl start openvpn@server

sudo systemctl enable openvpn@server

Der Status des Dienstes ist mit folgendem Befehl abrufbar:

sudo systemctl status openvpn@server

Im Terminal lassen sich Einstellungen für OpenVPN vornehmen und der Dienst starten (Screenshot: Thomas Joos).

OpenVPN mit Skript installieren

Ein Installations-Skript für Ubuntu steht auf GitHub bereit. Dieses lässt sich mit dem folgenden Befehl herunterladen:

wget https://git.io/vpn -O openvpn-install.sh

Nach dem Download wird das Skript mit „sudo bash openvpn-install.sh“ gestartet. Mit dem Skript lässt sich OpenVPN auf Basis eines Assistenten einrichten. Sobald die notwendigen Eingaben vorgenommen wurden, beginnt der Assistent mit der Einrichtung.

Auf Ubuntu-Servern lässt sich OpenVPN auch über einen skriptbasierten Assistenten konfigurieren (Screenshot: Thomas Joos).

Für Änderungen an der Konfiguration von OpenVPN sollte der Systemdienst beendet werden. Dabei wird der folgende Befehl verwendet:

sudo systemctl stop openvpn@server

Um den Dienst neu zu starten, ist der folgende Befehl notwendig:

sudo systemctl start openvpn@server

Für einen Neustart von OpenVPN ist folgender Befehl verfügbar:

sudo systemctl restart openvpn@server

Auf Debian-Servern werden die folgenden Befehle genutzt. Die Einrichtung von OpenVPN ist in der Debian-Dokumentation zu finden.

apt-get update

apt-get upgrade

apt-get install openvpn

OpenVPN und Windows

OpenVPN-Server steht auch auf Basis von Windows zur Verfügung. Hier lassen sich nicht nur die Windows-Clients anbinden, sondern Administratoren können den OpenVPN-Server auch auf einem Windows-Server installieren. Dazu bieten die Entwickler auch die kostenlose Community-Edition zum Download an. Generell ist die Installation unter Windows etwas einfacher, als bei der Installation auf Linux-Servern, die Konfiguration ist aber auch hier nicht gerade trivial. Durch die Installation führt ein Assistent mit einer grafischen Benutzeroberfläche. Um OpenVPN optimal nutzen zu können, sollten alle Komponenten beim Installationsassistenten ausgewählt werden.

Auf Servern mit Windows Server 2012 R2 oder Windows Server 2016 erfolgt die Installation von OpenVPN mit einem Assistenten (Screenshot: Thomas Joos).

Im Rahmen der Installation werden auch zusätzliche Treiber unter Windows installiert. Die Installation muss bestätigt werden.

Zertifikate für OpenVPN anpassen

Wie auf Linux-Servern auch, muss bei der Installation von OpenVPN auf Basis von Windows darauf geachtet werden, dass die Zertifikate und die Verschlüsselung passen. Die dazu notwendigen Einstellungen lassen sich im Verzeichnis „C:\Program Files\OpenVPN\easy-rsa“ über die Datei „vars.bat.sample“ vornehmen. Zunächst muss die Datei in „vars.bat“ umbenannt werden. Danach müssen in der Batch-Datei alle notwendigen Variablen angepasst werden. Durch die Ausführung der Datei werden die notwendigen Variablen gesetzt.

Der nächste Schritt besteht darin die Datei „clean-all.bat“ auszuführen. Dabei werden alle Einstellungen auf den Standard zurückgesetzt. Danach sind folgende Befehle notwendig, um die Konfigurationsdatei als Variable zu definieren und die notwendigen Zertifikate zu erstellen:

set OPENSSL_CONF=C:\Programme\OpenVPN\easy-rsa\openssl-1.0.0.cnf

build-ca.bat

build-dh.bat

build-key-server.bat <Servername>

build-key.bat <Clientname>

Wichtig sind die Dateien dh1024.pem, ca.crt, <Servername>.crt und <Servername>.key. Diese Dateien sind normalerweise im Verzeichnis „C:\Program Files\OpenVPN\easy-rsa\keys“ gespeichert. Beispiels-Konfigurationsdateien sind wiederum im Verzeichnis „C:\Program Files\OpenVPN\sample-config“ zu finden. Hier lassen sich Einstellungen vorgeben und auf Basis der Beispieldateien umsetzen. In der Eingabeaufforderung wird der OpenVPN-Dienst über den Befehl net start “OpenVPN Service” gestartet. Sobald der Dienst gestartet ist, wartet er auf dem konfigurierten Port, zum Beispiel UDP 1194, auf eine Antwort.

Clients anbinden

Im Apple App Store und Google Play stehen Clients für OpenVPN zur Verfügung, genauso wie auf der Seite der Entwickler. Die Erstellung von Clientzugangsberechtigungen beschreiben die Entwickler auf ihren Wikis recht genau. Hier gibt es zahlreiche verschiedene Möglichkeiten zur Konfiguration, die Administratoren vornehmen können. Normalerweise funktioniert die Einrichtung von Clients über eine OVPN-Datei. Diese lässt sich auf dem Server erstellen und an die Clients verteilen.

Fazit

OpenVPN ist ein zuverlässiges und sicheres VPN-System. Es gibt für alle maßgeblichen Betriebssysteme Clients. Allerdings ist die Einrichtung nicht sehr trivial. Administratoren benötigen einiges an Linux-Wissen, um OpenVPN vernünftig zu installieren und zu betreiben. Im Internet finden sich zahlreiche Anleitungen und Skripte, mit denen sich die Einrichtung vereinfachen lässt. Es bietet sich an eine umfangreiche Testumgebung aufzubauen, und auf Basis dieser Umgebung die Produktivbedienung in Betrieb zu nehmen.

Die Einrichtung der Umgebung sollte aber nicht unterschätzt werden, denn es gibt viele Fallstricke und Möglichkeiten für die Einrichtung von OpenVPN. Wer aber auf der Suche nach einem zuverlässigen und sicheren VPN-Server ist, der Smartphones, Tablets aber auch PCs mit Windows, Linux und Mac OS X unterstützt, sollte sich OpenVPN ansehen. Ohne Linux-Wissen ist der Betrieb aber nicht zu empfehlen. Vorteil von OpenVPN ist die Flexibilität. Auch kleinere Unternehmen, oder für Standorte von großen Unternehmen können auf OpenVPN setzen.

ZDNet.de Redaktion

Recent Posts

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

13 Stunden ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

17 Stunden ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

17 Stunden ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

18 Stunden ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

18 Stunden ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

20 Stunden ago