Erstellt nach: [1] - https://www.linode.com/docs/networking/vpn/set-up-a-hardened-openvpn-server/ [2] - https://oli.new-lan.de/2015/02/openvpn-crypto-tuning-tls-auth-tls-cipher-tls-version-min-dh-verify-x509-name-cipher-auth-remote-cert-tls/ [3] - Raspberry PI TUN/TAP-Device: https://blog.doenselmann.com/raspberry-pi-als-openvpn-server/ [4] - Persistente IP-Tables: https://www.thomas-krenn.com/de/wiki/Iptables_Firewall_Regeln_dauerhaft_speichern [5] - Interfaces - https://askubuntu.com/questions/853615/files-in-etc-network-interfaces-d-ignored-but-not-etc-network-interfaces-itse [6] - Compress lz4-v2 instead of lzo - https://forums.openvpn.net/viewtopic.php?t=28372 OpenSSL / EasyRSA: Für den Server wird ein neues Key-Pair benötigt, welches wir lokal erzeugen und anschließend auf den Server uploaden. EasyRSA ist entsprechend vorkonfiguriert, sodass nur die folgenden Schritte ausgeführt werden müssen: 1.) Die "EasyRSA-Start.{bat/sh}" aus dem "EasyRSA"-Verzeichnis ausführen 2.) $ ./easyrsa build-server-full [NAME] nopass 3.) $ ./easyrsa gen-dh 4.) Verschiebe den private Key, das Zertifikat sowie die Diffie-Hellmen Parameter auf den VPN-Server - private Key: EasyRSA\pki\private\[NAME].key - Zertifikat: EasyRSA\issued\[NAME].crt - DH-Parameter: EasyRSA\pki\dh.pem Server-Konfiguration: 1.) Installiere persistente IP-Tables sowie OpenVPN. $ apt-get install openvpn iptables-persistent 2.) Lösche unter "/etc/openvpn" die Verzeichnise "server" und "client" 3.) Erstelle das Verzeichnis "VPN" und kopiere die folgenden Dateien hinen: - ca.crt (aus OpenVPN/Config) - SharedSecret.psk (aus OpenVPN/Config) - dh.pem (siehe "OpenSSL / EasyRSA") - den private Key (siehe "OpenSSL / EasyRSA") - das Zertifikat (siehe "OpenSSL / EasyRSA") 4.) Erstelle das Verzeichnis "logs" 5.) Kopiere die Server-Config (Server.conf) auf den Server in das Verzeichnis /etc/openvpn 6.) Ersetze "[NAME]" in der Server-Config durch den Namen des Server-Zertifikats und "[DNS-SERVER-IP]" durch die IP des lokalen DNS-Servers: $ nano /etc/openvon/server.conf 7.) Lege für OpenVPN einen eigenen Benutzer und eine Gruppe an: $ adduser --system --shell /usr/sbin/nologin --no-create-home ovpn $ groupadd ovpn $ usermod -g ovpn ovpn 8.) Setze die Berechtigungen für die Ordner "VPN" und "logs" im Verzeichnis /etc/openvon $ chmod -R 400 VPN $ chmod -R 700 logs $ chown -R ovpn:ovpn VPN $ chown -R root:root logs 9.) IP-Forwarding aktivieren - temporär: $ echo 1 >> /proc/sys/net/ipv4/ip_forward - persistent: edit "/etc/sysctl.conf" # Packet forwarding net.ipv4.ip_forward = 1 net.inet.ip.fastforwarding = 1 10.) In den IP-Tables das NAT einrichten: Im Ordner "IP-Tables" finden sich verschiedene Regel-Listen: - "min-rules.ipv4" Diese Liste ermöglicht nur das NATing ins Netzwerk des Servers und bietet darüber hinaus keinen Schutz. - "rules.ipv4" Diese Liste sperrt sämtlichen eingehenden Datenverkehr außer SSH und VPN. Damit stellt diese Liste die sicherer Variante dar. Für den Fall, dass "wlan0" genutzt werden soll, müssen die - eth0-Regeln mit dem Präfix "#" versehen und bei den - wlan0-Regeln das Präfix "#" entfernt werden. Kopiere eine der IPv4-Listen als "rules.v4" auf den Server in das Verzeichnis "/etc/iptables" und aktiviere die Regeln mittels $ iptables-restore < /etc/iptables/rules.v4 Passe die Dateiberechtigungen an: $ chown -R root:root /etc/iptables & chmod -R 740 /etc/iptables 11.) Statische IP Editiere die Datei "/etc/network/interfaces" [5] Ersetze "source-directory /etc/network/interfaces.d" mit "source /etc/network/interfaces.d/*" Erstelle unter "/etc/network/interfaces.d/" die Datei "eth0.conf" mit folgendem Inhalt: auto eth0 iface eth0 inet static address [Adresse des PI's] netmask 255.255.255.0 network [Internes Netz] broadcast [Broadcast-Adresse] gateway [Netzwerk-Gateway] dns-nameservers [DNS-Nameserver] 12.) OpenVPN starten $ service openvpn start Client-Konfiguration (nutzt die Dateien aus dem Verzeichnis "Config"): 1.) Lege die client.ovpn in das Konfigurations-Verzeichnis von OpenVPN 2.) Kopiere die folgenden Daten in einen neuen Ordner "VPN" neben der Konfigurations-Datei: - ca.crt - SharedSecret.psk - [User].crt - [User].key 3.) Ersetze in der client.ovpn in Zeile 2 "[SERVER-IP]" mit der öffentlichen IP des VPN-Servers, [Port] mit dem Port, auf dem das VPN operiert.