Introduction à LDAP

LDAP est un protocole permettant d’interroger un service d’annuaire sur un réseau. Si vous avez déjà joué avec l’environnement Active Directory eh bien sachez qu’en background, c’est le protocole LDAP que vous utilisez (avec une interface graphique).

Alors à quoi ça sert un annuaire ? Tout simplement à stocker toutes les informations relatives à un domaine : les utilisateurs, leurs attributs, les groupes, les imprimantes, les machines… L’idée étant de centraliser absolument toutes les informations liées à un domaine afin d’en faciliter la gestion.

Un annuaire LDAP, c’est une structure de type DIT (Directory Information Tree) qui, pour un domain donné (ici whiteflag.fr) va contenir l’ensemble des informations sous la forme d’un arbre avec plusieurs branches/feuilles. Dans sa forme la plus basique un annuaire LDAP pourrait ressembler à ça :

Capture d’écran du 2019-06-08 11-13-46.png

Tout annuaire est constitué d’une racine. Cette racine c’est tout simplement le nom du domaine que l’on va formater de cette manière :

dc=domain,dc=tld

Sois ici :

dc=whiteflag,dc=fr

Mais qu’est ce que sont les DC, CN et OU ? Et les DN dans l’histoire ?

Les DC (pour Domain Components) sont tout simplement les branches les plus hautes de notre annuaire soit ici notre racine. Les OU (Organizational Units) sont des unités organisationnelles. Voyez cela comme des groupes dans lesquels on va stocker d’autres objets (des utilisateurs, des ordinateurs etc…). Par exemple sur le schéma ci-dessus j’ai créé une OU crypto dans laquelle sont stockés deux utilisateurs Alice et Bob. Les CN (Common Name) sont les noms de nos objets (nom d’utilisateur, nom d’ordinateur etc…).

Quant au DN (Distinguished Name) c’est tout simplement le nom absolu d’un objet dans l’annuaire. Par exemple le DN de l’utilisateur Alice est :

cn=Alice,ou=crypto,ou=groupes,dc=whiteflag,dc=fr

II/ Installer LDAP

Pour installer LDAP il suffit d’entrer cette commande :

sudo apt install slapd ldap-utils

Une fois l’installation terminée, et si vous lancez un scan nmap, vous verrez que le port 389 est ouvert :

Capture d’écran du 2019-06-08 11-31-09.png

Ensuite viens l’étape de la configuration que l’on pourra initier via cette commande :

sudo dpkg-reconfigure slapd

La première information à entrer c’est le nom du domaine que l’on utilisera qui constituera la racine de notre annuaire :

Capture d’écran du 2019-06-07 18-23-18.png

Puis il faudra entrer le nom de l’entité (votre domaine sans le TLD) :

Capture d’écran du 2019-06-07 18-41-17.png

Ainsi qu’un mot de passe administrateur du LDAP :

Capture d’écran du 2019-06-07 18-26-02.png

Une fois l’installation terminée vous devriez pouvoir requêter votre serveur LDAP en utilisant cette commande :

ldapsearch -x -H ldap://localhost -b dc=whiteflag,dc=fr -D "cn=admin,dc=whiteflag,dc=fr" -W

Capture d’écran du 2019-07-15 11-31-13.png

Arguments :
-x indique l’utilisation d’une authentification simple (voir §III)
-H indique l’emplacement du serveur LDAP
-b indique à partie de quelle base on doit effectuer la recherche. Ici on indique à LDAP qu’il doit lister le contenu de l’arbre depuis la racine (dc=whiteflag,dc=fr)
-D indique le nom de l’utilisateur à utiliser

Si vous obtenez une réponse similaire c’est que tout fonctionne 🙂 !

III/ Se connecter à LDAP

LDAP dispose de plusieurs moyens d’authentification. Certains sont sécurisés… D’autres un peu moins. Ici nous verrons trois type d’authentification : anonyme, simple bind, et SASL.

  • Authentification simple bind

C’est le mode d’authentification le plus basique quand on travaille sur un serveur LDAP. Pour s’authentifier il faudra spécifier un nom d’utilisateur (son DN dans l’annuaire LDAP) ainsi que son mot de passe :

ldapsearch -x -H ldap://localhost -b "dc=whiteflag,dc=fr" -D "cn=admin,dc=whiteflag,dc=fr" -W

Arguments :
-x indique l’utilisation du mode d’authentification simple
-H indique la localisation du serveur LDAP
-b indique à partir de quelle base faire la recherche LDAP
-D indique l’utilisateur à utiliser pour se binder au serveur LDAP (son DN)
-W indique que l’on va s’authentifier via un mot de passe

Capture d’écran du 2019-07-15 11-00-26.png

  • Anonymous bind :

L’authentification anonyme repose sur les même mécanismes que l’authentification simple bind. La seule différence ici est qu’on ne spécifiera pas de nom d’utilisateur ni de mot de passe :

ldapsearch -x -H ldap://localhost -b "dc=whiteflag,dc=fr"

Arguments :
-x indique que l’on utilise la méthode d’authentification simple (sans spécifier d’identifiants/mot de passe)
-H indique la localisation de votre serveur ldap
-b indique la base de la recherche à effectuer (ici on va afficher l’ensemble de l’annuaire)

Capture d’écran du 2019-07-15 10-39-49.png

Si cette méthode d’authentification est pratique (puisqu’elle ne nécessite pas d’identifiants valides) elle est aussi dangereuse puisque n’importe quelle personne pourra se connecter à votre annuaire et en lire le contenu. Pour ma part j’ai pour habitude de le désactiver une fois l’installation du serveur terminée.

  • Authentification SASL :

SASL (pour Simple Authentification and Security Layout) est un framework d’authentification standardisé par l’IETF. SASL est tout simplement une surcouche qui va nous permettre d’intégrer différents mécanismes de sécurité en plus de ceux déjà proposés par OpenLDAP :

Résultat de recherche d'images pour "sasl ldap"

Plusieurs mécanismes d’authentification sont donc gréffés par dessus OpenLDAP : Digest, External, Kerberos etc… Il existe déjà de nombreux articles détaillant l’usage de SASL over LDAP dont celui-ci qui, même s’il est relativement vieux, est toujours applicable en 2019

Dernière chose, tout au long de cet article j’ai utilisé plusieurs fois l’argument -H suivie d’une URL :

Capture d’écran du 2019-07-15 11-31-13

Cette URL est toujours précédée par le nom du protocole à utiliser (ici ldap). Encore une fois il existe plusieurs protocoles : ldap (le classique), ldaps (la version SSL/TLS de ldap://) et ldapi. Ce dernier utilise les IPC (Inter Process Communications) et est donc supposément plus rapide et plus sûr que le classique ldap.

Pour le coup je n’ai jamais eu l’occasion de vérifier si c’était vrai ou non donc dans le doute je ne vous conseille pas de l’utiliser sauf si vous savez ce qu’il fait (et dans ces là je vous invite à me le dire dans l’espace des commentaires 😀 :D).


Voilà pour cette introduction à LDAP et aux annuaires. Dans les prochains articles nous verrons comment gérer des groupes/utilisateurs et utiliser l’authentification LDAP sur un réseau.

Un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s