Vous êtes sur la page 1sur 1

Personnaliser l'apparence

Installez un annuaire LDAP

Dans les deux prochains chapitres, vous allez apprendre à installer et


à gérer un annuaire LDAP.

Mais c’est quoi, un annuaire LDAP ?

LDAP signi e Lightweight Directory Access Protocol. C’est le standard


de fait pour accéder à un annuaire. Un annuaire est une base de
données qui va contenir des informations sur des personnes, des
machines, des groupes ou toute autre catégorie que vous pourriez
imaginer.

Les annuaires sont couramment employés pour stocker les données


d’authenti cation (login et mot de passe) ou pour obtenir des
informations sur des personnes (e-mail, téléphone, etc.) ou des objets
(localisation, marque, modèle, etc.). Toutes les applications de votre
entreprise (site web, e-mail, comptes système des ordinateurs, etc.)
peuvent par exemple utiliser ce service d’annuaire pour valider les
identi ants de connexion.

Voyons plus précisément la structure d’un annuaire LDAP.

Découvrez le fonctionnement de LDAP

Tout d’abord, un annuaire LDAP est un organisation hiérarchique


d’entrées. Cette organisation constitue un arbre appelé DIT (Directory
Information Tree) dont une des entrées est la racine.

Exemple d'un DIT de racine "dc=mon-entreprise,dc=com"

Chaque entrée peut contenir des attributs auxquels on assigne des


valeurs. Chaque entrée appartient au moins à une classe d’objet qui
dé nit les attributs de l’entrée.

Par exemple, la classe d’objet “Employés” pourrait dé nir qu’un


“élément” appartenant à cette classe doit contenir les attributs
obligatoires :

nom de famille ;

prénom.

et peut contenir les attributs facultatifs :

e-mail ;

téléphone ;

date de naissance.

Chacun des attributs de cet élément aura une valeur. Par exemple,
“nom de famille=Dupond”.

De nombreux attributs et classes d’objets sont prédé nis, mais il est


possible de dé nir les vôtres si besoin. L’ensemble des classes
d’objets et attributs utilisés est dé ni dans le schéma. Certains
attributs sont particulièrement courants et intéressants à connaître :

Attributs Fonction

une partie d’un nom DNS. Pour une entreprise


dc (domain dont le nom de domaine serait “mon-
component) entreprise.com”, il est courant d’appeler la
racine du DIT “dc=mon-entreprise,dc=com”

cn (common le nom commun. Pour une personne, c’est en


name) général le prénom + le nom de famille

gn (given name) le prénom

sn (surname) le nom de famille

o (organization pour une entreprise, ce serait le nom de


name) l’entreprise ou de la liale

ou l’unité d’organisation. Pour une entreprise, ce


(organisational serait le département (commercial,
unit) comptabilité, etc.)

Un attribut particulier est le dn (distinguished name), c’est-à-dire le


nom distinct. C’est un attribut qui identi e de manière unique un
élément dans le DIT. Il reprend les noms de tous les éléments depuis
la racine jusqu’à l’élément, et indique ainsi un “chemin” unique pour
trouver l’élément.

Par exemple, le dn de “Marie Dupond” qui travaille chez “mon-


entreprise.com” pourrait être “cn=Marie
Dupond,ou=Personnes,dc=mon-entreprise,dc=com”. On appelle RDN,
pour Relative Distinguished Name, la partie “ nale” propre à Marie. Ici
le RDN serait “cn=Marie Dupond”. Lui ne garantit pas l'unicité dans le
DIT.

Vous avez maintenant quelques bases sur LDAP. Pour une


présentation plus détaillée, je vous recommande de suivre le cours
“Présentation du concept d’annuaire LDAP”. Je vous propose de
passer à la pratique et d’installer l’annuaire OpenLDAP sur votre
serveur Ubuntu.

Installez OpenLDAP

OpenLDAP est un des annuaires les plus répandus. Pour l’installer,


vous devrez installer le paquet slapd . Installez également le paquet
ldap-utils qui contient les utilitaires clients pour pouvoir
interroger ou modi er votre annuaire.

$ sudo apt-get install slapd ldap-utils

Voilà, vous avez installé votre annuaire. Vous allez maintenant utiliser
l’outil de con guration debconf de Debian pour dé nir la con guration
de base de votre annuaire :

$ sudo dpkg-reconfigure slapd

Indiquez :

No pour la première question a n de pouvoir utiliser l’outil de


con guration ;

pour nom DNS : mon-entreprise.com ;

pour nom d’organisation : mon-entreprise ;

