OpenVPN ist eines der am häufigsten verwendeten Virtual Private Network (VPN)-Tools unter Linux. Es ermöglicht sichere Verbindungen über das Internet und bietet Schutz vor Abhörangriffen sowie die Umgehung von geografischen Einschränkungen. In diesem Beitrag zeigen wir, wie Sie OpenVPN unter Linux installieren, konfigurieren und absichern können.
1. Was ist OpenVPN?
OpenVPN ist eine Open-Source-VPN-Lösung, die es Benutzern ermöglicht, eine sichere verschlüsselte Verbindung über unsichere Netzwerke herzustellen, wie z. B. das Internet. OpenVPN nutzt SSL/TLS für die Verschlüsselung und kann sowohl für Client-zu-Server– als auch Site-to-Site-Verbindungen verwendet werden.
OpenVPN bietet mehrere Vorteile, darunter:
- Starke Verschlüsselung: Verwendung von AES und SSL/TLS zur Sicherung der Verbindungen.
- Plattformunabhängigkeit: Unterstützt Linux, Windows, macOS, Android und iOS.
- Flexibilität: Kann mit TCP oder UDP arbeiten und verschiedene Authentifizierungsmechanismen verwenden.
2. Installation von OpenVPN auf Linux
Die Installation von OpenVPN ist in den meisten Linux-Distributionen relativ einfach. Hier zeigen wir, wie Sie OpenVPN auf Ubuntu/Debian und CentOS/RHEL installieren können.
a) Installation auf Debian/Ubuntu
- Zuerst aktualisieren Sie Ihr System:
sudo apt update
Installieren Sie das openvpn-Paket:
sudo apt install openvpn
b) Installation auf CentOS/RHEL
- Aktualisieren Sie Ihr System:
sudo yum update
Installieren Sie OpenVPN und die EPEL-Repository, falls es nicht schon vorhanden ist:
sudo yum install epel-release
sudo yum install openvpn
3. OpenVPN-Server einrichten
Um OpenVPN als Server einzurichten, müssen Sie die folgenden Schritte durchführen. Dabei werden easyrsa-Skripte verwendet, um die notwendigen Zertifikate und Schlüssel zu erstellen.
a) EasyRSA installieren
EasyRSA ist ein Tool zur Erstellung und Verwaltung von Zertifikaten, das für die Einrichtung eines OpenVPN-Servers erforderlich ist. Installieren Sie EasyRSA:
- Für Ubuntu/Debian:
sudo apt install easy-rsa
Für CentOS/RHEL:
sudo yum install easy-rsa
b) Zertifikats-Infrastruktur erstellen
- Erstellen Sie ein Verzeichnis für EasyRSA:
mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
cd ~/easy-rsa/
Initialisieren Sie die PKI (Public Key Infrastructure):
./easyrsa init-pki
Erstellen Sie eine Zertifizierungsstelle (CA):
./easyrsa build-ca
Erstellen Sie den Server-Schlüssel und das Zertifikat:
./easyrsa gen-req server nopass
./easyrsa sign-req server server
Erstellen Sie die Diffie-Hellman-Parameter:
./easyrsa gen-dh
Erstellen Sie die Schlüssel für die TLS-Authentifizierung:
openvpn --genkey --secret ta.key
OpenVPN konfigurieren
- Kopieren Sie alle wichtigen Dateien in das OpenVPN-Verzeichnis:
sudo cp ~/easy-rsa/pki/ca.crt /etc/openvpn/
sudo cp ~/easy-rsa/pki/issued/server.crt /etc/openvpn/
sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/
sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/
sudo cp ~/easy-rsa/ta.key /etc/openvpn/
Erstellen Sie eine Konfigurationsdatei für OpenVPN:
sudo nano /etc/openvpn/server.conf
Fügen Sie die folgenden Zeilen in die Konfigurationsdatei ein:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-CBC
persist-key
persist-tun
user nobody
group nogroup
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
Starten Sie den OpenVPN-Dienst und aktivieren Sie ihn, damit er beim Booten startet:
Auf Ubuntu/Debian
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Auf CentOS/RHEL:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
d) Firewall-Regeln und IP-Weiterleitung
Stellen Sie sicher, dass die Firewall so konfiguriert ist, dass VPN-Verkehr zugelassen wird.
- Aktivieren Sie die IP-Weiterleitung, indem Sie die Datei
/etc/sysctl.conf
bearbeiten:
sudo nano /etc/sysctl.conf
2. Fügen Sie die folgende Zeile hinzu oder entfernen Sie das Kommentarzeichen:
net.ipv4.ip_forward = 1
3. Aktivieren Sie die Regel:
sudo sysctl -p
Erstellen Sie eine Firewall-Regel, um den VPN-Datenverkehr zu erlauben:
Auf Ubuntu mit UFW:
sudo ufw allow 1194/udp
Auf CentOS/RHEL mit Firewalld:
sudo firewall-cmd --add-port=1194/udp --permanent
sudo firewall-cmd --reload
4. OpenVPN-Client einrichten
Damit sich ein Client mit dem OpenVPN-Server verbinden kann, muss der Client ebenfalls konfiguriert werden.
a) Client-Schlüssel und Zertifikat erstellen
Erstellen Sie auf dem Server einen neuen Schlüssel und ein Zertifikat für den Client:
cd ~/easy-rsa/
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Kopieren Sie die folgenden Dateien auf den Client:
- ca.crt
- client1.crt
- client1.key
- ta.key
b) OpenVPN-Client-Konfiguration
Erstellen Sie auf dem Client eine Konfigurationsdatei, z. B. client.ovpn:
client
dev tun
proto udp
remote SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
Ersetzen Sie SERVER_IP durch die öffentliche IP-Adresse oder den Hostnamen Ihres VPN-Servers. Kopieren Sie die Konfigurationsdatei zusammen mit den Zertifikaten und Schlüsseln in das entsprechende Verzeichnis des Clients.
Starten Sie die Verbindung auf dem Client:
sudo openvpn --config client.ovpn
5. OpenVPN absichern
a) Starke Verschlüsselung verwenden
Es wird empfohlen, mindestens AES-256 als Verschlüsselungsalgorithmus zu verwenden. Dies wurde bereits in der Konfiguration durch cipher AES-256-CBC
festgelegt. Stärkere Algorithmen bieten zusätzlichen Schutz vor Angreifern.
b) Zwei-Faktor-Authentifizierung (2FA)
Zusätzlich zur Schlüsselbasierenden Authentifizierung können Sie eine Zwei-Faktor-Authentifizierung (2FA) einrichten, um den Schutz zu verstärken. Dies erfordert, dass der Benutzer neben seinem Zertifikat einen zweiten Authentifizierungsfaktor wie einen Einmalcode verwendet.
c) Logging und Überwachung
Überwachen Sie die OpenVPN-Logs regelmäßig, um verdächtige Aktivitäten zu erkennen. Die Logs befinden sich standardmäßig in /var/log/openvpn.log
. Sie können auch Fail2ban verwenden, um unbefugte Verbindungsversuche zu blockieren.
6. Zusammenfassung
OpenVPN ist eine leistungsstarke und flexible Lösung zur Absicherung von Verbindungen über das Internet. Durch die Verwendung von Zertifikaten, starken Verschlüsselungsalgorithmen und zusätzlichen Sicherheitsmaßnahmen wie Zwei-Faktor-Authentifizierung können Sie die Sicherheit Ihres VPNs erheblich verbessern. Die Installation und Konfiguration sind relativ einfach, und mit den hier beschriebenen Schritten können Sie ein sicheres VPN auf Ihrem Linux-Server einrichten.