Tag Archives: linux

Home / linux
2 Posts

Vorgänger v2.4: HowTo: OpenVPN Server unter Windows Server 2016 und Client Anbindung

Das folgende HowTo zeigt wie ein OpenVPN Server 2.5 auf einem Windows Server installiert wird samt der Erstellung von Zertifizierungsstelle (CA).

 

1. Vorbereitung:

  • fertig installierter Windows 2012/2016/2019 Server
  • Download Community OpenVPN NSIS Package (https://openvpn.net/community-downloads/)

2. Installation OpenVPN Server:

Die Installation kann durchgeführt werden wie in der Vorgängerversion beschrieben. Wichtig ist, dass die EasyRSA Tools ausgewählt werden zur Installation!

 

3. Schlüsselpaare erstellen

In den folgenden Schritten werden folgende Keys bzw. Zertifikate erstellt:

  1. Einmalig: Certificate Authority (CA)  – build-ca.bat
  2. Einmalig: Diffie-Hellman Key – build-dh.bat
  3. Einmalig: Server Certificate – build-key-server.bat
  4. Pro Client ein Client Certificate – build-key.bat

Hinweis: Seit der Version 2.5 werden neue Tools ausgeliefert und die Erstellung der Zertifikate hat sich verändert!

Hierbei sollte man in den Easy-RSA Pfad wechseln in welchen OpenVPN installiert wurde ( C:\Program Files\OpenVPN\easy-rsa ). In diesem Ordner wird die vorhandene Datei vars.bat.example dupliziert oder nur umbenannt in „vars.com.example.vpn“ und folgende Zeilen werden verändert bzw. hinzugefügt.

set_var EASYRSA_PKI		"$PWD/pki.de.name.vpn"
set_var EASYRSA_TEMP_DIR	"C:/tmp_easyrsa"

set_var EASYRSA_REQ_COUNTRY	"DE"
set_var EASYRSA_REQ_PROVINCE	"RLP"
set_var EASYRSA_REQ_CITY	"Koblenz"
set_var EASYRSA_REQ_ORG	"NAME"
set_var EASYRSA_REQ_EMAIL	"info@name.de"
set_var EASYRSA_REQ_OU		"EDV"

set_var EASYRSA_KEY_SIZE	2048
set_var EASYRSA_CA_EXPIRE	3650
set_var EASYRSA_CERT_EXPIRE	1825

Die Gültigkeit der CA beträgt etwas über 2 Jahre was auch grundsätzlich gut und sicherer ist. Im oberen Beispiel wurde die Gültigkeit auf 10 Jahre gesetzt, da dies vom Kunden so gewünscht ist.

Der Pfad EASYRSA_TEMP_DIR sollte unbedingt gesetzt werden da man ansonsten eine Fehlermeldung „Extra arguments given.“ erhält.

Näheres siehe hier.

 

Die EasyRSA Umgebung wird in einer CMS Sitzung (als Administrator starten) mittels „EsyRSA-Start.bat“ aufgerufen

Nun folgt die Erstellung der Zertifizierungsstelle (CA), Erstellung des Server-/Client Zertifikatrequests als auch die anschließende Erstellung der Zertifikate anhand der Requests. Da die Details bereits im Vorgänger Beitrag erklärt wurden folgen lediglich die Befehle ohne nähere Erklärung.

> ./easyrsa --vars=./vars.com.example.vpn init-pki # Initialisierung PKI
> ./easyrsa --vars=./vars.com.example.vpn build-ca # Erstellung Zertifizierungsstelle
> ./easyrsa --vars=./vars.com.example.vpn gen-req server nopass # Generierung Server Request
> ./easyrsa --vars=./vars.com.example.vpn gen-req client1 # Generierung Client Request, pro Client einmal wiederholen
>./easyrsa --vars=./vars.com.example.vpn gen-dh # Diffie-Hellmann generieren
> ./easyrsa --vars=./vars.com.example.vpn sign-req server server # Erstellung Server Zertifikat
> ./easyrsa --vars=./vars.com.example.vpn sign-req client client1 # Erstellung Client Zertifikat

4. Konfiguration OpenVPN Server:

Für den Server werden nun unter „C:\Program Files\OpenVPN“ noch weitere Ordner erstellt:

  • ca.crt
  • dh.pem
  • private/server.key
  • issued/server.crt

Mittels einer administrativen Powershell kann ein bzw. mehrere Netzwerkadapter erstellt werden. Erstmals wurde mit OpenVPN 2.5 das „tapctl“ Tool vorgestellt.

Mittels „.\tapctl.exe create“ wurde ein Netzwerkadapter erstellt. Näheres ist in der Dokumentation zu finden

Der Adapter (LAN-Verbindung X“ kann in der Systemsteuerung umbenannt werden:

 

 

OpenVPN Server Konfig „C:\Program Files\OpenVPN\config-auto\vpn_server_client.ovpn“

##########################
# VPN Server for clients
##########################

# Lokale IP auf welche der Socket/Port gebunden wird
local 1.2.3.4

#Listener des OpenVPN Servers
port 1194

#Protokoll des Servers
proto udp
dev tun
# Zuweisung auf separaten Adapter
dev-node "tap-vpn-server"

##########################
# Zertifikate
##########################

dh "C:\\Program Files\\OpenVPN\\keys\\dh2048.pem"
ca "C:\\Program Files\\OpenVPN\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\keys\\vpn_name.crt"
key "C:\\Program Files\\OpenVPN\\keys\\vpn_name.key"

##########################
# Server-Setup
##########################

# DHCP Subnetz
server 10.0.100.0 255.255.255.0
ifconfig-pool-persist "C:\\Program Files\\OpenVPN\\ipp.txt"

#Ermöglichen von Anfragen von einem Client zum anderen, bei Bedarf die Zeile entfernen
client-to-client

##########################
# Client-Settings (inkl Special Dir)Files
##########################

client-config-dir "C:\\Program Files\\OpenVPN\\ccd"
push "route 192.168.1.0 255.255.255.0"
#push "dhcp-option DNS 192.168.1.10"

##########################
# Defaults
##########################

keepalive 10 120
persist-key
persist-tun

##########################
# Logging
##########################

status "C:\\Program Files\\OpenVPN\\log\\vpn_server_client_status.log"
log "C:\\Program Files\\OpenVPN\\log\\vpn_server_client.log"
log-append "C:\\Program Files\\OpenVPN\\log\\vpn_server_client.log"
verb 3

Hinweis: Die Pfadangaben müssen entweder per „\\“ erfolgen oder mit einem normalen „/“.

Der OpenVPN Server kann mittels „C:\Program Files\OpenVPN\bin\openvpn-gui.exe“ starten, gerade während der Einrichtung sollte man diese Option nutzen. So startet man die GUI und sieht die Fehlermeldungen direkt. Alle Konfigurationen unter „C:\Program Files\OpenVPN\config-auto“ werden vom Dienst „OpenVPNServiceInteractive“ automatisch geladen. Der normale „config“ Ordner ist für Client-Konfigurationen gedacht.

Später kann man den OpenVPNService nutzen. Dieser ist per Default vorhanden aber auf „Manuell“ gestellt, damit der Dienst automatisch verfügbar ist habe ich die Einstellung auf „Automatisch“ angepasst.

Die Clienteinrichtung kann ab Punkt 5. hier eingesehen werden.

Für meine Datensicherung nutze ich „tar„, eines der meist genutzten Programme zum erstellen von Archiven. Dank der weiten Verbreitung ist das Tool zumeist mit den meisten Distributionen vorinstalliert.Per Default ist es aber recht langsam und nutzt nicht wirklich die Leistung des Systems. Grund hierfür ist die fehlende Multithreading Unterstützung.

 

Im konkreten möchte ich einen Samba Share innerhalb einer KVM-VM sichern. In diesem sind alle möglichen Arten von Dateien (Programme, Datenbanken, Scripte, PDFs, TXTs, Videos, …) vorhanden.

Die vorhandenen 22 GB Daten verteilen sich auf rund 90.000 Dateien. Für die Erstellung des Archivs stehen innerhalb der VM 1GB RAM sowie 2 virtuelle CPU Cores zur Verfügung vom KVM Hostsystem (Intel Xeon CPU E3-1240L v5 @ 2.10GHz, 16 GB DDR4 ECC 2133MHz, RAID1 über WD20EFRX-68EUZN0) bereit.

Top 15 Dateitypen zur Veranschaulichung:

root@catelyn:/storage_data/folder# find . -type f | sed -n 's/..*\.//p' | sort | uniq -c | sort -nr | head -n 15
  27511 jpg
  11864 php
  11345 png
  10867 html
   4623 gif
   4472 js
   2321 pdf
   1697 css
   1382 bmp
   1337 ini
   1307 JPG
   1278 xml
   1258 txt
    855 docx
    771 htm

Die Tools können alle mittels des jeweiligen Paketmanagers (yum, apt etc.) installiert werden.

 

Typ Befehl Zeit Größe in MB Kompression
null Reine Ordner/Dateigröße 0 21949 0
tar tar cf backup_plain.tar ../folder 7m22.590s 21736 0,97%
tar compress tar czf backup_compress.tar.gz ../folder/ 16m8.776s 18387 16,23%
pigz tar -I pigz -cf backup_pigz.tar.gz ../folder/ 9m43.084s 18392 16,21%
pbzip2 tar -I pbzip2 -cf backup_pbzip2.tar.bz2 ../folder/ 28m33.028s 17898 18,46%
pxz tar -I pxz -cf backup_pxz.tar.xz ../folder/ 82m30.024s 17325 21,07%
zip zip -r backup ../folder/* 17m16.504s 18464 15,88%

Meine persönliche Wahl fällt auf pigz, da hier Kompression und Rechenzeit in einem guten Verhältnis stehen.

 

Wenn reine Dokumente gesichert werden, würde ich den Test nochmals wiederholen. Der durchgeführte Test bezieht sich auf viele verschiedene Dateitypen welche teilweise bereits komprimiert waren.