OPENVPN with User-Authentication: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =Schaubild= | + | = Schaubild = |
{{#drawio:OPENVPN with User-Authentication}} | {{#drawio:OPENVPN with User-Authentication}} | ||
| − | =Install= | + | = Install = |
| − | * | + | * '''apt install openvpn''' |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ==Server Config== | + | = Server = |
| − | * | + | |
| − | <span style="color:#000FFF">#Router Modus</span> | + | == DH-Key erstellen == |
| + | * '''cd /etc/openvpn''' | ||
| + | * '''openssl dhparam -out dh2048.pem 2048''' | ||
| + | |||
| + | == Selbstsigniertes Zertifikat == | ||
| + | * [[Selbstsigniertes Zertifikat]] | ||
| + | |||
| + | Folgende Dateien werden benötigt: | ||
| + | {| class="wikitable" | ||
| + | ! 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''' | ||
| + | <span style="color:#000FFF"># Router Modus</span> | ||
dev tun | dev tun | ||
| − | <span style="color:#000FFF">#Starten als Server | + | <span style="color:#000FFF"># Protokoll</span> |
| + | proto udp | ||
| + | <span style="color:#000FFF"># Port</span> | ||
| + | port 1194 | ||
| + | <span style="color:#000FFF"># Starten als Server</span> | ||
mode server | mode server | ||
tls-server | tls-server | ||
| − | <span style="color:#000FFF">#Subnet und kein Punkt zu Punkt Netz</span> | + | <span style="color:#000FFF"># Subnet und kein Punkt-zu-Punkt-Netz</span> |
topology subnet | topology subnet | ||
| − | <span style="color:#000FFF">#Transit Netz</span> | + | <span style="color:#000FFF"># Transit-Netz</span> |
| − | server 172. | + | server 172.20.2XX.0 255.255.255.0 |
| − | <span style="color:#000FFF">#Pushs an die Clients</span> | + | <span style="color:#000FFF"># Pushs an die Clients</span> |
| − | push "route | + | push "route 172.26.2XX.0 255.255.255.0" |
| − | push "dhcp-option DOMAIN | + | push "route 10.88.2XX.0 255.255.255.0" |
| − | push "dhcp-option DNS | + | push "route 10.2XX.1.0 255.255.255.0" |
| − | <span style="color:#000FFF"># | + | push "dhcp-option DOMAIN it2XX.int" |
| − | + | push "dhcp-option DNS 10.88.2XX.21" | |
| − | <span style="color:#000FFF"># | + | <span style="color:#000FFF"># Symmetrische Verschlüsselung</span> |
| + | data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC | ||
| + | <span style="color:#000FFF"># Maximale Transmit Unit</span> | ||
link-mtu 1542 | link-mtu 1542 | ||
| − | <span style="color:#000FFF"># | + | <span style="color:#000FFF"># Keepalive - erkennt getrennte Clients</span> |
| + | keepalive 10 120 | ||
| + | <span style="color:#000FFF"># Clients können sich untereinander erreichen</span> | ||
client-to-client | client-to-client | ||
| − | <span style="color:#000FFF"># | + | <span style="color:#000FFF"># Maximale Anzahl Clients</span> |
max-clients 150 | max-clients 150 | ||
| − | <span style="color:#000FFF">#Log Level</span> | + | <span style="color:#000FFF"># Log Level</span> |
verb 3 | verb 3 | ||
| − | <span style="color:#000FFF">#Diffie Hellman | + | <span style="color:#000FFF"># Diffie-Hellman Parameter</span> |
dh /etc/openvpn/dh2048.pem | dh /etc/openvpn/dh2048.pem | ||
| − | <span style="color:#000FFF">#Zertifikat der Zertifizierungsstelle</span> | + | <span style="color:#000FFF"># Zertifikat der Zertifizierungsstelle</span> |
ca /etc/openvpn/ca.crt | ca /etc/openvpn/ca.crt | ||
| − | <span style="color:#000FFF">#Zertifikat des Servers</span> | + | <span style="color:#000FFF"># Zertifikat des Servers</span> |
cert /etc/openvpn/public.crt | cert /etc/openvpn/public.crt | ||
| − | <span style="color:#000FFF">#Privater Schlüssel des Servers</span> | + | <span style="color:#000FFF"># Privater Schlüssel des Servers</span> |
key /etc/openvpn/private.key | key /etc/openvpn/private.key | ||
| − | <span style="color:#000FFF"># | + | <span style="color:#000FFF"># Clients haben kein Zertifikat - Authentifizierung via PAM</span> |
verify-client-cert none | verify-client-cert none | ||
username-as-common-name | username-as-common-name | ||
| − | <span style="color:#000FFF"># | + | <span style="color:#000FFF"># Authentifizierung gegen PAM</span> |
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /etc/pam.d/login | plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /etc/pam.d/login | ||
| − | =Manueller Start= | + | = Manueller Start = |
| − | *openvpn --config server.conf | + | * '''openvpn --config /etc/openvpn/server/server.conf''' |
| − | + | ||
| − | + | ; Erfolgreich gestartet wenn folgende Zeile erscheint: | |
| − | + | <span style="color:#FF0000">Initialization Sequence Completed</span> | |
| − | + | ||
| − | + | = 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''' | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | *systemctl enable openvpn --now | ||
| − | == | + | == Kontrolle == |
| − | + | * '''ss -lnup | grep 1194''' | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | = | + | = OpenVPN und Firewall = |
| − | *[[iptables und openvpn]] | + | * [[iptables und openvpn]] |
| + | * [[nftables und openvpn]] | ||
Aktuelle Version vom 30. April 2026, 07:10 Uhr
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
