• 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 24/09/2018

Gérez votre annuaire LDAP

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans le chapitre précédent, vous avez vu que votre annuaire avait une structure particulièrement basique puisqu’il ne comporte que deux entrées. Vous avez également découvert qu’il était possible de décrire les changements à appliquer à un annuaire par le format LDIF.

Savez-vous que votre annuaire contient un deuxième DIT ? En effet, dans les anciennes versions de slapd, la configuration se faisait en modifiant des fichiers dans  /etc/ldap/  et imposait de redémarrer le serveur pour être prises en compte. Cette méthode est toujours possible mais il est maintenant recommandé d’utiliser la nouvelle méthode dite de “configuration à chaud” (en anglais OLC pour On-Line Configuration) qui permet de ne pas avoir à redémarrer le serveur pour actualiser.

Découvrez la configuration à chaud de slapd

Maintenant, la configuration est gérée sous forme d’un DIT dont le suffixe est  cn=config  et le service reste disponible pendant l’application des changements. Vous pouvez voir les entrées de cet arbre par la commande :

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config

dn: cn=module{0},cn=config

dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: olcBackend={0}mdb,cn=config

dn: olcDatabase={-1}frontend,cn=config

dn: olcDatabase={0}config,cn=config

dn: olcDatabase={1}mdb,cn=config

Cette configuration contient donc des informations sur les modules, le schéma, les classes d’objets intégrées par défaut. La configuration propre à votre DIT  dc=mon-entreprise,dc=com  se trouve dans  olcDatabase={1}mdb,cn=config  .

Comme cette configuration est stockée sous forme de DIT, vous pouvez la modifier au moyen de fichiers LDIF. Pour tester ça, je vous propose de modifier la quantité de logs générée par slapd. Par défaut, slapd ne génère aucun log et vous aimeriez peut-être avoir plus d’informations sur l’activité de votre serveur. L’attribut qui gère ça est directement un attribut de  cn=config  appelé  olcLogLevel  .

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -s base -b cn=config olcLogLevel
dn: cn=config
olcLogLevel: none
Extrait du DIT cn=config avec des zones de couleur pour indiquer l'étendu de la recherche si scope a pour valeur
Étendue de la recherche en fonction de la valeur du paramètre "scope"

Vous allez faire passer le niveau de logs à  stats  . Ça génèrera peut-être trop de messages pour un système en production mais ce sera parfait pour vos tests. Pour cela, enregistrez un fichier  logLevel.ldif  contenant :

dn: cn=config
changeType: modify
replace: olcLogLevel
olcLogLevel: stats

Reprenons ensemble en détails cette commande :

dn: cn=config

le DN à modifier

changetype: modify

le type de modification de l’objet à effectuer

replace: olcLogLevel

l’attribut à modifier

olcLogLevel: stats

la nouvelle valeur de l’attribut

Vous pouvez appliquer ce changement par la commande :

$ sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logLevel.ldif

Les options sont les mêmes que pour  ldapsearch  sauf le  -f  qui indique le fichier LDIF à appliquer.

À partir de maintenant, votre serveur slapd va générer des logs mais ils seront renvoyés vers le fichier général  /var/log/syslog  . Pour indiquer au daemon rsyslog qui gère les logs d’avoir un fichier de log séparé, créez le fichier  /etc/rsyslog.d/10-slapd.conf  contenant :

# Logs du serveur OpenLDAP slapd
local4.* /var/log/slapd.conf

Puis redémarrez rsyslog par la commande :

$ sudo systemctl restart rsyslog

Bravo, vous avez réalisé votre première modification grâce à un fichier LDIF. La prochaine étape consiste à faire évoluer votre annuaire vers la structure suivante :

Schéma de la structure du DIT à créer. Une racine
Structure du DIT à créer

Ajoutez de nouveau noeuds pour compléter votre DIT

Pour ajouter de nouveaux noeuds et un premier utilisateur à votre arbre, vous allez utiliser un fichier LDIF. Créez donc le fichier  structure.ldif  contenant :

