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.
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
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.
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca
Die CA signiert später alle Server- und Client-Zertifikate.
./easyrsa build-server-full server nopass
./easyrsa gen-dh
./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.
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
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
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.
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.
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).
Um einen OpenVPN-Server gegen Angriffe weiter zu härten, sollten zusätzliche Sicherheitsmechanismen aktiviert werden.
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
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.