Configurer OpenLDAP sur Linux (Red Hat 9 / Debian 13) : préparer l’annuaire LDAP
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à configurer un serveur OpenLDAP sur les deux grandes familles de distributions Linux : Red Hat et Debian. Nous allons découvrir comment créer la racine de votre annuaire LDAP, les OU, les groupes et les utilisateurs.
Ce tutoriel nécessite d’avoir un serveur OpenLDAP d’installé. Si ce n’est pas le cas, je vous redirige vers mon tutoriel pour l’installation de OpenLDAP.
Pour rappel, voici le lab qui a été déployé :
- 1 VM Linux avec la distribution de votre choix, sur laquelle est installée OpenLDAP.
- 1 VM Windows 11 client.
- 1 VM Linux client (facultatif si vous ne souhaitez pas utiliser OpenLDAP pour gérer des comptes / groupes Linux).

II. Configuration de OpenLDAP
A. Démarrage du service
La première étape consiste à démarrer le service slapd, et le lancer automatiquement au démarrage du serveur avec systemctl:
sudo systemctl enable --now slapd.service
Vous pouvez vérifier que le service est bien démarré, pour cela utilisez la commande suivante et vérifiez que le statut « active (running) » apparaît.
systemctl status slapd.service

B. Paramétrage des outils clients LDAP
Nous allons maintenant paramétrer le fichier ldap.conf permettant de configurer les outils clients LDAP local afin d’éviter de répéter systématiquement certains paramètres de connexion comme la base DN ou l’URI.
- La base DN définit la racine de l’annuaire LDAP, elle permet aux clients LDAP de savoir où commencer la recherche. Du point de vue du serveur, la base DN se nomme « Suffixe DN ».
- L’URI définit le serveur LDAP auquel se connecter. On utilise généralement le FQDN de la machine.
Le chemin du fichier n’est pas le même en fonction des distributions.
- Sous Debian :
sudo nano /etc/ldap/ldap.conf
- Sous Red Hat :
sudo nano /etc/openldap/ldap.conf
Une fois dans le fichier, supprimez la mise en commentaire des lignes BASE et URI en retirant le # devant la ligne.
- Pour le paramètre
BASE, renseignez la base DN de l’annuaire sous la formedc=votre_organisation, dc=com …. - Dans le champ
URI, renseignez le FQDN de votre machine Linux sous la formeldap://FQDN.

Grâce à ce fichier, nous allons maintenant pouvoir utiliser différentes commandes et options qui seront utilisées dans la suite du tutoriel :
ldapsearch -Y EXTERNAL -H ldapi:///ldapadd -Y EXTERNAL -H ldapi:///ldapmodify -Y EXTERNAL -H ldapi:///
Chacune de ces commandes va permettre de chercher ou de modifier des éléments dans l’annuaire :
ldapsearchpermet de rechercher des informations dans l’annuaire LDAP.ldapaddpermet d’ajouter de nouvelles entrées dans l’annuaire.ldapmodifypermet de modifier des entrées déjà existantes.
Les options utilisées permettent de définir le mécanisme d’authentification utilisé et le serveur sur lequel se connecter via l’URI :
-Y External: permet de s’authentifier sans mot de passe à l’aide du mécanisme SASL EXTERNAL. L’authentification repose sur l’identité Linux (le UID et GID du système) pour s’authentifier comme l’administrateur LDAP.-H ldapi:///indique au client LDAP d’utiliser une connexion locale via un socket plutôt qu’une connexion réseau. Les trois slashs ont une signification précise : les deux premiers // indiquent qu’il n’y a pas d’hôte puisque la communication est locale, et le troisième / marque normalement le début d’un chemin absolu vers le socket. Dans cette forme abrégée, aucun chemin n’est mentionné car OpenLDAP utilise automatiquement le socket par défaut (généralement/run/openldap/slapd.sock).
C. Configuration du mot de passe Administrateur LDAP
Nous allons configurer le mot de passe de l’administrateur LDAP qui pourra effectuer les tâches d’administration dans l’annuaire. Dans les entrées LDAP, cet utilisateur se nomme olcRootDN.
Le mot de passe sera inscrit dans un fichier. Pour ne pas le mettre en clair, nous allons utiliser l’utilitaire slappasswd, qui nous permet de générer le hash d’un mot de passe.
Tapez la commande ci-dessous puis tapez le mot de passe souhaité. Confirmez-le et le hash de votre mot de passe devrait apparaître.
sudo slappasswd

