OPENVPN with User-Authentication: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(55 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Install=
= Schaubild =
*sudo apt install openvpn
{{#drawio:OPENVPN with User-Authentication}}
=Server=
==Create DH Key==
*cd /etc/openvpn
*openssl dhparam -out dh2048.pem 2048
Place also openvpn-ca.crt  openvpn-linux.crt  openvpn-linux.key in this directory
==Server Config==
*vi /etc/openvpn/server.conf
<pre>
dev tun
mode server
tls-server
port 5000
topology subnet
server 172.31.2.0 255.255.255.0
push "route 192.168.191.0 255.255.255.0"
push "dhcp-option DOMAIN vulkan.int"
push "dhcp-option DNS 192.168.191.10"
cipher AES-256-CBC
link-mtu 1542
status /tmp/cool-vpn.status
keepalive 10 30
client-to-client
max-clients 150
verb 3
dh /etc/openvpn/dh2048.pem
ca /etc/openvpn/openvpn-ca.crt
cert /etc/openvpn/openvpn-linux.crt
key /etc/openvpn/openvpn-linux.key
verify-client-cert none
compress
persist-key
persist-tun
client-config-dir client
username-as-common-name
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /etc/pam.d/login
</pre>


=Client=
= Install =
==Client Config==
* '''apt install openvpn'''
<pre>
 
port 5000
= Server =
dev tun0
 
remote neo.harirbo.net
== DH-Key erstellen ==
tls-client
* '''cd /etc/openvpn'''
cipher AES-256-CBC
* '''openssl dhparam -out dh2048.pem 2048'''
link-mtu 1542
 
mssfix 1450
== Selbstsigniertes Zertifikat ==
pull
* [[Selbstsigniertes Zertifikat]]
compress
 
verb 3
Folgende Dateien werden benötigt:
auth-user-pass
{| class="wikitable"
<ca>
! Datei !! Pfad
-----BEGIN CERTIFICATE-----
|-
place your cacert here
| Zertifikat der Zertifizierungsstelle || /etc/openvpn/ca.crt
-----END CERTIFICATE-----
|-
</ca>
| Zertifikat des Servers || /etc/openvpn/public.crt
</pre>
|-
| 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
<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
tls-server
<span style="color:#000FFF"># Subnet und kein Punkt-zu-Punkt-Netz</span>
topology subnet
<span style="color:#000FFF"># Transit-Netz</span>
server 172.20.2XX.0 255.255.255.0
<span style="color:#000FFF"># Pushs an die Clients</span>
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"
<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
<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
<span style="color:#000FFF"># Maximale Anzahl Clients</span>
max-clients 150
<span style="color:#000FFF"># Log Level</span>
verb 3
<span style="color:#000FFF"># Diffie-Hellman Parameter</span>
dh /etc/openvpn/dh2048.pem
<span style="color:#000FFF"># Zertifikat der Zertifizierungsstelle</span>
ca /etc/openvpn/ca.crt
<span style="color:#000FFF"># Zertifikat des Servers</span>
cert /etc/openvpn/public.crt
<span style="color:#000FFF"># Privater Schlüssel des Servers</span>
key /etc/openvpn/private.key
<span style="color:#000FFF"># Clients haben kein Zertifikat - Authentifizierung via PAM</span>
verify-client-cert none
username-as-common-name
<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
 
= Manueller Start =
* '''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'''
 
== Kontrolle ==
* '''ss -lnup | grep 1194'''
* '''ip addr show tun0'''
 
= OpenVPN und Firewall =
* [[iptables und openvpn]]
* [[nftables und openvpn]]

Aktuelle Version vom 11. Mai 2026, 15:51 Uhr

Schaubild

OPENVPN with User-Authentication

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
  • ip addr show tun0

OpenVPN und Firewall