Aufbau und Konfiguration
Schritte zur Einrichtung eines OpenVPN
1. Installation des OpenVPN-Servers
Zuerst musst du OpenVPN auf einem Server installieren. Hier verwenden wir ein Linux-System (Ubuntu) als Beispiel.
sudo apt-get update
sudo apt-get install openvpn easy-rsa
2. Konfiguration der Zertifikate und Schlüssel
OpenVPN verwendet SSL/TLS für die Verschlüsselung, daher benötigen wir Zertifikate und Schlüssel. Wir verwenden Easy-RSA, ein Toolkit zur Verwaltung von PKI (Public Key Infrastructure).
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Bearbeite die Variablen in der vars
-Datei, um sie an deine Umgebung anzupassen. Dann initialisiere die PKI und erstelle die Zertifikate und Schlüssel.
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key
sudo nano /etc/openvpn/server.conf
Füge die folgenden Inhalte hinzu:
port 1194 # Der Port, auf dem OpenVPN lauscht (UDP-Port 1194 ist Standard)
proto udp # Das Protokoll, das OpenVPN verwendet (UDP wird empfohlen)
dev tun # Erstellt ein TUN-Interface (virtuelles Netzwerkgerät)
ca /etc/openvpn/ca.crt # Pfad zur CA-Zertifikatsdatei
cert /etc/openvpn/server.crt# Pfad zur Server-Zertifikatsdatei
key /etc/openvpn/server.key # Pfad zur Server-Schlüsseldatei
dh /etc/openvpn/dh2048.pem # Pfad zur Diffie-Hellman-Parameterdatei
tls-auth /etc/openvpn/ta.key 0 # Aktiviert die TLS-Authentifizierung mit einer statischen Schlüsseldatei
cipher AES-256-CBC # Verwendet AES-256-CBC zur Verschlüsselung des Datenverkehrs
persist-key # Verhindert, dass der Schlüssel bei einem Neustart verworfen wird
persist-tun # Verhindert, dass das TUN-Interface bei einem Neustart verworfen wird
user nobody # Setzt den OpenVPN-Prozess auf einen nicht privilegierten Benutzer
group nogroup # Setzt den OpenVPN-Prozess auf eine nicht privilegierte Gruppe
server 10.8.0.0 255.255.255.0 # Der IP-Adressbereich für VPN-Clients
ifconfig-pool-persist ipp.txt # Behält die Zuordnung der IP-Adressen bei
push "redirect-gateway def1 bypass-dhcp" # Leitet den gesamten Datenverkehr durch das VPN
push "dhcp-option DNS 8.8.8.8" # Setzt den DNS-Server für Clients auf Google DNS
push "dhcp-option DNS 8.8.4.4" # Setzt den DNS-Server für Clients auf Google DNS
keepalive 10 120 # Überprüft alle 10 Sekunden die Verbindung und versucht nach 120 Sekunden, die Verbindung wiederherzustellen
comp-lzo # Aktiviert die Komprimierung
max-clients 100 # Maximale Anzahl gleichzeitiger VPN-Clients
status /var/log/openvpn-status.log # Pfad zur Status-Log-Datei
log-append /var/log/openvpn.log # Pfad zur Log-Datei
verb 3 # Setzt das Log-Level (3 ist Standard, 0 ist minimal, 9 ist maximal)
Nun musst du sicherstellen, dass die Firewall den OpenVPN-Datenverkehr zulässt und die IP-Weiterleitung aktiviert ist.
sudo ufw allow 1194/udp
Dieser Befehl öffnet den UDP-Port 1194 in der Firewall, sodass OpenVPN-Datenverkehr zugelassen wird.
sudo nano /etc/sysctl.conf
Öffne die Datei sysctl.conf
, um die IP-Weiterleitung zu aktivieren. Entferne das Kommentarzeichen vor der folgenden Zeile:
net.ipv4.ip_forward=1
Dadurch wird die Weiterleitung von IPv4-Paketen aktiviert, was für die Funktion des VPNs erforderlich ist.
Speichere die Datei und wende die Änderungen an:
sudo sysctl -p
Dieser Befehl lädt die neuen Konfigurationseinstellungen, sodass die IP-Weiterleitung sofort aktiviert wird.
Um den eingehenden und ausgehenden VPN-Verkehr zu verarbeiten, füge die folgenden iptables-Regeln hinzu:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Diese Regel sorgt dafür, dass der ausgehende Datenverkehr vom VPN-Netzwerk (10.8.0.0/24) über das externe Netzwerkinterface (eth0) weitergeleitet wird. Dadurch wird das NAT (Network Address Translation) aktiviert, das notwendig ist, um den Verkehr zwischen dem VPN und dem Internet zu routen.
Speichere die iptables-Regeln:
sudo iptables-save > /etc/iptables/rules.v4
Dieser Befehl speichert die aktuellen iptables-Regeln in einer Datei, sodass sie beim Neustart des Systems wiederhergestellt werden.
5. Starten des OpenVPN-Servers
Starte den OpenVPN-Server und sorge dafür, dass er beim Systemstart automatisch startet:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
6. Erstellung der Client-Konfigurationsdatei
Erstelle eine Client-Konfigurationsdatei, um den Zugang für die Benutzer zu ermöglichen:
nano ~/client.ovpn
Füge die folgenden Inhalte hinzu und kommentiere sie:
client # Definiert dies als Client-Konfigurationsdatei
dev tun # Verwendet ein TUN-Interface
proto udp # Verwendet das UDP-Protokoll
remote [Server-IP] 1194 # Die IP-Adresse und der Port des OpenVPN-Servers
resolv-retry infinite # Versucht unendlich oft, die Verbindung wiederherzustellen
nobind # Verhindert, dass der Client einen bestimmten lokalen Port verwendet
persist-key # Verhindert, dass der Schlüssel bei einem Neustart verworfen wird
persist-tun # Verhindert, dass das TUN-Interface bei einem Neustart verworfen wird
ca ca.crt # Pfad zur CA-Zertifikatsdatei
cert client.crt # Pfad zur Client-Zertifikatsdatei
key client.key # Pfad zur Client-Schlüsseldatei
remote-cert-tls server # Überprüft das Serverzertifikat
tls-auth ta.key 1 # Aktiviert die TLS-Authentifizierung mit einer statischen Schlüsseldatei
cipher AES-256-CBC # Verwendet AES-256-CBC zur Verschlüsselung des Datenverkehrs
comp-lzo # Aktiviert die Komprimierung
verb 3 # Setzt das Log-Level (3 ist Standard, 0 ist minimal, 9 ist maximal)
7. Testen der Verbindung
Nun musst du die OpenVPN-Client-Software auf deinem lokalen Computer installieren. Kopiere die client.ovpn
-Datei sowie die notwendigen Zertifikate und Schlüssel (ca.crt, client.crt, client.key, ta.key) auf deinen lokalen Computer.
Starte den OpenVPN-Client und importiere die client.ovpn
-Datei. Stelle sicher, dass du dich erfolgreich mit dem OpenVPN-Server verbinden kannst.
sudo openvpn --config ~/client.ovpn
Wenn alles richtig eingerichtet ist, sollte der Client eine Verbindung zum VPN-Server herstellen und du solltest in der Lage sein, auf die internen Ressourcen des Netzwerks zuzugreifen.