OPENVPN with User-Authentication: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(42 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
 
==Selbstsigniertes Zertifikat==
 
*[[Selbstsigniertes Zertifikat]]
 
*Zertifikat der Zertifizierungsstelle
 
/etc/openvpn/ca.crt
 
*Zertifikat des Servers
 
/etc/openvpn/frieda.xx.de.crt
 
*Privater Schlüssel des Servers
 
/etc/openvpn/frieda.xx.de.key
 
  
==Server Config==
+
= Install =
*vi /etc/openvpn/server.conf
+
* '''apt install openvpn'''
<pre>
+
 
dev tun
+
= Server =
mode server
+
 
tls-server
+
== DH-Key erstellen ==
port 5000
+
* '''cd /etc/openvpn'''
topology subnet
+
* '''openssl dhparam -out dh2048.pem 2048'''
server 172.31.2.0 255.255.255.0
+
 
push "route 10.82.228.0 255.255.255.0"
+
== Selbstsigniertes Zertifikat ==
push "dhcp-option DOMAIN xx.de"
+
* [[Selbstsigniertes Zertifikat]]
push "dhcp-option DNS 8.8.8.8"
+
 
cipher AES-256-CBC
+
Folgende Dateien werden benötigt:
link-mtu 1542
+
{| class="wikitable"
status /tmp/cool-vpn.status
+
! Datei !! Pfad
keepalive 10 30
+
|-
client-to-client
+
| Zertifikat der Zertifizierungsstelle || /etc/openvpn/ca.crt
max-clients 150
+
|-
verb 3
+
| Zertifikat des Servers || /etc/openvpn/public.crt
dh /etc/openvpn/dh2048.pem
+
|-
ca /etc/openvpn/ca.crt
+
| Privater Schlüssel des Servers || /etc/openvpn/private.key
cert /etc/openvpn/frieda.xx.de.crt
+
|}
key /etc/openvpn/frieda.xx.de.key
+
 
verify-client-cert none
+
== Umbenennen ==
compress
+
* '''mv fw.*.crt public.crt'''
persist-key
+
* '''mv fw.*.key private.key'''
persist-tun
+
 
client-config-dir client
+
== Server Config ==
username-as-common-name
+
* '''vim /etc/openvpn/server/server.conf'''
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /etc/pam.d/login
+
<span style="color:#000FFF"># Router Modus</span>
</pre>
+
dev tun
=Manueller Start=
+
<span style="color:#000FFF"># Protokoll</span>
*openvpn --config server.conf
+
proto udp
2022-09-07 09:21:01 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256- GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to - - data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.
+
<span style="color:#000FFF"># Port</span>
2022-09-07 09:21:01 WARNING: POTENTIALLY DANGEROUS OPTION --verify-client-cert none|optional may accept
+
port 1194
  clients which do not present a certificate
+
<span style="color:#000FFF"># Starten als Server</span>
2022-09-07 09:21:01 OpenVPN 2.5.1 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11]
+
mode server
[MH/PKTINFO] [AEAD] built on May 14 2021
+
tls-server
2022-09-07 09:21:01 library versions: OpenSSL 1.1.1n  15 Mar 2022, LZO 2.10
+
<span style="color:#000FFF"># Subnet und kein Punkt-zu-Punkt-Netz</span>
2022-09-07 09:21:01 net_route_v4_best_gw query: dst 0.0.0.0
+
topology subnet
2022-09-07 09:21:01 net_route_v4_best_gw result: via XX.59.156.161 dev eth0
+
<span style="color:#000FFF"># Transit-Netz</span>
2022-09-07 09:21:01 PLUGIN AUTH-PAM: initialization succeeded (fg)
+
server 172.20.2XX.0 255.255.255.0
2022-09-07 09:21:01 PLUGIN_INIT: POST /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so
+
<span style="color:#000FFF"># Pushs an die Clients</span>
  '[/usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so] [/etc/pam.d/login]'
+
push "route 172.26.2XX.0 255.255.255.0"
intercepted=PLUGIN_AUTH_USER_PASS_VERIFY
+
push "route 10.88.2XX.0 255.255.255.0"
2022-09-07 09:21:01 Diffie-Hellman initialized with 2048 bit key
+
push "route 10.2XX.1.0 255.255.255.0"
2022-09-07 09:21:01 WARNING: normally if you use --mssfix and/or --fragment, you should also set --tun-mtu
+
push "dhcp-option DOMAIN it2XX.int"
1500 (currently it is 1420)
+
push "dhcp-option DNS 10.88.2XX.21"
2022-09-07 09:21:01 TUN/TAP device tun0 opened
+
<span style="color:#000FFF"># Symmetrische Verschlüsselung</span>
2022-09-07 09:21:01 PLUGIN AUTH-PAM: BACKGROUND: initialization succeeded
+
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
2022-09-07 09:21:01 net_iface_mtu_set: mtu 1420 for tun0
+
<span style="color:#000FFF"># Maximale Transmit Unit</span>
2022-09-07 09:21:01 net_iface_up: set tun0 up
+
link-mtu 1542
2022-09-07 09:21:01 net_addr_v4_add: 172.31.2.1/24 dev tun0
+
<span style="color:#000FFF"># Keepalive - erkennt getrennte Clients</span>
2022-09-07 09:21:01 Could not determine IPv4/IPv6 protocol. Using AF_INET
+
keepalive 10 120
2022-09-07 09:21:01 Socket Buffers: R=[212992->212992] S=[212992->212992]
+
<span style="color:#000FFF"># Clients können sich untereinander erreichen</span>
2022-09-07 09:21:01 UDPv4 link local (bound): [AF_INET][undef]:5000
+
client-to-client
2022-09-07 09:21:01 UDPv4 link remote: [AF_UNSPEC]
+
<span style="color:#000FFF"># Maximale Anzahl Clients</span>
2022-09-07 09:21:01 MULTI: multi_init called, r=256 v=256
+
max-clients 150
2022-09-07 09:21:01 IFCONFIG POOL IPv4: base=172.31.2.2 size=252
+
<span style="color:#000FFF"># Log Level</span>
2022-09-07 09:21:01 <span style="color:#FF0000"> Initialization Sequence Completed  </span>
+
verb 3
=Automatischer Start=
+
<span style="color:#000FFF"># Diffie-Hellman Parameter</span>
*systemctl enable openvpn --now
+
dh /etc/openvpn/dh2048.pem
=openvpn und iptables=
+
<span style="color:#000FFF"># Zertifikat der Zertifizierungsstelle</span>
*[[openvpn und iptables]]
+
ca /etc/openvpn/ca.crt
*[[iptables und openvpn]]
+
<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'''
 +
 
 +
= OpenVPN und Firewall =
 +
* [[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

OpenVPN und Firewall