112 lines
5.1 KiB
Plaintext
112 lines
5.1 KiB
Plaintext
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. |