meta données pour cette page
Déployer le service OpenLDAP
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
- On affirme la volonté de vouloir modifier la configuration :
- On définit notre domaine :
- On définit le nom de l'organisation :
- Par la suite, on donne et on confirme le mot de passe de l'administrateur du service.
Je n'ai pas mis d'image car ça me semble évidant que vous n'en avez pas besoin.
- On sélectionne HDB qui est le type de base de donnée utilisé aujourd'hui et adapté pour notre besoin actuel :
- Pour le reste laissez les options par défaut.
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
- On génère les index qui vont permettre de référencer les données dans la base:
slapindex
- Backup des entrées :
slapcat > sauvegarde.ldif
- Restauration des entrées :
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
- Ajouter de nouvelles entrées :
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
On ajoute les nouvelles entrées via :
ldapadd -W -D "cn=admin,dc=local,dc=net" -x -H ldap://localhost -f nouvelles-entrees.ldif
- -W pour la demande d'un mot de passe
- -D pour spécifier l'utilisateur qui sera utilisé pour s'authentifier
- -x pour demander une authentification
- -H pour indiquer quel serveur LDAP on va communiquer
- -f spécifie le fichier contenant les nouvelles entrée
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"
- Rechercher un entrée :
ldapsearch -x -H ldap://localhost -b dc=local,dc=net "(gidNumber=2000)"
- -x utilise une simple authentification au lieu de SASL
- -H indique sur quel serveur on pose notre question
- -b point d'entrée de la recherche
- “(gidNumber=2000)” le mot clé à rechercher dans la base
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