Anmeldung

Benutzername: Passwort:
Haben Sie Ihre Zugangsdaten vergessen?


IT and more

Willkommen auf der IT Seite. 
Hier möchte ich einige Howtos, Anleitungen und andere IT-Relevante Dinge zum Download bereitstellen.

Bitte beim Download zur weiteren Verwendung aber auf das Copyright achten!

Bei weiteren Fragen könnt ihr mir auch eine Mail zukommen lassen.

IT: OpenVPN Server unter Windows Server installieren

Posted by Benjamin Wagner (benjamin) on Feb 16 2019

In diesem Szenario steht ein Windows-Server 2008 R2 64bit hinter einem Router (Fritzbox) in einem privaten Netzwerk mit dem IP-Adressbereich 192.168.10.0/24. Die Fritzbox ist mittels DynDNS über die Adresse heimserver.meinserver.de erreichbar.

Der Server hat die IP 192.168.10.11, Neetmask ist 255.255.255.0, Gateway ist 192.168.10.1

Eingehende Verbindungen sollen über OpenVPN erfolgen, wobei der VPN-Client eine IP des DHCP-Servers aus dem Heimnetzwerk erhält. Der Zugriff auf alle Netzwerkresourcen im Heimnetzwerk soll möglich sein.

Wir verwenden dazu das TAP Modi. HIer eine kleine Übersicht über die Betriebsarten

Bridging (TAP-Device)

Bei dem Bridging-Modus wird ein vollständiges Tunneln von Ethernet-Frames (Layer2) vorgenommen. Hier ist der Einsatz von alternativen Protokollen wie IPX oder auch das Senden von Wake-On-LAN Paketen möglich. Der Client wird transparent in das Einwahlnetz eingewählt und erhält eine IP-Adresse des dortigen Subnetzes. Somit werden auch Broadcasts weitergeleitet, um z.B. die Namensauflösung des SMB-Protokolls zu ermöglichen.

Bridging (TAP-Device)
Vorteile Nachteile
  • Verhält sich wie ein echter Netzwerkadapter
  • Beliebige Netzwerkprotokolle
  • Client transparent im Zielnetz
  • Broadcasts und Wake-On-LAN
  • Ineffizient
  • Hoher Broadcast-Overhead am VPN-Tunnel
  • Schlechte Skalierbarkeit

Routing (TUN-Device)

Der Routing-Modus stellt einen verschlüsselten Tunnel her, in dem ausschließlich IP-Pakete (Layer3) geleitet werden. Es wird jeder Gegenstelle eine virtuelle IP-Adresse eines fiktiven Subnetzes zugewiesen. Ein Zugriff auf das dahinter liegende Netzwerk ist standardmäßig nicht möglich, kann aber mittels IP-Forwarding und Einträgen in der Routingtabelle der Firewall ermöglicht werden.

Routing (TUN-Device)
Vorteile Nachteile
  • Weniger Traffic-Overhead
  • Geringere Bandbreitenbelastung, weil kein Ethernet-Layer
  • Gute Skalierbarkeit
  • Nur IP-Pakete
  • Keine Broadcasts

 

Installation von OpenVPN

Zuerst die aktuelle Version von OpenVPN herunterladen: https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.0-I601.exe

