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 -yAnschließend werden OpenVPN und Easy-RSA installiert, um Zertifikate und Schlüssel zu erzeugen:
apt install openvpn easy-rsa -yPKI 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-pkiCA (Certificate Authority) erstellen
./easyrsa build-caDie CA signiert später alle Server- und Client-Zertifikate.
Server-Zertifikat & Schlüssel erzeugen
./easyrsa build-server-full server nopassDiffie-Hellman-Parameter erzeugen
./easyrsa gen-dhClient-Zertifikat erstellen
./easyrsa build-client-full client1 nopassFü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 3Firewall & 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 -pNAT-Regel mit iptables setzen
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEZusä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@serverDer 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.keyDiese 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
- AES-256-GCM als Cipher verwenden.
- auth SHA256 oder höher für HMAC-Authentifizierung.
- Regelmäßige Erneuerung von Zertifikaten und Schlüsseln.
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.keyIn der server.conf:
tls-auth /etc/openvpn/ta.key 0
; oder
tls-crypt /etc/openvpn/ta.keyIm Client-Config entsprechend:
tls-auth ta.key 1
; oder
tls-crypt ta.keyFirewall & Fail2Ban
- Nur den OpenVPN-Port (z. B. UDP 1194) von außen freigeben.
- SSH und andere Dienste zusätzlich absichern (z. B. nur per VPN erreichbar).
- Fail2Ban für OpenVPN-Logs konfigurieren, um wiederholte Fehlversuche zu blockieren.
Logging & Monitoring
- OpenVPN-Logs regelmäßig prüfen (z. B. /var/log/openvpn.log).
- Ungewöhnliche Verbindungsversuche und Fehlversuche analysieren.
- VPN-Nutzung und Bandbreite überwachen, um Anomalien frühzeitig zu erkennen.
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.
