Inhaltsverzeichnis

OpenVPN – Sicheres VPN für Server & Clients

OpenVPN ist eine flexible, quelloffene VPN-Lösung, die verschlüsselte Verbindungen zwischen Clients und Servern ermöglicht. Sie eignet sich ideal, um entfernte Standorte, Homeoffice-Arbeitsplätze oder mobile Geräte sicher mit einem zentralen Netzwerk zu verbinden. Durch starke TLS-Verschlüsselung, Zertifikats-basierte Authentifizierung und umfangreiche Konfigurationsmöglichkeiten ist OpenVPN eine professionelle Lösung für technisch versierte Anwender und Unternehmen.

Systemvoraussetzungen & Vorbereitung

Für einen stabilen und sicheren OpenVPN-Server wird ein aktuelles Linux-System (z. B. Debian, Ubuntu, Rocky Linux) empfohlen. Vor der Installation sollte das System aktualisiert werden:

apt update && apt upgrade -y

Anschließend werden OpenVPN und Easy-RSA installiert, um Zertifikate und Schlüssel zu erzeugen:

apt install openvpn easy-rsa -y

PKI erstellen – Zertifikate & Schlüssel generieren

OpenVPN nutzt eine eigene Public-Key-Infrastruktur (PKI), um Server und Clients eindeutig zu authentifizieren. Mit Easy-RSA lassen sich CA, Server- und Client-Zertifikate komfortabel erstellen.

Easy-RSA initialisieren

make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki

CA (Certificate Authority) erstellen

./easyrsa build-ca

Die CA signiert später alle Server- und Client-Zertifikate.

Server-Zertifikat & Schlüssel erzeugen

./easyrsa build-server-full server nopass

Diffie-Hellman-Parameter erzeugen

./easyrsa gen-dh

Client-Zertifikat erstellen

./easyrsa build-client-full client1 nopass

Für jeden weiteren Client wird ein eigenes Zertifikat erstellt, um Zugriffe granular verwalten und widerrufen zu können.


OpenVPN-Server konfigurieren

Die Hauptkonfiguration befindet sich in /etc/openvpn/server.conf. Eine typische, sichere Grundkonfiguration könnte wie folgt aussehen:

port 1194
proto udp
dev tun

ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/server.crt
key /etc/openvpn/pki/private/server.key
dh /etc/openvpn/pki/dh.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 9.9.9.9"

keepalive 10 120
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
persist-key
persist-tun

status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3

Firewall & Routing konfigurieren

Damit VPN-Clients über den Server ins interne Netz oder Internet gelangen können, muss IP-Forwarding aktiviert werden:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

NAT-Regel mit iptables setzen

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Zusätzlich sollte der UDP-Port 1194 (oder der gewählte OpenVPN-Port) in der Firewall explizit erlaubt werden.


OpenVPN-Dienst starten

systemctl start openvpn@server
systemctl enable openvpn@server
systemctl status openvpn@server

Der Status-Befehl zeigt, ob der Dienst fehlerfrei läuft und auf dem gewünschten Port lauscht.


Client-Konfigurations-Vorlage (.ovpn)

Für jeden Client wird eine eigene .ovpn-Datei benötigt. Die folgende Vorlage kann als Basis für client1.ovpn verwendet werden:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194

resolv-retry infinite
nobind
persist-key
persist-tun

cipher AES-256-GCM
auth SHA256
verb 3

# Optional: Kompression deaktiviert lassen (Sicherheitsgründe)
;compress

<ca>
-----BEGIN CERTIFICATE-----
# CA-ZERTIFIKAT HIER EINFÜGEN
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
# CLIENT-ZERTIFIKAT HIER EINFÜGEN
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
# CLIENT-PRIVATE-KEY HIER EINFÜGEN
-----END PRIVATE KEY-----
</key>

# Optional: tls-auth oder tls-crypt Key einbinden
;tls-auth ta.key 1
;tls-crypt ta.key

Diese Datei wird auf dem Client importiert (z. B. OpenVPN GUI, NetworkManager, mobile OpenVPN-App).


OpenVPN-Hardening & Best Practices

Um einen OpenVPN-Server gegen Angriffe weiter zu härten, sollten zusätzliche Sicherheitsmechanismen aktiviert werden.

Starke Verschlüsselung & Authentifizierung

tls-auth / tls-crypt verwenden

Mit tls-auth oder tls-crypt wird ein zusätzlicher statischer Schlüssel verwendet, um TLS-Handshakes zu schützen und einfache Port-Scans zu erschweren.

openvpn --genkey --secret /etc/openvpn/ta.key

In der server.conf:

tls-auth /etc/openvpn/ta.key 0
; oder
tls-crypt /etc/openvpn/ta.key

Im Client-Config entsprechend:

tls-auth ta.key 1
; oder
tls-crypt ta.key

Firewall & Fail2Ban

Logging & Monitoring

Durch diese Hardening-Maßnahmen wird OpenVPN zu einer robusten, sicheren und skalierbaren VPN-Lösung, die sich sowohl für kleine Umgebungen als auch für komplexe Unternehmensnetzwerke eignet.