openldap

Configurer l’authentification LDAP sur CentOS 8

LDAP ( Lightweight Directory Access Protocol ) est un protocole qui permet d’accéder à des bases d’informations sur les utilisateurs d’un réseau par l’intermédiaire de protocoles TCP/IP.

Dans ce guide nous allons voir comment configurer l’authentifcation sur openLDAP pour permettre au clients de s’authentifier sur le serveur ldap. Je suppose donc que vous avez déja un serveur OpenLDAP installé et configuré sur CentOS 8, si ce n’est pas le cas je vous suggère de suivre les deux guide ci-dessous :

Vous devriez donc suivre ces deux artciles avant de continuer..

Installation du package nécessaire :

Installer le module d’authetification LDAP nss-pam-ldapd :

[root@server]# dnf install nss-pam-ldapd
Last metadata expiration check: 23:57:24 ago on Sat 21 Aug 2021 08:43:07 AM EDT.
Dependencies resolved.
Package Architecture Version Repository Size
Installing:
nss-pam-ldapd x86_64 0.9.9-3.el8 ol8_appstream 189 k
Transaction Summary
Install 1 Package
Total download size: 189 k
Installed size: 498 k
Is this ok [y/N]: y

Configuration de nss-pam-ldapd

Editez le fichier de cpnfiguration de nss-pam-ldapd (/etc/nslcd.conf) et remplacer ce qui est en gras par ce qui vous correspond :

Rappel : « bindpw sysuser » corespond au mot de passe de l’utilisateur système qui se charge de traduire les UID et GID.

uri ldap://server.monsite.com/

#The distinguished name of the search base.
base dc=monsite,dc=com

#The distinguished name to bind to the server with.
#Optional: default is to bind anonymously.
binddn cn=sysuser,ou=system,dc=monsite,dc=com

#The credentials to bind with.
#Optional: default is no credentials.
#Note that if you set a bindpw you should check the permissions of this file.
bindpw sysuser

#The distinguished name to perform password modifications by root by.
rootpwmoddn cn=admin,dc=monsite,dc=com

#The default search scope.
#scope sub
#scope one
#scope base

#Customize certain database lookups.
base group ou=groups,dc=monsite,dc=com
base passwd ou=people,dc=monsite,dc=com
#base shadow ou=People,dc=example,dc=com
#scope group onelevel

#Bind/connect timelimit.
bind_timelimit 30
#Search timelimit.
timelimit 30

Redémarrer ensuite le service ns et mettez le en enable:

[root@server openldap]# systemctl enable nslcd
[root@server openldap]# systemctl restart nslcd
[root@server openldap]# systemctl status nslcd
● nslcd.service - Naming services LDAP client daemon.
Loaded: loaded (/usr/lib/systemd/system/nslcd.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2021-08-22 09:06:45 EDT; 6s ago
Docs: man:nslcd(8)
man:nslcd.conf(5)
Process: 82711 ExecStart=/usr/sbin/nslcd (code=exited, status=0/SUCCESS)
Main PID: 82713 (nslcd)
Tasks: 6 (limit: 4190)
Memory: 1.3M
CGroup: /system.slice/nslcd.service
└─82713 /usr/sbin/nslcd

Créer un profile authselect :

authselect mettra automatiquement à jour les fichiers de configuration correspondants. Malheureusement, il n’a pas de profil pour nss-pam-ldapd, vous devez donc en créer un.

Le moyen le plus simple de le faire est de copier et de modifier le profil sssd. Exécutez les commandes suivantes pour ce faire :

[root@server]# cp -Rp /usr/share/authselect/default/sssd /etc/authselect/custom/nslcd
[root@server]# cd /etc/authselect/custom/nslcd
[root@server nslcd]# sed -i 's/sss/ldap/g' fingerprint-auth
[root@server nslcd]# sed -i 's/sss/ldap/g' password-auth
[root@server nslcd]# sed -i 's/sss/ldap/g' smartcard-auth
[root@server nslcd]# sed -i 's/sss/ldap/g' system-auth
[root@server nslcd]# sed -i 's/sss/ldap/g' nsswitch.conf
[root@server nslcd]# sed -i 's/SSSD/NSLCD/g' REQUIREMENTS

Activation et Test LDAP :

Avant de tester votre configuration LDAP, créez un répertoire pour l’utiisateur que vous avez créé dans l’article précedent :

[root@server]# mkdir /home/user1
[root@server]# chown 4500:4500 /home/user1/
[root@server]# ls -ld /home/user1/
drwxr-xr-x. 2 4500 4500 6 Aug 22 10:43 /home/user1/

authselect mettra à jour notre /etc/nsswitch.conf et /etc/pam.d/. Exécutez la commande suivante pour apporter les modifications nécessaires à l’activation de LDAP :

[root@server]# authselect select custom/nslcd --force
Backup stored at /var/lib/authselect/backups/2021-08-22-14-53-28.JbQefO
Profile "custom/nslcd" was selected.
The following nsswitch maps are overwritten by the profile:
passwd
group
netgroup
automount
services
Make sure that NSLCD service is configured and enabled. See NSLCD documentation for more information.

Vérifier si UID et GID ont été traduit par les noms qui leur correspondant :

[root@server]# ls -l /home
total 0
drwxr-xr-x. 2 user1 dev 6 Aug 22 10:43 user1

Notre configuration fonctionne correctement. Si cela ne fonctionne pas, essayez de redémarrer nslcd et vérifiez /var/log/messages

Test de l’authentification :

Connectez-vous avec votre utilisateur :

[root@server]# ssh -l user1 localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:ANcRUYD3d/LAxB/cBMLgTmAuqBYRGvh0RC8Dd4rJlgE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
user1@localhost's password:
[user1@server ~]$

Et voilà notre utilisateur s’est bien authentifié 🙂 .