dn: ou=Personnes,dc=mon-entreprise,dc=com
objectclass: organizationalUnit
ou: Personnes
description: Employes de l entreprise

dn: ou=Machines,dc=mon-entreprise,dc=com
objectclass: organizationalUnit
ou: Machines
description: Ordinateurs de l entreprise

dn: cn=Marie Dupond,ou=Personnes,dc=mon-entreprise,dc=com
objectClass: inetOrgPerson
givenName: Marie
sn: Dupond
cn: Marie Dupond
uid: mdupond
userPassword: mdupond

La structure du fichier est la même mais comme vous rajoutez plusieurs entrées, vous devez sauter une ligne entre chaque DN. Ce fichier rajoute d’abord deux  ou  : une pour inventorier les employés et une pour inventorier les ordinateurs de l’entreprise. Il rajoute ensuite une personne avec la classe d’objet  inetOrgPerson  . Vous avez déjà vu les autres attributs, à l’exception du le mot de passe à la fin (qui sera chiffré par slapd) et de l’  uid  qui correspond au login ou à un uid numérique suivant l’usage qui est fait de ce champ.

Vous remarquerez aussi que dans ce fichier, vous n’utilisez pas l’attribut  changetype  pour préciser qu’il s’agit d’un ajout car vous allez utiliser la commande  ldapadd  qui précise ça par elle-même :

$ sudo ldapadd -x -W -D “cn=admin,dc=mon-entreprise,dc=com” -H ldap://localhost -f structure.ldif

Pourquoi ne pas utiliser les mêmes options de connexion que pour la commande Idamodify que j’ai utilisé précédemment ?

Par défaut l’utilisateur root système a les droits de modification sur le DIT  cn=config  mais pas sur votre DIT. Sauf à changer ces droits, vous devez donc passer par le compte administrateur de votre DIT. Voici le détail des options :

  • -x  : indique une authentification simple par mot de passe

  • -W  : affiche une invite interactive pour taper le mot de passe du compte

  • -D  : pour indiquer le DN du compte à connecter

  • -H  : indique toujours la méthode de connexion choisie mais cette fois-ci  ldap://localhost  initie une connexion par le réseau sur le port TCP 389.

Félicitations, vous avez créé votre première base LDAP et vous pourrez utiliser votre nouvel utilisateur pour vous authentifier sur votre site web dans les prochains chapitres.

Je termine simplement ce chapitre en vous montrant une autre utilisation possible des fichiers LDIF : la sauvegarde à chaud de votre annuaire dans un fichier texte.

Sauvegardez votre annuaire sous forme de fichier LDIF

C’est un moyen très pratique de réaliser des sauvegardes de votre annuaire. Pour cela, vous devez utiliser la commande  slapcat  :

$ sudo slapcat -b dc=mon-entreprise,dc=com -l mon_backup.ldif

Pour restaurer vos données en cas de besoin, éteignez slapd :

$ sudo systemctl stop slapd

Puis restaurez votre base à partir du fichier de sauvegarde par la commande :

$ slapadd -c -b dc=mon-entreprise,dc=com -F /etc/ldap/slapd.d -l mon_backup.ldif

L’option  -c  indique de continuer en cas d’erreur (vous voulez ajouter une entrée déjà présente par exemple), l’option  -F  indique le répertoire de configuration et l’option  -l  le fichier LDIF à utiliser pour la restauration.

Pour une sauvegarde complète, il vous faudra également sauvegarder la configuration de votre annuaire en sauvegardant le contenu du répertoire  /etc/ldap/  .

Dans la partie suivante, vous explorerez l’univers du web en installant un serveur LAMP (Linux-Apache-MySQL-PHP).

En résumé

  • slapd  permet de modifier la configuration à chaud par la méthode dite OLC

  • par la méthode OLC la configuration est stockée sous forme d’un DIT de base  cn=config

  • le format LDIF peut être utilisé pour ajouter de nouvelles unités d’organisation (  ou  ), des utilisateurs ou tout autre type d’entrées

  • le format LDIF peut également être utilisé pour réaliser des sauvegardes de votre annuaire

Exemple de certificat de réussite
Exemple de certificat de réussite