Pour ajouter le mot de passe de l’administrateur LDAP dans la configuration, nous allons créer un fichier LDIF. Un LDIF (LDAP Data Interchange Format) est un fichier texte standardisé qui permet de décrire et d’échanger des données LDAP.
Il n’est pas recommandé d’éditer manuellement les fichiers LDIF générés et gérés par OpenLDAP au risque de corrompre la configuration. Il est recommandé de passer par des modifications dynamiques avec des fichiers LDIF externes.
Avant de créer notre fichier, une commande doit être tapée pour identifier l’index de la base de données mdb. Pour information, plusieurs bases de données sont utilisées par OpenLDAP :
- Base
config: permet de stocker la configuration elle-même. - Base
monitor: stocke les infos de supervision et de statistiques sur l’annuaire. - Base
mdb: il s’agit de la base applicative, c’est elle qui contient les données de l’annuaire (utilisateurs, groupes…).
Chaque base de données a un numéro d’index qui lui est attribué durant l’installation. Ce numéro n’est pas un nombre fixe. Il faut donc vérifier quel numéro porte l’index de la base de données mdb.
Pour trouver ce numéro, utilisez la commande ldapsearch suivante, avec l’option -b, pour chercher dans la base DN : cn=config toutes les bases configurées grâce au filtre olcDatabase=*.
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase=*)' dn
Il ne vous reste plus qu’à identifier le numéro d’index de la base MDB, ici {2}.

Créez le fichier rootpassword.ldif avec nano dans le répertoire de votre choix, de préférence un répertoire temporaire. Les fichiers LDIF ne sont que des fichiers temporaires pour appliquer une modification ou ajouter des données dans l’annuaire.
nano rootpassword.ldif
Dans le fichier, effectuez un copier-coller du contenu suivant en remplaçant le {X} par le numéro d’index de la base MDB et {SSHA}abc123... par le hash du mot de passe copié précédemment.
Attention : durant ce tutoriel, je vous invite à faire attention à la syntaxe des fichiers créés. Le système Linux est assez capricieux en général avec ce sujet et le moindre espace en trop pourrait provoquer une erreur. Soyez vigilant !
dn: olcDatabase={X}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}abc123...
En image, cela donne :

Il ne reste plus qu’à importer, à l’aide de ldapadd, le fichier LDIF avec l’option -f, pour qu’il soit appliqué à la configuration de OpenLDAP :
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f rootpassword.ldif
Une fois la commande terminée, un message vous dira que la base mdb a été modifiée :

