Außerdem kann mit der OpenLDAP-Authentifizierung das Problem beseitigt werden, dass für jeden sich verbindenden Client individuelle OpenVPN-Client-Zertifikate generiert werden müssen.
Erfahren Sie, wie Sie den OpenLDAP-Server unter CentOS 8 installieren und einrichten, indem Sie dem folgenden Link folgen;
OpenLDAP unter CentOS 8 installieren und einrichten
OpenVPN-LDAP-basierte Authentifizierung konfigurieren
Installieren Sie das OpenVPN-Plugin für die LDAP-Authentifizierung
Um die OpenVPN-LDAP-basierte Authentifizierung zu konfigurieren, müssen Sie das OpenVPN-Plugin für die LDAP-Authentifizierung installieren. Das Plugin heißt openvpn-auth-ldap
und es implementiert Benutzername/Passwort-Authentifizierung über LDAP für OpenVPN.
Unter CentOS 7 benötigen Sie EPEL-Repos, um das Plug-in zu installieren;
yum install epel-release
yum install openvpn-auth-ldap
Auf Ubuntu-Systemen
apt install openvpn-auth-ldap
Unter CentOS 8 bieten die EPEL-Repos dieses Paket zum jetzigen Zeitpunkt leider nicht an.
In dieser Demo betreiben wir einen OpenVPN-Server auf einem CentOS 7-System.
Nach der Installation des openvpn-auth-ldap
Paket, sollten Sie nun die erforderlichen Module unter /usr/lib64/openvpn
haben Verzeichnis.
Die Module sind auch unter /usr/lib/openvpn
, Verzeichnis.
Das Paket installiert auch die Konfigurationsdatei für die OpenVPN-LDAP-Authentifizierung, /etc/openvpn/auth/ldap.conf
.
Auf Ubuntu-Systemen finden Sie die Beispiel-OpenVPN-LDAP-Authentifizierungskonfiguration unter;
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf
OpenVPN-Server für LDAP-basierte Authentifizierung konfigurieren
Sobald Sie die erforderlichen Plugins installiert haben, müssen Sie als Nächstes den OpenVPN-Server für die LDAP-basierte Authentifizierung konfigurieren.
Öffnen Sie die OpenVPN LDAP-basierte Authentifizierungskonfigurationsdatei und definieren Sie Ihre OpenLDAP-Serverspezifikationen;
Erstellen Sie ein Backup der Konfiguration.
cp /etc/openvpn/auth/ldap.{conf,.old}
Wenn das Verzeichnis/die Datei nicht existiert, erstellen Sie einfach eines;
mkdir /etc/openvpn/auth
Kopieren Sie anschließend die Beispielkonfigurationsdatei
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf
Als nächstes öffnen Sie die Konfigurationsdatei zum Bearbeiten.
vim /etc/openvpn/auth/ldap.conf
Nachfolgend finden Sie unsere Beispielkonfiguration (ohne kommentierte Zeilen) gemäß unserem OpenLDAP-Server-Setup. Nehmen Sie die entsprechenden Konfigurationen vor;
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup false
</Authorization>
Wenn Sie in Bezug auf die Gruppenauthentifizierung eine feinkörnigere OpenVPN-Zugriffskontrolle erzwingen möchten, sodass nur bestimmte Benutzer, die sich über OpenLDAP authentifizieren, eine Verbindung zum OpenVPN-Server herstellen können, können Sie die OpenLDAP-Gruppenmitgliedschaft verwenden.
Zum Beispiel haben wir auf unserem OpenLDAP-Server eine Nur-VPN-Gruppe, die nur Benutzer enthält, die sich mit dem OpenVPN-Server verbinden dürfen;
ldapsearch -Y ExTERNAL -H ldapi:/// -b ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com -LLL -Q "(cn=vpnonly)"
dn: cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: groupOfNames cn: vpnonly member: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com member: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
Sehen Sie, wie Sie eine OpenLDAP-Gruppenmitgliedschaft erstellen, indem Sie der Anleitung unten folgen;
So erstellen Sie OpenLDAP-Mitgliedergruppen
Um die Authentifizierung der Gruppenmitgliedschaft zu aktivieren, legen Sie daher den Wert von RequireGroup
fest Option auf true setzen und den Gruppenabschnitt so bearbeiten, dass Ihre Konfiguration folgendermaßen aussieht:
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup true
<Group>
BaseDN "ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "memberOf=cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
MemberAttribute uniqueMember
</Group>
</Authorization>
In diesem Fall nur Benutzer koromicha und johndoe kann sich mit dem OpenVPN-Server verbinden.
Speichern und beenden Sie die Konfiguration, nachdem Sie die entsprechenden Änderungen vorgenommen haben.
Als nächstes konfigurieren Sie den OpenVPN-Server so, dass er OpenLDAP für die Authentifizierung verwendet, indem Sie die folgende Zeile zur Konfigurationsdatei des OpenVPN-Servers hinzufügen.
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Sie können diese Zeile einfach wie folgt zur OpenVPN-Serverkonfigurationsdatei hinzufügen:
echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf
Achten Sie darauf, den richtigen Pfad zum Modul festzulegen. Unter Ubuntu 18.04/20.04 lautet der Pfad beispielsweise /usr/lib/openvpn/openvpn-auth-ldap.so
.
Daher würde die Zeile wie folgt aussehen:
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Client-Benutzername/Passwort-Authentifizierung aktivieren
Bearbeiten Sie als Nächstes die Client-Konfigurationsdatei so, dass sie den auth-user-pass enthält Direktive zum Aktivieren der Benutzername/Passwort-Authentifizierungsmethode.
Dies ist zum Beispiel eine unserer Beispiel-Client-Konfigurationsdatei, die auf unserem OpenVPN-Server-Setup basiert.
client tls-client pull dev tun proto udp remote 192.168.2.132 1194 resolv-retry infinite nobind #user nobody #group nogroup persist-key persist-tun key-direction 1 remote-cert-tls server comp-lzo verb 3 auth-nocache dhcp-option DNS 8.8.8.8 dhcp-option DNS 10.8.0.1 auth SHA512 auth-user-pass tls-auth /home/johndoe/ta-key ca /home/johndoe/ca.crt cert /home/johndoe/johndoe.crt key /home/johndoe/johndoe.key
Starten Sie den OpenVPN-Serverdienst neu;
systemctl restart [email protected]
LDAP-Authentifizierung des OpenVPN-Clients überprüfen
Unsere Konfiguration ist nun abgeschlossen. Um zu überprüfen, ob alles in Ordnung ist, initiieren Sie die OpenVPN-Verbindung auf dem Client;
sudo openvpn johndoe.ovpn
Sat Apr 18 08:50:11 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 08:50:11 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: johndoe Enter Auth Password: ************* ... Sat Apr 18 08:50:26 2020 /sbin/ip addr add dev tun0 10.8.0.60/24 broadcast 10.8.0.255 Sat Apr 18 08:50:26 2020 /sbin/ip route add 192.168.2.132/32 via 10.0.2.2 Sat Apr 18 08:50:26 2020 /sbin/ip route add 0.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 /sbin/ip route add 128.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 Initialization Sequence Completed
Wenn die Authentifizierung fehlschlägt;
... Sat Apr 18 08:53:36 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 08:53:36 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 08:53:36 2020 SIGTERM[soft,auth-failure] received, process exiting
Auf dem OpenVPN-Server sehen Sie eine solche Zeile in den Protokollen;
tail -f /var/log/openvpn/openvpn.log
... 192.168.56.1:53489 [johndoe] Peer Connection Initiated with [AF_INET]192.168.56.1:53489 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /etc/openvpn/ccd/johndoe johndoe/192.168.56.1:53489 PLUGIN_CALL: POST /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so/PLUGIN_CLIENT_CONNECT status=0 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /tmp/openvpn_cc_565148162b7cd88618c8c5e6efba7007.tmp johndoe/192.168.56.1:53489 MULTI: Learn: 10.8.0.60 -> johndoe/192.168.56.1:53489 johndoe/192.168.56.1:53489 MULTI: primary virtual IP for johndoe/192.168.56.1:53489: 10.8.0.60 johndoe/192.168.56.1:53489 PUSH: Received control message: 'PUSH_REQUEST'
Versuchen Sie, sich als janedoe
mit dem OpenVPN-Server zu verbinden , der nicht im erlaubten vpnonly
Gruppe. Dies wird automatisch fehlschlagen.
sudo openvpn janedoe.ovpn
Sat Apr 18 10:00:05 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 10:00:05 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: janedoe Enter Auth Password: ************** ... Sat Apr 18 10:00:19 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 10:00:19 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 10:00:19 2020 SIGTERM[soft,auth-failure] received, process exiting
Toll. Sie haben Ihre OpenVPN-Clients erfolgreich für die Authentifizierung über den OpenLDAP-Server konfiguriert.
Damit endet unser Leitfaden zur Konfiguration der OpenVPN-LDAP-basierten Authentifizierung. Viel Spaß.
Verwandte Tutorials
Feste IP-Adressen für OpenVPN-Clients zuweisen
Verbinden Sie sich mit OpenVPN mit Network Manager unter CentOS 8/Ubuntu 18.04
OpenVPN-Server auf CentOS 8 einrichten
Richten Sie IPSEC VPN mit StrongSwan auf Debian 10 ein