Inoltre, con l'autenticazione OpenLDAP, è possibile eliminare il problema di dover generare certificati client OpenVPN individuali per ogni client connesso.
Scopri come installare e configurare il server OpenLDAP su CentOS 8 seguendo il link sottostante;
Installa e configura OpenLDAP su CentOS 8
Configura l'autenticazione basata su LDAP OpenVPN
Installa il plug-in OpenVPN per l'autenticazione LDAP
Per configurare l'autenticazione basata su LDAP OpenVPN, è necessario installare il plug-in OpenVPN per l'autenticazione LDAP. Il plugin si chiama openvpn-auth-ldap
e implementa l'autenticazione nome utente/password tramite LDAP per OpenVPN.
Su CentOS 7, sono necessari repository EPEL per installare il plug-in;
yum install epel-release
yum install openvpn-auth-ldap
Sui sistemi Ubuntu;
apt install openvpn-auth-ldap
Su CentOS 8, sfortunatamente, i repository EPEL non forniscono questo pacchetto al momento della stesura di questo documento.
In questa demo, stiamo eseguendo un server OpenVPN sul sistema CentOS 7.
Dopo l'installazione di openvpn-auth-ldap
pacchetto, ora dovresti avere i moduli richiesti sotto /usr/lib64/openvpn
directory.
I moduli possono essere trovati anche in /usr/lib/openvpn
, directory.
Il pacchetto installa anche il file di configurazione dell'autenticazione LDAP OpenVPN, /etc/openvpn/auth/ldap.conf
.
Sui sistemi Ubuntu, troverai la configurazione di autenticazione LDAP OpenVPN di esempio in;
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf
Configura il server OpenVPN per l'autenticazione basata su LDAP
Una volta installati i plug-in necessari, la prossima cosa sarebbe configurare il server OpenVPN per l'autenticazione basata su LDAP.
Apri il file di configurazione dell'autenticazione basata su LDAP OpenVPN e definisci le specifiche del tuo server OpenLDAP;
Crea un backup della configurazione.
cp /etc/openvpn/auth/ldap.{conf,.old}
Se la directory/il file non esiste, creane semplicemente uno;
mkdir /etc/openvpn/auth
Una volta fatto, copia il file di configurazione di esempio;
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf
Quindi, apri il file di configurazione per la modifica.
vim /etc/openvpn/auth/ldap.conf
Di seguito è riportata la nostra configurazione di esempio (senza righe commentate) secondo la configurazione del nostro server OpenLDAP. Effettua le tue configurazioni appropriate;
<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>
Per quanto riguarda l'autenticazione di gruppo, se desideri applicare un controllo dell'accesso OpenVPN più dettagliato in modo tale che solo utenti specifici che si autenticano tramite OpenLDAP possano connettersi al server OpenVPN, puoi utilizzare l'appartenenza al gruppo OpenLDAP.
Ad esempio, nel nostro server OpenLDAP, abbiamo un gruppo solo VPN che contiene solo gli utenti autorizzati a connettersi al server OpenVPN;
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
Scopri come creare l'appartenenza a un gruppo OpenLDAP seguendo la guida di seguito;
Come creare gruppi di membri OpenLDAP
Pertanto, per abilitare l'autenticazione dell'appartenenza al gruppo, imposta il valore di RequireGroup
opzione per true e modificare la sezione del gruppo in modo tale che la configurazione possa sembrare;
<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 questo caso, solo l'utente koromicha e johndoe può connettersi al server OpenVPN.
Salva ed esci dalla configurazione dopo aver apportato le modifiche appropriate.
Quindi, configura il server OpenVPN per utilizzare OpenLDAP per l'autenticazione aggiungendo la riga seguente al file di configurazione del server OpenVPN.
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Puoi semplicemente aggiungere questa riga al file di configurazione del server OpenVPN come segue;
echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf
Assicurati di impostare il percorso corretto per il modulo. Ad esempio, su Ubuntu 18.04/20.04, il percorso è /usr/lib/openvpn/openvpn-auth-ldap.so
.
Quindi, la riga sarebbe simile a;
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Abilita autenticazione nome utente/password client
Quindi, modifica il file di configurazione del client per includere auth-user-pass direttiva per abilitare il metodo di autenticazione nome utente/password.
Ad esempio, questo è un nostro file di configurazione client di esempio basato sulla configurazione del nostro server OpenVPN.
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
Riavvia il servizio OpenVPN Server;
systemctl restart [email protected]
Verifica l'autenticazione LDAP del client OpenVPN
La nostra configurazione è ora completata. Per verificare che tutto sia a posto, avvia la connessione OpenVPN sul 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
Se l'autenticazione fallisce;
... 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
Sul server OpenVPN, vedrai una tale riga nei registri;
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'
Prova a connetterti al server OpenVPN come janedoe
, che non è nel vpnonly
gruppo. Questo fallirà automaticamente.
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
Grande. Hai configurato correttamente i tuoi client OpenVPN per l'autenticazione tramite il server OpenLDAP.
Questo segna la fine della nostra guida su come configurare l'autenticazione basata su LDAP OpenVPN. Divertiti.
Esercitazioni correlate
Assegna indirizzi IP statici ai client OpenVPN
Connettiti a OpenVPN utilizzando Network Manager su CentOS 8/Ubuntu 18.04
Configura il server OpenVPN su CentOS 8
Configura la VPN IPSEC usando StrongSwan su Debian 10