Le mot de passe de l’administrateur LDAP est maintenant défini !
D. Importation des schémas
Une autre étape importante est l’importation des schémas LDAP dans le serveur.
Un schéma LDAP est un ensemble de règles qui définissent la structure et le contenu d’un annuaire LDAP. Sans schéma, l’annuaire ne sait pas quelles données peuvent être ajoutées ni comment elles doivent être structurées.
La richesse des fonctionnalités et la flexibilité de OpenLDAP dépendent directement des schémas que vous importez.
Un schéma LDAP va définir :
- Les classes d’objets : types d’entrées possibles dans l’annuaire (utilisateurs, groupes, ordinateurs…).
- Les attributs : propriétés que ces objets peuvent ou doivent contenir (pour un utilisateur : nom, prénom, login, mail…).
- Les règles de syntaxe : types de données (une chaîne de caractères, un nombre entier, un DN...) et le format attendu.
- Les contraintes : quels attributs sont obligatoires et lesquels sont optionnels (pour un utilisateur : nom, login obligatoires, mais prénom et e-mail facultatifs par exemple).
Dans ce tutoriel, nous allons importer 2 schémas considérés comme indispensables et un schéma optionnel spécifique aux systèmes Unix/Linux. Il est toutefois possible d’en ajouter d’autres, de les modifier ou encore d’en modéliser en fonction de vos besoins.
Les 3 schémas que nous allons importer sont :
cosine.ldif: ajoute des attributs génériques généralement liés à des coordonnées.inetorgperson.ldif: permet de créer des fiches utilisateurs standards (nom, prénom, e-mail, mobile, poste…).nis.ldif: permet de gérer des comptes et groupes Linux/Unix avec des attributs propres à ces systèmes (uid, gid, shell, home directory…). Il est optionnel si vous ne souhaitez pas utiliser des comptes LDAP compatibles Linux.
Enfin, sachez qu’un schéma est déjà présent par défaut : le schéma Core, qui définit les attributs fondamentaux et les classes d’objets de base.
Sous Debian, tapez les commandes suivantes pour importer les schémas LDAP :
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Sous Red Hat, tapez les commandes suivantes pour importer les schémas LDAP :
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
Le résultat de la commande doit vous renvoyer que les entrées ont été ajoutées.

Si une ou toutes les commandes vous renvoient l’erreur : ldap_add: Other (e.g., implementation specific) error (80), pas d'inquiétude, cela signifie que le schéma est déjà importé par défaut.
Pour vérifier que les schémas sont bien importés, voici la commande ldapsearch permettant de visualiser les schémas importés dans OpenLDAP :
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn

Les trois schémas ont bien été importés.
E. Structure DIT
Après l’importation des schémas, il est temps de créer la structure de notre annuaire LDAP à l’aide de deux fichiers LDIF : init.ldif et basedn.ldif.
Ces deux fichiers vont nous permettre de structurer un arbre logique appelé DIT (Directory Information Tree) dans lequel les informations, appelées entrées, sont représentées sous forme de branches. Pour simplifier, ce sera la structure de l’annuaire LDAP.
Voici le DIT qui va être configuré pour ce tutoriel :

Le premier fichier init.ldif va permettre d’effectuer la configuration de la base mdb pour pouvoir accueillir par la suite l’annuaire.
Ce fichier va définir le suffixe DN de l’annuaire (olcSuffix) représentant la racine de l’arborescence, équivalent à la base DN, ainsi que le DN de l’administrateur (olcRootDN) afin d’établir le compte ayant tous les droits pour gérer l’annuaire.
Commencez par créer le premier fichier :
nano init.ldif
Puis copiez le contenu suivant en l’adaptant à votre infrastructure sur les parties olcSuffix et olcRootDN.
Pour rappel, le mot de passe de l’administrateur LDAP a déjà été configuré dans le fichier rootpassword.ldif. Inutile de le rajouter dans le fichier init.ldif.
N’oubliez pas également de modifier les deux champs {X} pour spécifier le numéro de l’index de votre base mdb.
dn: olcDatabase={X}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=it-connect,dc=local
dn: olcDatabase={X}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=it-connect,dc=local
On applique ensuite la configuration avec ldapmodify :
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f init.ldif
Ce qui nous donne le résultat suivant :

