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.
Vorteile | Nachteile |
---|---|
|
|
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.
Vorteile | Nachteile |
---|---|
|
|
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