GNU/Linux >> Tutoriels Linux >  >> Panels >> OpenVPN

Configurer l'authentification basée sur OpenVPN LDAP

Dans ce guide, nous allons apprendre à configurer l'authentification basée sur OpenVPN LDAP. L'identification et l'authentification des utilisateurs constituent généralement la première étape de la mise en œuvre du contrôle d'accès. Le serveur OpenVPN prend en charge plusieurs protocoles d'authentification et peut donc être configuré pour obtenir des informations sur le client qui se connecte à partir d'un serveur LDAP et pour utiliser ces informations comme base pour authentifier le client en plus de l'utilisation des certificats et des clés du client.

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

OpenVPN
  1. Le moyen le plus simple d'installer et de configurer le serveur OpenVPN sous Linux

  2. Configurer le client LDAP sur Ubuntu 20.04 - Guide étape par étape ?

  3. Comment configurer le contournement de l'authentification SMTP dans SmarterMail

  4. Installer et configurer le client OpenVPN sur Rocky Linux 8

  5. Configurer OpenVPN pour demander les informations d'identification lors de la connexion sur les systèmes Windows

Comment installer et configurer OpenVPN sur OpenSUSE Leap 42.1

Comment configurer OpenVPN sur Ubuntu 16.04

Configurer la réplication multi-maître OpenLDAP sous Linux

Configurer le client LDAP sur Ubuntu 16.04 / Debian 8

Comment configurer le client LDAP sur Ubuntu 20.04

Comment installer et configurer un serveur OpenVPN sur Ubuntu 22.04