le mot de passe administrateur x2 ;

choisissez le format de base par défaut : mdb ;

No pour savoir si la base doit être supprimée quand slapd est


purgé ;

Yes pour déplacer l’ancienne base de données.

Comme votre DNS est mon-entreprise.com, la racine de votre DIT a


été con gurée à “dc=mon-entreprise,dc=com”, vous pouvez utiliser la
commande ldapsearch suivante pour visualiser votre DIT :

$ sudo ldapsearch -Q -L -Y EXTERNAL -H ldapi:/// -b


dc=mon-entreprise,dc=com
version: 1

#
# LDAPv3
# base <dc=mon-entreprise,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# mon-entreprise.com
dn: dc=mon-entreprise,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: mon-entreprise
dc: mon-entreprise

# admin, mon-entreprise.com
dn: cn=admin,dc=mon-entreprise,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result

# numResponses: 3
# numEntries: 2

La commande ldapsearch sert, comme son nom l’indique, à


chercher dans un annuaire LDAP. Voici le détail des options utilisées :

-
active le mode silencieux pour l’authenti cation SASL.
Q

indique le mode SASL choisi pour l’authenti cation.


Normalement, EXTERNAL implique une authenti cation par
certi cat client, mais dans ce cas-là, ça signi e que
- l’authenti cation se fera par l’UID et le GID du compte système.
Y C’est pour ça que vous devez lancer la commande avec “sudo”.
L’utilisateur root a des passe-droits pour accéder à la base
locale LDAP.

indique d’a cher le résultat au format LDIF. On aurait pu


-
indiquer -LLL pour avoir la même chose sans toutes les
L
lignes commentées.

indique l’URI qu’on veut utiliser pour se connecter. Ici


- ldapi:/// dit de se connecter à la socket Unix en local (la
H communication passe par un chier local plutôt que par le
réseau).

indique le nœud à partir duquel vous voulez faire votre


recherche. Ici dc=mon-entreprise,dc=com est la racine donc
-
vous recherchez dans tout le DIT. À la suite du nœud, vous
b
auriez pu indiquer des ltres pour votre recherche, mais sans
ltre vous avez l’a chage le plus complet.

Je vais maintenant vous parler un peu du format LDIF utilisé pour


a cher la réponse de cette commande.

Comprenez le format LDIF

LDIF signi e “LDAP Directory Interchange Format”. C’est un format


créé pour décrire les ajouts ou les modi cations à réaliser dans un
annuaire LDAP. Le format d’une entrée dans un chier LDIF est
toujours de la forme suivante :

dn: <Le dn que vous voulez changer>


changetype: <add, replace ou delete. Cette ligne est
optionnelle>
<attribut ou objectclass>: valeur

Dans la sortie de la commande précédente, vous voyez que votre DIT


contient en tout et pour tout 2 entrées :

La première est la racine. On la reconnaît au fait qu’elle appartient


à la classe d’objet dcObject . Vous voyez qu’elle appartient aussi
à 2 autres classes d’objets. Chacune décrit une série d’attributs
que l’entrée peut ou doit contenir. Vous avez ensuite deux attributs
: o et dc , deux types que vous connaissez déjà.

La deuxième est le compte administrateur LDAP, comme l’indique


l’attribut description . Il appartient notamment à la classe
d’objets simpleSecurityObject qui représente les comptes
d’authenti cation.

En résumé

LDAP est LE standard en terme d’accès à un service d’annuaire.

Un annuaire est une base de données hiérarchique optimisée pour


la recherche et la lecture d’informations.

Un annuaire LDAP prend la forme d’un arbre, appelé Directory


Information Tree, dans lequel on trouve des entrées identi ées de
manière unique par un Distinguished Name.

Chaque entrée appartient à une ou plusieurs classe d’objet et peut


posséder des attributs.

Le format LDIF permet de décrire des changements à appliquer à


un annuaire LDAP.

Dans la partie suivante, vous utiliserez le format LDIF pour compléter


votre DIT et créer votre premier utilisateur.

J'ai terminé ce chapitre et je passe au suivant

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 con guration se faisait en
modi ant des chiers dans /etc/ldap/ , et imposait de redémarrer
le serveur pour être prise en compte. Cette méthode est toujours
possible, mais il est maintenant recommandé d’utiliser la nouvelle
méthode dite de “con guration à chaud” (en anglais OLC pour On-Line
Con guration) qui permet de ne pas avoir à redémarrer le serveur
pour actualiser.

Découvrez la con guration à chaud de slapd