Passons au fichier basedn.ldif qui va créer la racine de l’annuaire et l’objet administrateur lié à cette racine.
Créez le fichier avec nano :
nano basedn.ldif
Utilisez le contenu suivant en adaptant les champs suivants à vos besoins :
dn: dc=it-connect,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o:it-connect
dc: it-connect
dn: cn=admin,dc=it-connect,dc=local
objectClass: organizationalRole
cn: admin
description: Administrateur LDAP
Sauvegardez le fichier avec Ctrl+X, Y et la touche entrée.
Nous allons maintenant appliquer le fichier avec ldapadd suivi des options :
-x: Force une authentification simple (login/mot de passe) au lieu de SASL.-D: DN (Distinguished Name) de l’utilisateur qui se connecte (ici l’admin de l’annuaire).-W: demande le mot de passe de ce compte de manière interactive.-f basedn.ldif: fichier LDIF contenant les entrées à ajouter.
sudo ldapadd -x -D cn=admin,dc=it-connect,dc=local -W -f basedn.ldif
On vous demandera de taper le mot de passe de l’administrateur LDAP, renseignez le mot de passe de l’administrateur LDAP que vous avez défini avec la commande slappaswd précédemment (ne renseignez pas le mot de passe root Linux).
Le résultat doit être similaire à la capture ci-dessous :

F. Création des OU
Maintenant que le suffixe DN dc=it-connect, dc=local de notre serveur est défini, nous allons pouvoir créer nos Unités d’organisation.
Vous avez plusieurs choix :
- Faire un fichier LDIF pour chaque OU.
- Utiliser un seul fichier LDIF pour créer toutes les OU.
Il est recommandé de faire fichier par fichier si vous disposez d’une grande arborescence ou si vous souhaitez une gestion plus fine de votre annuaire.
Dans notre cas, nous allons créer les deux unités d’organisation « Utilisateurs » et « Groupes » dans le même fichier.
nano ou.ldif
Adaptez le contenu suivant selon votre configuration et vos besoins :
dn: ou=Utilisateurs,dc=it-connect,dc=local
objectClass: organizationalUnit
ou: Utilisateurs
dn: ou=Groupes,dc=it-connect,dc=local
objectClass: organizationalUnit
ou: Groupes
Ce qui donne :

Sauvegardez le fichier avec Ctrl+X, Y et la touche entrée.
Appliquez les modifications avec ldapdd :
sudo ldapadd -x -D cn=admin,dc=it-connect,dc=local -W -f ou.ldif
Rentrez le mot de passe de l’administrateur LDAP et voici le résultat :

Enfin, nous allons procéder à la création des groupes avec le fichier Groups.ldif et des Utilisateurs avec Users.ldif.
G. Modification schema nis
Si vous disposez du schéma nis, il est nécessaire de procéder à une modification du schéma, sans quoi une erreur va empêcher la création des groupes.
Remarque : si vous n’avez pas importé le schéma nis, passez directement à la sous-partie suivante de cet article.
Il existe deux types de classes pour définir un groupe :
groupOfNames: inclus dans le schémaCore, cette classe permet de définir un groupe LDAP « générique ».posixGroup: inclut dans le schémanispour créer des groupes Unix/Linux dans LDAP en y ajoutant les attributs systèmes.
Par défaut, ces deux classes d’objets sont de type STRUCTURAL, c’est ce qui permet de définir la nature de l’objet (ceci est un groupe, ceci est un utilisateur…).
Cependant, il n’est pas possible, pour un objet (groupes, utilisateurs…) d’avoir plusieurs classes STUCTURAL. Pour avoir des utilisateurs et des groupes utilisables en mode « LDAP classique » et authentifiable sur les systèmes Unix/Linux, il est nécessaire de basculer le posixGroup en mode AUXILIARY pour ajouter les attributs propres à Unix/Linux.
Comme pour les bases de données, chaque schéma importé a un numéro d’index attribué. Il faut donc récupérer le numéro de l’index du schéma nis à l’aide de la commande suivante :
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=schema,cn=config" "(objectClass=olcSchemaConfig)" dn

Il faut également identifier, au sein du schéma nis, le numéro d’index de la classe posixGroup avec la commande suivante (pensez à remplacer le {X}) :
sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn={X}nis,cn=schema,cn=config" olcObjectClasses | grep posixGroup

