Table des matières

Déployer le service OpenLDAP

Attention! Il faut être ultra minutieux et dès qu'il y a le moindre problème, il faut tout réinstaller et également tout effacer avec la commande suivante :
apt-get autoremove --purge slapd ldap-utils libldap-2.4-2
rm -r /var/backups/

Prérequis

Nous avons besoin de ces paquets binaires :

apt-get install slapd ldap-utils
Le paquet slapd détient une liste d'outils permettant l'administration du daemon OpenLDAP. Ces commandes sont principalement exécutable depuis le serveur.

Voici la liste des outils dont-il dispose :

dpkg -L slapd | grep sbin
/usr/sbin/slapcat      # Utiliser pour faire un backup
/usr/sbin/slapd        # est le démon OpenLDAP
/usr/sbin/slapindex    # créer les index au sein de la bdd
/usr/sbin/slapschema   
/usr/sbin/slapauth     
/usr/sbin/slapdn       # Test la validité d'un DN
/usr/sbin/slaptest     # Test la validité du fichier slapd.conf
/usr/sbin/slappasswd   # Utilitaire de conversion de mdp
/usr/sbin/slapadd      # Ajout de nouvelles entrée LDIF dans la base
/usr/sbin/slapacl
Le paquet ldap-utils peut être utilisé depuis une machine cliente. La communication se fera avec le protocole LDAP, il faudra donc au préalable que le serveur OpenLDAP soit en écoute sur le port 636.

Voici la liste des outils dont-il dispose :

dpkg -L ldap-utils | grep bin
/usr/bin/ldapsearch    # Effectue une recherche dans l'annuaire
/usr/bin/ldapcompare   # Permet de comparer une entrée avec une valeur spécifique
/usr/bin/ldapmodrdn    # Modifie le RDN d'une entrée
/usr/bin/ldappasswd    # Modifie le mot de passe d'une entrée
/usr/bin/ldapdelete    # Supprime une entrée
/usr/bin/ldapwhoami    # Affiche avec qui les modifications ont été faite
/usr/bin/ldapmodify    # Modifie une entrée
/usr/bin/ldapurl
/usr/bin/ldapexop
/usr/bin/ldapadd       # Ajouter une entrée

Construction de notre base

L'intégralité de la configuration se situe dans le dossier suivant :

ls /etc/ldap/
ldap.conf  sasl2  schema  slapd.d

Admettons que l'on souhaite créer notre domaine local.net en modifiant les paramètres BASE et URI ci-dessous :

nano /etc/ldap/ldap.conf
BASE    dc=local,dc=net 
URI     ldap://localhost  

La dernière ligne contenant le paramètre URI indique que le serveur OpenLDAP écoutera lui-même.

Pour se facilité la vie ont utilise la reconfiguration du paquet qui va permettre de partir sur une base rapidement fonctionnelle :

dpkg-reconfigure slapd

Je n'ai pas mis d'image car ça me semble évidant que vous n'en avez pas besoin.

Ainsi on peut vérifier le bon fonctionnement :

ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <dc=local,dc=net> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# local.net
dn: dc=local,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: local
dc: local

# admin, local.net
dn: cn=admin,dc=local,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Administrer le serveur

Depuis le serveur en local

Réalisable avec le paquet slapd

Dans un 1er temps nous stoppons le service :

service slapd stop
slapindex
slapcat > sauvegarde.ldif
slapadd < sauvegarde.ldif

Après ces manipulations, on n'oublie pas de redémarrer le service

service slapd start

Depuis le serveur à distance

Réalisable avec le paquet ldap-utils

On décrit dans un fichier ce dont nous voulons :

nano /etc/ldap/nouvelle-entree.ldif
nouvelle-entree.ldif
dn: ou=iut,dc=local,dc=net
objectClass: top
objectClass: organizationalUnit
ou: iut
 
dn: ou=users,ou=iut,dc=local,dc=net
objectClass: top
objectClass: organizationalUnit
ou: users
 
dn: ou=groups,ou=iut,dc=local,dc=net
objectClass: top
objectClass: organizationalUnit
ou: groups
 
dn: cn=etudiants,ou=groups,ou=iut,dc=local,dc=net
objectClass: posixGroup
cn: etudiants
gidNumber: 2000
Malheureusement le serveur LDAP est chatouilleux, prenez le temps de vérifier dans votre fichier LDIF que les retours à la lignes ne disposent pas de caractères inutile tel que les espaces!

On ajoute les nouvelles entrées via :

ldapadd -W -D "cn=admin,dc=local,dc=net" -x -H ldap://localhost -f nouvelles-entrees.ldif

D'autres paramètres sont disponible sur le site d'OpenLDAP -> ldapadd

On obtient ce type de réponse :

Enter LDAP Password: 
adding new entry "ou=iut,dc=local,dc=net"

adding new entry "ou=users,ou=iut,dc=local,dc=net"

adding new entry "ou=groups,ou=iut,dc=local,dc=net"

adding new entry "cn=etudiants,ou=groups,ou=iut,dc=local,dc=net"
ldapsearch -x -H ldap://localhost -b dc=local,dc=net "(gidNumber=2000)"

D'autres paramètres sont disponible sur le site d'OpenLDAP -> ldapsearch

On obtient :

# extended LDIF
#
# LDAPv3
# base <dc=local,dc=net> with scope subtree
# filter: (gidNumber=2000)
# requesting: ALL
#

# etudiants, groups, iut, local.net
dn: cn=etudiants,ou=groups,ou=iut,dc=local,dc=net
objectClass: posixGroup
cn: etudiants
gidNumber: 2000

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Pas toutes les commandes cités plus haut sont détaillés ici car le but est juste de découvrir cette nouvelle approche qu'est la gestion d'un annuaire. Pour en savoir plus, je vous invite à consulter la documentation officiel.

Via shelldap

On aura besoin de ce paquet:

apt install shelldap

Il faut d'abord configurer dans son home :

nano .shelldap.rc
binddn: uid=user,ou=groups,dc=local,dc=net
cacheage: 300
confpath: /home/user/.shelldap.rc
server: pele
timeout: 10

Et on peut accéder en lecture au serveur openldap avec :

shelldap