Maintenant, la con guration est gérée sous forme d’un DIT dont le
su xe 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 con guration contient donc des informations sur les modules,
le schéma, les classes d’objets intégrées par défaut. La con guration
propre à votre DIT dc=mon-entreprise,dc=com se trouve dans
olcDatabase={1}mdb,cn=config .

Comme cette con guration est stockée sous forme de DIT, vous
pouvez la modi er au moyen de chiers LDIF. Pour tester ça, je vous
propose de modi er 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

É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 chier
logLevel.ldif contenant :

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

Reprenons ensemble en détail cette commande :

dn: cn=con g le DN à modi er

changetype: modify le type de modi cation de l’objet à effectuer

replace: olcLogLevel l’attribut à modi er

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 chier LDIF à appliquer.

À partir de maintenant, votre serveur slapd va générer des logs mais


ils seront renvoyés vers le chier général /var/log/syslog . Pour
indiquer au daemon rsyslog qui gère les logs d’avoir un chier de log
séparé, créez le chier /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 modi cation grâce à un chier
LDIF. La prochaine étape consiste à faire évoluer votre annuaire vers
la structure suivante :

Structure du DIT à créer

Ajoutez de nouveau nœuds pour compléter votre DIT

Pour ajouter de nouveaux nœuds et un premier utilisateur à votre


arbre, vous allez utiliser un chier LDIF. Créez donc le chier
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 chier est la même mais comme vous rajoutez


plusieurs entrées, vous devez sauter une ligne après chaque DN. Ce
chier rajoute d’abord deux ou : un pour inventorier les employés et
un 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 mot de passe à la n (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 chier, 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ée précédemment ?

Par défaut, l’utilisateur root système a les droits de modi cation 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 authenti cation simple par mot de passe ;

-W : a che 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 authenti er sur votre
site web dans les prochains chapitres.

Je termine simplement ce chapitre en vous montrant une autre


utilisation possible des chiers LDIF : la sauvegarde à chaud de votre
annuaire dans un chier texte.

Sauvegardez votre annuaire sous forme de chier LDIF

Il y a un moyen très pratique pour réaliser des sauvegardes de votre


annuaire.

Sauvegarder votre annuaire

Étape 1 : sauvegardez votre arbre.

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


mon_backup.ldif

Étape 2 : sauvegardez la con guration de votre annuaire.

$ sudo tar -cvf ma_conf_g_ldap.tar /etc/ldap

Restaurer vos données

Pour la restauration vos données en cas de besoin :

Étape 1 : éteignez slapd :

$ sudo systemctl stop slapd

Étape 2 : restaurez votre base à partir du chier de sauvegarde :

$ 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 con guration et l’option -l le chier LDIF à utiliser pour
la restauration.

Étape 3 : restaurez votre con guration.

$ sudo tar -xvf ma_conf_g_ldap.tar /etc/ldap

En résumé

slapd permet de modi er la con guration à chaud par la méthode


dite OLC.

Par la méthode OLC, la con guration 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.

Dans la partie suivante, vous explorerez l’univers du Web en installant


un serveur LAMP (Linux-Apache-MySQL-PHP). Avant de nous
intéresser à la suite du cours, testez vos connaissances à travers
l'activité puis le quiz, dans les prochains chapitres.

Indiquer que ce chapitre n'est pas terminé

À vous de jouer!

Une toute nouvelle association, “Le Plâtre numérique”, vient de naître


et recherche des bénévoles pour l’accompagner dans son activité.

Une de vos amies, formatrice de métier, et membre fondatrice de


l’association, vous propose de venir rencontrer le reste du bureau
pour une demande bien particulière : ils souhaiteraient mettre en
place un annuaire interne dans l’association, pour pouvoir donner
différentes fonctions ou différents droits aux membres sur le système
informatique à venir.

Lors de cette entrevue, le bureau de l’association vous fournit


l’organigramme suivant :

Organigramme de l'association

Ils comptent sur vous pour la mise en place de cet annuaire, et


pourraient même par la suite vous donner d’autres missions
passionnantes !

Votre mission pour l’association

À partir de l’organigramme de l’association, créez le chier


organigramme.ldif .

Actuellement PMO, ancien Adminsys, TI, mais aussi mentors chez


OpenClassrooms! J'ai aussi participé à la MAJ de cours Linux et
PowerShell

Etienne Lavanant
Étienne Lavanant, Ingénieur Systèmes diplômé de Télécom Sud-Paris,
travaille en tant que Freelance sur Paris

Vous aimerez peut-être aussi