Créez ensuite le fichier suivant :
nano modifyClass_posixGroup.ldif
Ce fichier va permettre de supprimer la classe posixGroup en mode STRUCTURAL du schéma nis, puis de l’ajouter mais cette fois-ci en mode AUXILIARY.
Copiez le contenu suivant en adaptant les deux {X} au numéro d’index du schéma nis et les deux {Y} au numéro d’index de la classe posixGroup :
dn: cn={X}nis,cn=schema,cn=config
changetype: modify
delete: olcObjectClasses
olcObjectClasses: {Y}( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction of a group of accounts' SUP top STRUCTURAL MUST ( cn $ gidNumber ) MAY ( userPassword $ memberUid $ description ) )
dn: cn={X}nis,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: {Y}( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction of a group of accounts' SUP top AUXILIARY MUST ( cn $ gidNumber ) MAY ( userPassword $ memberUid $ description ) )
On applique le fichier avec ldapmodify :
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f modifyClass_posixGroup.ldif
Voici le résultat :

H. Création des groupes
Créez le fichier ldif pour les groupes :
nano Groups.ldif
Copiez le contenu ci-dessous en l’adaptant à vos besoins. Vous pouvez également ajouter d’autres attributs en fonction de vos besoins et des schémas importés.
Si vous souhaitez jeter un œil aux attributs disponibles dans les différents schémas, voici certains liens :
- Schéma Core
- Schéma Cosine
- Schéma inetOrgPerson
- Schéma nis (pas de documentation officielle mais les attributs sont listés)
Si vous n’utilisez pas le schéma nis, supprimez toutes les lignes après le commentaire « Attribut schéma nis ».
Important : si vous utilisez le schéma nis, il faut définir le gidNumber du groupe.
Le gidNumber est utilisé par Linux pour identifier un groupe dans un système Linux. Ce numéro doit être unique pour chaque groupe au sein du système, sinon des erreurs risquent d’apparaître.
Vous pouvez définir une plage de gidNumber à attribuer à vos groupes mais ne prenez pas une plage inférieure à 10000 pour éviter tout conflit avec les gid systèmes et les groupes locaux. Dans l’exemple ci-dessous, la plage 10000 à 20000 a été utilisée.
#Groupe Utilisateur
dn: cn=Utilisateurs,ou=Groupes,dc=it-connect,dc=local
objectClass: groupOfNames
cn: Utilisateurs
member: uid=timmy,ou=Utilisateurs,dc=it-connect,dc=local
member: uid=bob,ou=Utilisateurs,dc=it-connect,dc=local
# Attribut schéma nis
objectClass: posixGroup
gidNumber: 10000
memberUid: timmy
memberUid: bob
# Groupe Administrateur
dn: cn=Administrateur,ou=Groupes,dc=it-connect,dc=local
# Attribut schéma Core
objectClass: groupOfNames
cn: Administrateur
member: uid=timmy,ou=Utilisateurs,dc=it-connect,dc=local
# Attribut schéma nis
objectClass: posixGroup
gidNumber: 10001
memberUid: timmy
Appliquez la configuration avec ldapadd :
sudo ldapadd -x -D cn=admin,dc=it-connect,dc=local -W -f Groups.ldif
Résultat :

Les groupes sont créés !
I. Création des utilisateurs
Commençons par définir les mots de passe des utilisateurs avec la commande slappasswd afin que celui-ci nous renvoie le hash des mots de passe que l’on insérera dans les fichiers LDIF.

Créez ensuite le fichier Users.ldif avec nano :
nano Users.ldif
Copiez le contenu suivant en adaptant les champs à vos besoins. Vous pouvez également ajouter d’autres attributs en fonction de vos besoins et des schémas importés.
Si vous souhaitez jeter un œil aux attributs disponibles dans les différents schémas, voici certains liens :
- Schéma Core
- Schéma Cosine
- Schéma inetOrgPerson
- Schéma nis (pas de documentation officielle mais les attributs sont listés)
Si vous n’utilisez pas le schéma nis, supprimez toutes les lignes en dessous du commentaire « Attribut schéma nis ».
Important : si vous utilisez le schéma nis, il faut définir le uidNumber et le gidNumber de l’utilisateur.
Le uidNumber est utilisé par Linux pour identifier un utilisateur dans un système Linux. Ce numéro doit être unique pour chaque utilisateur au sein du système sinon des erreurs risquent d’apparaître. Vous pouvez définir une plage d’uidNumber à attribuer à vos utilisateurs mais ne prenez pas une plage inférieure à 10000 pour éviter tout conflit avec les uid systèmes et les utilisateurs locaux. Dans l’exemple ci-dessous, la plage 20000 à 30000 a été utilisée.
Le gidNumber (pour un utilisateur) va correspondre à son groupe principal, également appelé « groupe primaire ». Il faut rattacher l’utilisateur à un groupe existant. Dans l’exemple ci-dessous, tous les utilisateurs auront le groupe primaire Utilisateurs créé précédemment avec le gidNumber 10000.
L'exemple ci-dessous crée les utilisateurs Timmy et Bob.
# Utilisateur Timmy
dn: uid=timmy,ou=Utilisateurs,dc=it-connect,dc=local
objectClass: inetOrgPerson
# Attribut schéma inetOrgPerson
cn: Timmy
sn: Bucheton
givenName: Timmy
uid: timmy
displayName : Timmy Bucheton
mail: [email protected]
userPassword: {SSHA}3dQMcbz33rMzDDdt0Wmzhd+P9g8WnMKn
# Attribut schéma nis
objectClass: posixAccount
uidNumber: 20000
gidNumber: 10000
homeDirectory: /home/timmy
loginShell: /bin/bash
# Utilisateur Bob
dn: uid=bob,ou=Utilisateurs,dc=it-connect,dc=local
objectClass: inetOrgPerson
# Attribut schéma inetOrgPerson
cn: Bob
sn: Martin
givenName: Bob
uid: bob
displayName: Bob Martin
mail: [email protected]
userPassword: {SSHA}3dQMcbz33rMzDDdt0Wmzhd+P9g8WnMKn
# Attribut schéma nis
objectClass: posixAccount
uidNumber: 20001
gidNumber: 10000
homeDirectory: /home/bob
loginShell: /bin/bash
Il faut ensuite appliquer le fichier de configuration avec ldapadd.
sudo ldapadd -x -D cn=admin,dc=it-connect,dc=local -W -f Users.ldif
Ce qui donne :

Nos utilisateurs sont créés et présents dans l’annuaire !
III. Validation de la configuration
Pour finir, nous allons effectuer différents tests pour vérifier notre configuration, notamment en étant positionnés en tant que client LDAP.
A. Interrogation de l’annuaire avec ldp.exe
Nous allons utiliser l’outil ldp.exe de Microsoft disponible pour Windows Server et Windows 11. Il permet de se connecter à un annuaire LDAP et d’explorer son contenu.
Pour commencer, nous allons modifier le fichier hosts de Windows pour que le serveur OpenLDAP soit résolu. Si vous disposez déjà d’une entrée DNS pour votre serveur OpenLDAP, inutile de modifier ce fichier.
Ouvrez le bloc-notes en administrateur et ouvrez le fichier C:\Windows\System32\drivers\etc\hosts pour y mettre l’IP de votre serveur OpenLDAP et son FQDN.

Dans l’invite de commande, exécutez la commande ping ou nslookup pour vérifier que le FQDN du serveur est bien résolu :

Ouvrez ensuite l’application ldp.exe.
Si elle n’est pas présente, suivez l’article suivant de It-Connect :
Cliquez sur “Connexion”, puis « Se connecter »

Renseignez le FQDN de votre serveur LDAP et le port 389 par défaut. Vérifiez que les deux options sont décochées.

Un message devrait apparaître pour indiquer que la connexion est établie.

Retournez dans “Connexion”, puis cliquez sur “Se lier »

Dans la fenêtre, choisissez l’option « Liaison simple » puis rentrez le DN de l’administrateur dans le champ « Utilisateur » et le mot de passe de l’administrateur LDAP.

Un autre message devrait apparaitre pour vous informer que vous êtes connecté avec le compte admin.

Dans « Affichage », cliquez sur « Arborescence ».
Dans la fenêtre, renseignez la base DN de votre annuaire :

L’ensemble de votre arborescence LDAP devrait apparaître.

Il est désormais possible d’utiliser votre serveur OpenLDAP pour authentifier vos utilisateurs et exploiter vos groupes sur les systèmes et applications compatibles avec LDAP : portails web, serveurs Linux, GLPI, Zabbix, Nextcloud, Jenkins, GitLab, Proxmox …
Grâce à cette centralisation, les comptes ne sont plus gérés localement mais directement depuis le serveur OpenLDAP.
B. Connexion LDAP sur un client Linux
Nous allons pour finir tester la configuration sur un client Linux en nous authentifiant avec un utilisateur de notre annuaire. Si vous disposez du schéma nis, suivez cette partie, sinon allez directement à la conclusion.
Modifiez tout d’abord le fichier /etc/hosts pour y ajouter votre serveur LDAP, si vous ne disposez pas d’entrée DNS.
Effectuez une mise à jour des paquets du client Linux:
Sous Red Hat :
sudo dnf update -y && sudo dnf upgrade -y
Sous Debian :
sudo apt update -y && sudo apt upgrade -y
Malgré l’ensemble de notre configuration, il n’est pas possible d’utiliser les comptes de timmy et bob pour s’authentifier sur la machine Linux. Il est nécessaire d’ajouter certains composants sur les machines clients :
SSSD: Service qui permet à une machine Linux d’authentifier ses utilisateurs via un annuaire LDAP.Oddjob(Red Hat uniquement) : Service utilisé pour exécuter à la demande certaines tâches d’administration système que d’autres programmes ne peuvent pas faire directement, faute de droits.Oddjob-mkhomedir(Red Hat uniquement) : Extension d’Oddjob qui permet de créer automatiquement le répertoire personnel (home directory) d’un utilisateur lors de sa première connexion. Sur les distributions Debian, c’est PAM et surtout son extensionpam_mkhomedirdéjà installé par défaut qui va permettre la création du home directory.
Nous allons également utiliser les services nss et pam déjà installés par défaut sur les deux distributions :
NSS: Name Service Switch (NSS) est le mécanisme central de Linux pour définir où et comment chercher des informations système (utilisateurs, groupes, hôtes, etc.).PAM: Pluggable Authentication Modules (PAM) est un service Linux qui gère l’authentification des utilisateurs.
Sous Red Hat, tapez la commande suivante pour installer sssd, oddjob et son extension :
sudo dnf install sssd-ldap oddjob-mkhomedir oddjob -y
Sous Debian, seul SSSD doit être installé :
sudo apt install sssd-ldap -y
Nous allons créer un fichier de configuration pour spécifier à SSSD, NSS et PAM les paramètres LDAP à utiliser.
sudo nano /etc/sssd/sssd.conf
Copiez le contenu suivant en adaptant les champs à votre configuration :
[sssd]
services = nss, pam
config_file_version = 2
domains = it-connect.local
[nss]
[domain/it-connect.local]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldap.it-connect.local
cache_credentials = True
ldap_user_search_base = ou=Utilisateurs,dc=it-connect,dc=local
ldap_group_search_base = ou=Groupes,dc=it-connect,dc=local
ldap_id_use_start_tls = false
ldap_auth_disable_tls_never_use_in_production = true
override_shell = /bin/bash
use_fully_qualified_names = True
Appliquez les permissions pour donner uniquement un accès à l’utilisateur root :
sudo chmod 600 /etc/sssd/sssd.conf
Il faut également modifier le fichier /etc/nsswitch.conf pour lui indiquer d’utiliser le service sssd (et donc LDAP) pour trouver un utilisateur, un groupe et les mots de passe.
Éditez le fichier avec nano puis ajoutez la mention sss devant les paramètres passwd, shadow et group :

Redémarrez le service sssd :
sudo systemctl restart sssd
Pour vérifier la connexion, testez l’existence des uid de vos utilisateurs avec la commande id. Vos utilisateurs devraient apparaître avec le/les groupes associés.
id [email protected]

SSSD est correctement configuré, il est maintenant temps d’activer le module oddjob sur Red Hat et PAM sur Debian pour permettre la création automatique des home directory des utilisateurs.
Sous Red Hat, tapez les commandes :
sudo systemctl enable --now oddjobd.service
sudo authselect select sssd with-mkhomedir
Sous Debian :
sudo pam-auth-update --enable mkhomedir
Pour tester la configuration, tapez la commande su avec le nom complet de votre utilisateur afin de prendre son identité :
su [email protected]
Dans cet exemple, l’utilisateur bob a été utilisé. On remarque avec la commande ls /home/ que le home directory a bien été créé.

Vous pouvez dorénavant vous connecter avec ce compte en passant par la page classique de connexion.

Pour tester que les groupes sont bien reconnus par le système, vous pouvez utiliser getent :
getent group <nom du groupe>@it-connect.local

Il est dorénavant possible d’utiliser les utilisateurs et les groupes de votre annuaire OpenLDAP comme des comptes Linux classiques.
Dans l’exemple ci-dessous, le fichier test.txt a été créé par l’utilisateur bob, et appartient au groupe Administrateur. On remarque avec ls -l que les permissions sont bien appliquées :

IV. Conclusion
Voilà, votre annuaire OpenLDAP est maintenant opérationnel ! 🎉
Nous avons parcouru ensemble les bases de la configuration et de la mise en place des objets essentiels. Gardez à l’esprit qu’OpenLDAP est extrêmement modulable : vous pourrez enrichir votre annuaire avec de nouveaux schémas et adapter sa structure à vos besoins spécifiques
Si vous êtes en production, il est nécessaire de sécuriser votre annuaire OpenLDAP en utilisant la version sécurisée du protocole LDAP : LDAPS. Il se trouve que j’ai également rédigé un tutoriel pour mettre en place LDAPS sur OpenLDAP, n’hésitez pas à y jeter un œil !
Je vous remercie pour votre lecture, n’hésitez pas à laisser un avis dans les commentaires.
FAQ
Qu’est-ce qu’un schéma LDAP ?
Un schéma LDAP définit les attributs, classes d’objets et règles de l’annuaire. OpenLDAP peut fonctionner avec les schémas par défaut, mais l’ajout de schémas comme inetOrgPerson ou nis est souvent indispensable pour répondre à des scénarios d'utilisation de l'annuaire LDAP (gestion d'utilisateurs, authentification UNIX, etc.).
Comment vérifier les schémas chargés dans OpenLDAP ?
Comme l'explique cet article, une requête ldapsearch à destination de cn=schema,cn=config permet à l'administrateur de lister les schémas importés.
Comment ajouter un schéma supplémentaire ?
Les schémas sont normalement fournis au format .ldif. Il convient alors d'exploiter la commande ldapadd pour importer un nouveau schéma dans un annuaire LDAP. Par exemple : ldapadd -H ldapi:/// -Y EXTERNAL -f schema.ldif. La commande est nommée de la même façon sur Red Hat et Debian.
Peut-on enrichir l’annuaire LDAP plus tard sans tout reconfigurer ?
Oui. Avec cn=config, l’ajout de schémas, la modification des ACL ou la création de nouvelles OU sont des actions réalisables "à chaud". Il est donc possible de faire évoluer l’annuaire en fonction des besoins sans interruption de service.
Est-il possible d’automatiser la préparation de l’annuaire LDAP ?
Oui. Les administrateurs système peuvent compter sur des playbooks Ansible ou des scripts Bash regroupant les instructions nécessaires pour l’import des schémas, la création des OU et même la création d'objets (utilisateurs, groupes, etc.). Cela permet d'automatiser la configuration d'OpenLDAP.

