De plus, avec l'authentification OpenLDAP, le problème de devoir générer des certificats clients OpenVPN individuels pour chaque connexion client peut être éliminé.
Découvrez comment installer et configurer le serveur OpenLDAP sur CentOS 8 en suivant le lien ci-dessous ;
Installer et configurer OpenLDAP sur CentOS 8
Configurer l'authentification basée sur OpenVPN LDAP
Installer le plug-in OpenVPN pour l'authentification LDAP
Pour configurer l'authentification basée sur OpenVPN LDAP, vous devez installer le plug-in OpenVPN pour l'authentification LDAP. Le plugin s'appelle openvpn-auth-ldap
et il implémente l'authentification par nom d'utilisateur/mot de passe via LDAP pour OpenVPN.
Sur CentOS 7, vous avez besoin des repos EPEL pour installer le plugin ;
yum install epel-release
yum install openvpn-auth-ldap
Sur les systèmes Ubuntu ;
apt install openvpn-auth-ldap
Sur CentOS 8, malheureusement, les dépôts EPEL ne fournissent pas ce package au moment de la rédaction de cet article.
Dans cette démo, nous exécutons un serveur OpenVPN sur le système CentOS 7.
Après l'installation du openvpn-auth-ldap
package, vous devriez maintenant avoir les modules requis sous le /usr/lib64/openvpn
annuaire.
Les modules peuvent également être trouvés sous, /usr/lib/openvpn
, répertoire.
Le package installe également le fichier de configuration d'authentification OpenVPN LDAP, /etc/openvpn/auth/ldap.conf
.
Sur les systèmes Ubuntu, vous trouverez l'exemple de configuration d'authentification LDAP OpenVPN sous ;
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf
Configurer le serveur OpenVPN pour l'authentification basée sur LDAP
Une fois que vous avez les plugins nécessaires en place, la prochaine chose serait de configurer le serveur OpenVPN pour l'authentification basée sur LDAP.
Ouvrez le fichier de configuration d'authentification basé sur OpenVPN LDAP et définissez les spécificités de votre serveur OpenLDAP ;
Créez une sauvegarde de la configuration.
cp /etc/openvpn/auth/ldap.{conf,.old}
Si le répertoire/fichier n'existe pas, créez-en simplement un ;
mkdir /etc/openvpn/auth
Une fois cela fait, copiez l'exemple de fichier de configuration :
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf
Ensuite, ouvrez le fichier de configuration pour le modifier.
vim /etc/openvpn/auth/ldap.conf
Vous trouverez ci-dessous notre exemple de configuration (sans lignes commentées) selon la configuration de notre serveur OpenLDAP. Effectuez vos configurations appropriées ;
<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>
En ce qui concerne l'authentification de groupe, si vous souhaitez appliquer un contrôle d'accès OpenVPN plus précis de sorte que seuls des utilisateurs spécifiques s'authentifiant via OpenLDAP puissent se connecter au serveur OpenVPN, vous pouvez utiliser l'appartenance au groupe OpenLDAP.
Par exemple, dans notre serveur OpenLDAP, nous avons un groupe VPN uniquement qui contient uniquement les utilisateurs autorisés à se connecter au serveur 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
Découvrez comment créer une adhésion à un groupe OpenLDAP en suivant le guide ci-dessous ;
Comment créer des groupes de membres OpenLDAP
Par conséquent, pour activer l'authentification d'appartenance à un groupe, définissez la valeur de RequireGroup
option pour true et modifier la section du groupe de sorte que votre configuration puisse ressembler à :
<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>
Dans ce cas, seul l'utilisateur koromicha et johndoe peut se connecter au serveur OpenVPN.
Enregistrez et quittez la configuration après avoir apporté les modifications appropriées.
Ensuite, configurez le serveur OpenVPN pour utiliser OpenLDAP pour l'authentification en ajoutant la ligne ci-dessous au fichier de configuration du serveur OpenVPN.
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Vous pouvez simplement ajouter cette ligne au fichier de configuration du serveur OpenVPN comme suit ;
echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf
Assurez-vous de définir le bon chemin d'accès au module. Par exemple, sur Ubuntu 18.04/20.04, le chemin est /usr/lib/openvpn/openvpn-auth-ldap.so
.
Par conséquent, la ligne ressemblerait à :
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Activer l'authentification par nom d'utilisateur/mot de passe client
Ensuite, modifiez le fichier de configuration du client pour inclure le auth-user-pass directive pour activer la méthode d'authentification par nom d'utilisateur/mot de passe.
Par exemple, voici un exemple de fichier de configuration client basé sur la configuration de notre serveur 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
Redémarrez le service OpenVPN Server ;
systemctl restart [email protected]
Vérifier l'authentification LDAP du client OpenVPN
Notre configuration est maintenant terminée. Pour vérifier que tout va bien, initiez la connexion OpenVPN sur le 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
Si l'authentification échoue ;
... 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
Sur le serveur OpenVPN, vous verrez une telle ligne dans les journaux ;
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'
Essayez de vous connecter au serveur OpenVPN en tant que janedoe
, qui n'est pas dans le vpnonly
grouper. Cela échouera automatiquement.
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
Génial. Vous avez configuré avec succès vos clients OpenVPN pour s'authentifier via le serveur OpenLDAP.
Cela marque la fin de notre guide sur la configuration de l'authentification basée sur OpenVPN LDAP. Profitez-en.
Tutoriels associés
Attribuer des adresses IP statiques aux clients OpenVPN
Connectez-vous à OpenVPN en utilisant Network Manager sur CentOS 8/Ubuntu 18.04
Configurer le serveur OpenVPN sur CentOS 8
Configurer le VPN IPSEC à l'aide de StrongSwan sur Debian 10