Diese Datei als Admin starten (rechte Maustaste "Als Admin starten), und eine Komplettinstallation durchführen. Bei der Installation des TAP Netzwerkdevices die Installtion bestätigen.

Sollte .Net 4.0 noch nicht installiert sein, so den Download bestätigen, und .Net installieren lassen.

Anschließend die neu erstellte Netzwerkverbindung "Local Area Connection x" mit der TAP-Windows Adapter V9 Netzwerkkarte umbenennen in openvpn.

Jetzt die openvpn Netzwerkkarte anwählen, sowie die Netzwerkkarte, die im internen Netzwerk mit der IP 192.168.10.x verbunden ist, und "Bridge Connections" wählen. Anschließend der Netzwerkbrücke den Namen openvpn-bridge geben, und die IP-Adresse der ursprünglichen Netzwerkkarte vergeben.

Sowohl der OpenVPN-Server als auch dessen Clients benötigen Zertifikate, damit sich die Gegenstellen gegenseitig ausweisen können. Zu diesem Zweck wird mittels easy-rsa eine Zertifizierungsstelle angelegt.

 

Erstellen der notwendigen Zertifikate

eine CMD-Box öffnen, und in den Ordner C:\Program Files\OpenVPN\easy-rsa wechseln.

Einmalig den Befehl

init-config.bat

ausführen. Um Fehler beim Erzeugen der Schlüssel zu vermeiden, die Datei „vars.bat“ editieren und folgende Zeile hinzufügen:

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

In der gleichen Datei kann man folgende Werte anpassen. Dadurch kann man Eingaben beim Erstellen der Zertifikate einsparen bzw. Vorgaben festlegen:

set KEY_COUNTRY=DE
set KEY_PROVINCE=Bayern
set KEY_CITY=Nuernberg
set KEY_ORG=Test_Company
set KEY_EMAIL=info(at)test-company(dot)de
set KEY_CN=changeme
set KEY_NAME=changeme
set KEY_OU=Buero
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Folgende Befehle einmalig ausführen:

vars
clean-all

CA erstellen

Folgende Befehle einmalig ausführen:

vars
build-ca

DH-Parameter erstellen

Folgende Befehle einmalig ausführen:

vars
build-dh

Server-Zertifikat erstellen

Folgende Befehle einmalig ausführen:

vars
build-key-server server

Client-Zertifikat erstellen

Diese Befehle sollten in der Anzahl der Roadwarrior bzw. Clients ausgeführt werden. Jedem VPN-Benutzer sollte ein eigenes Zertifikat zugeordnet werden. Entweder man erzeugt das Client-Zertifikat pro Rechnername, oder mittels den Usernamens. In diesem Beispiel verwenden wir rechnername.

vars
build-key rechnername

Alle Befehle zu easy-rsa samt Erklärungen in englischer Sprache finden sich in der „README.txt“ im „easy-rsa“-Ordner.

Firewall konfigurieren

Per Standard verwendet OpenVPN den Port 1194/udp. Dieser muss sowohl in der Windows-Firewall als auch, sofern der VPN-Server vom Internet aus erreichbar sein soll, im Router freigegeben bzw. per Portforwarding weitergeleitet werden.

Revoke-List für Zertifikate erstellen

Damit Clientzertifikate widerrufen werden können, muss eine Revokelist erstellt werden:

openssl ca -gencrl -out crl.pem

Server-VPN-Konfig erstellen

Jetzt muss noch die Serverkonfig erstellt werden. Dazu erstellen wir die Datei C:\Program Files\OpenVPN\config\server.ovpn

# die lokale IP-Adresse des physikalischen Netzwerkadapters (nur bei mehreren aktiven Adaptern
# erforderlich),
 der verwendet werden soll In unserem Beispiel ist das 192.168.1.10:
local 192.168.10.11

# Server-Mode
mode server

# zusätzlich TLS-Authentication-Server
tls-server

#Auf welchen TCP oder UDP Port soll der VPN-Server reagieren? Möchten Sie mehrere OpenVPN-Sessions
# auf derselben Machine betreiben,
 geben Sie für jede Session einen eigenen Port an. In unserem Beispiel:
port 1194

#Angabe des Transport-Protokolls (UDP oder TCP)
proto udp

#Angabe des Modus: Bridging (TAP-Device) oder Routing (TUN-Device)
dev tap

#Welcher Adapter soll verwendet werden:
dev-node openvpn

#Verbindung zum lokalen Netzwerk
push "route-gateway 192.168.10.1"

ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\dh1024.pem"
crl-verify "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\crl.pem"

#Soll komprimiert werden? Wenn ja:
comp-lzo

#Welcher Verschlüsselungs-Algorithmus soll verwendet werden?
cipher AES-256-CBC

#Aufrechterhaltung der Verbindung
keepalive 10 120

#Wieviele Verbindungen parallel (in unserem Bsp. drei):
max-clients 3

 

Jetzt den OpenVPN Server neu starten.

Clientkonfiguration

Auf dem OpenVPN Client muss das Netzwerkinterface, das von OpenVPN erzeugt wurde, ebenfalls in openvpn umbenannt werden. Dann erstellen wir eine dazu passende Datei C:\Program Files\OpenVPN\config\heimserver.meinserver.d.ovpn mit dem folgendem Inhalt

client
remote heimserver.meinserver.de 1194
nobind
proto udp
dev tap
dev-node openvpn
ca "ca.crt"
cert "rechnername.crt"
key "rechnername.key"
comp-lzo
cipher AES-256-CBC

Diese Datei wird im Ordner C:\Program Files\OpenVPN\config\ zusammen mit den beiden Dateien rechnername.crt, rechnername.key sowie ca.crt abgespeichert.

 

Wenn nun auf dem Client in der OpenVPN Software "verbinden" gedrückt wird, verbindet sich der Client an den Server heimserver.meinserver.de über Port 1194 UDP, der wiederrum an den internen Server weitergeleitet wird.

Anschließend wird überprüft, ob das Clientzertifikat rechnername.crt gültig ist. Falls ja, erhält der VPN-Client vom DHCP-Server des Heimnetzwerks eine IP-Adresse zugewiesen.

Zertifikat wiederrufen

Möchte man ein Client-Zertifikat widerrufen, gibt man in einer CMD-Box folgenden Befehl ein:

vars
openssl ca -revoke rechnername

Doppelte Absicherung mit Zertifikat und Benutzername und Passwort

Dazu erstellt man die Datei C:\Program Files\OpenVPN\config\auth.bat mit folgendem Inhalt

@echo off
set n_user=%username% %password%;
find /n "%n_user%" "C:\Program Files\OpenVPN\config\users.txt" >result.txt
for /f "skip=1" %%a in (result.txt) do set n=%%a
if "%n%"=="----------" exit 1
exit 0

Außerdem erstellt man die Datei C:\Program Files\OpenVPN\config\users.txt mit folgendem Inhalt:

VPN-USER VPN-PASSWORT;

Auf dem Server wird in der Config-Datei folgender Eintrag hinzugefügt:

auth-user-pass-verify "C:\\Program Files\\OpenVPN\\config\\auth.bat" via-env
script-security 3

Auf dem Client wird dazu in der Datei C:\Program Files\OpenVPN\config\heimserver.meinserver.d.ovpn folgende Zeile hinzugefügt

auth-user-pass

 

Damit wird beim Login zu einen Überprüft, ob das Client-Zertifikat noch gültig ist. Damit das Zertifikat nicht von jedem kopiert werden kann, wird als zusätzliche Sicherheitsstufe noch ein Benutzername/Password abgefragt.

Auf diesem Weg ist relativ einfach eine Einwahl mittels OpenVPN möglich.

Abschluss

Noch ein letzter Hinweis: Wer das ganze mittels Oracle VirtualBox nachstellen möchte, muss darauf achten, dass beim Server die Netzwerkkarte im Modus "Network Bridge" und "Promiscous Mode --> Allow for all VMs and Host" eingestellt ist.

Last changed: Feb 16 2019 at 01:09

Back