OPENVPN with User-Authentication

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Schaubild

Install

  • apt install openvpn

Server

DH-Key erstellen

  • cd /etc/openvpn
  • openssl dhparam -out dh2048.pem 2048

Selbstsigniertes Zertifikat

Folgende Dateien werden benötigt:

Datei Pfad
Zertifikat der Zertifizierungsstelle /etc/openvpn/ca.crt
Zertifikat des Servers /etc/openvpn/public.crt
Privater Schlüssel des Servers /etc/openvpn/private.key

Umbenennen

  • mv fw.*.crt public.crt
  • mv fw.*.key private.key

Server Config

  • vim /etc/openvpn/server/server.conf
# Router Modus
dev tun
# Protokoll
proto udp
# Port
port 1194
# Starten als Server
mode server
tls-server
# Subnet und kein Punkt-zu-Punkt-Netz
topology subnet
# Transit-Netz
server 172.20.2XX.0 255.255.255.0
# Pushs an die Clients
push "route 172.26.2XX.0 255.255.255.0"
push "route 10.88.2XX.0 255.255.255.0"
push "route 10.2XX.1.0 255.255.255.0"
push "dhcp-option DOMAIN it2XX.int"
push "dhcp-option DNS 10.88.2XX.21"
# Symmetrische Verschlüsselung
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
# Maximale Transmit Unit
link-mtu 1542
# Keepalive - erkennt getrennte Clients
keepalive 10 120
# Clients können sich untereinander erreichen
client-to-client
# Maximale Anzahl Clients
max-clients 150
# Log Level
verb 3
# Diffie-Hellman Parameter
dh /etc/openvpn/dh2048.pem
# Zertifikat der Zertifizierungsstelle
ca /etc/openvpn/ca.crt
# Zertifikat des Servers
cert /etc/openvpn/public.crt
# Privater Schlüssel des Servers
key /etc/openvpn/private.key
# Clients haben kein Zertifikat - Authentifizierung via PAM
verify-client-cert none
username-as-common-name
# Authentifizierung gegen PAM
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /etc/pam.d/login

Manueller Start

  • openvpn --config /etc/openvpn/server/server.conf
Erfolgreich gestartet wenn folgende Zeile erscheint
Initialization Sequence Completed

Automatischer Start

nftables startet normalerweise vor openvpn — das tun0-Interface existiert dann noch nicht.

nftables durch openvpn starten lassen

  • systemctl edit openvpn-server@server.service
[Service]
ExecStartPost=/usr/sbin/nft -f /etc/nftables.conf
  • systemctl daemon-reload
  • systemctl enable openvpn-server@server.service --now

Kontrolle

  • ss -lnup | grep 1194

OpenVPN und Firewall