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.
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:
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
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.
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.
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.
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.
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
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.
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
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.
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-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.
Im Rahmen der Installation werden auch zusätzliche Treiber unter Windows installiert. Die Installation muss bestätigt werden.
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.
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.
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.
Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…
Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…