Configuration du serveur LDAP (OpenLDAP)
Introduction à LDAP
Avant de commencer la configuration, il est conseillé d'établir l'inventaire des objets et des informations à stocker dans l'annuaire.
Dans le cadre de cet article, nous nous intéresserons à une gestion centralisée des carnets adresses. Sur notre intranet, nous avons installé une messagerie avec Qmail. En effet il peut être intéressant de rassembler les informations contenues dans les carnets d'adresse de chacun dans une base stockée au niveau du serveur, directement disponible dans les clients de messagerie de tous les utilisateurs.
Les utilisateurs sont caractérisés par
- leur nom
- leur prénom
- et leur adresse e-mail
Lors de la configuration de l'annuaire, il est nécessaire d'intervenir sur plusieurs fichiers de configuration situés dans le répertoire /etc/openldap :
- slapd.conf : ce fichier comporte diverses informations telles que la racine supérieure de l'annuaire, l'administrateur principal de l'annuaire LDAP et son mot de passe, les droits d'accès par défaut, les fichiers d'objets et de syntaxe à utiliser ainsi que les règles d'accès pour les entrées et les attributs de l'annuaire LDAP.
- les fichiers d'objets suffixés oc.conf : le fichier par défaut est slapd.oc.conf. Ils contiennent la déclaration de chaque objet de l'annuaire LDAP.
- les fichiers d'attributs suffixés at.conf : le fichier par défaut est slapd.at.conf. Ces fichiers contiennent la syntaxe de chaque attribut composant les objets.
Edition du fichier slapd.conf
Editons tout d'abord le fichier slapd.conf :
# # See slapd.conf(5) for details on configuration options. #This file should NOT be world readable. # # inclusion des autres fichiers de configuration include /etc/openldap/slapd.at.conf include /etc/openldap/slapd.oc.conf # vérification que l'on utilise réellement ou non la structure # des objets c'est à dire que si vous mettez « on » ici, vous #devez n'utilisez que que les propriétés des objets définies #dans les fichiers .oc.conf schemacheck off # fichiers qui stockent les arguments et les PID du serveur pidfile /var/run/slapd.pid argsfile /var/run/slapd.args ############################################################## # ldbm database definitions ############################################################## # Type de l'annuaire LDAP database ldbm # Définition de la racine du serveur suffix "o=commentcamarche, c=fr" # Définition du compte d'administration ici ldap_admin # c'est un nom arbitraire et ce n'est pas forcément un # utilisateur défini dans /etc/passwd du système rootdn "cn=ldap_admin, o=commentcamarche, c=fr" rootpw secret # cleartext passwords, especially for the rootdn, should # be avoid. See slapd.conf(5) for details. # directory /var/lib/ldap # Définition des accès autorisés à la base LDAP defaultaccess readPour affiner la configuration, il peut être utile de consulter les pages du man. Compte tenu que ce fichier contient le mot de passe en clair de l'administrateur de l'annuaire, il est impératif de positionner les droits « rw------- » sur le fichier slapd.conf :
chmod 600 /etc/openldap/slapd.confQuelques indications pour la gestion des accès à votre annuaire. Dans le cas actuel, toutes les personnes ont un accès en lecture mais il est possible de donner des droits particuliers en utilisant la directive access dont la syntaxe est :
access to <une partie de l'arbre> [by <une personne> <droits none|search|read|write>]De plus, l'ordre d'écriture des règles a une grande importance. Par exemple :
access to dn= « .*, o=commentcamarche, c=fr » by * search access to dn= « .*, c=fr » by * readSignifie que tout le monde a le droit en lecture sur toute l'arborescence c=fr excepté sur la partie o=commentcamarche où les utilisateurs ont un droit en recherche seulement. Le fait d'inverser l'ordre de ces deux lignes, impliquera que la directive concernant c=fr en lecture sera la seule à être prise en compte et, on ne protègera plus ainsi la partie de l'arbre o=commentcamarche en recherche seulement.
Edition du fichier slapd.oc.conf
Le fichier etc/openldap/slapd.oc.conf décrit la structure des objets qui vont être utilisés dans l'annuaire LDAP.
Il est inclu dans le fichier slapd.conf par la directive
include /etc/openldap/slapd.oc.conf.
Par exemple dans notre cas, nous allons utiliser les objets organization et person dont les définitions sont :
objectclass organization requires objectClass, o allows businessCategory, description, destinationIndicator, facsimileTelephoneNumber, internationaliSDNNumber, l, physicalDeliveryOfficeName, postOfficeBox, postalAddress, postalCode, preferredDeliveryMethod, registeredAddress, searchGuide, seeAlso, st, streetAddress, telephoneNumber, teletexTerminalIdentifier, telexNumber, userPassword, x121Address objectclass person requires objectClass, sn, cn allows objectclass organization requires objectClass, o allows businessCategory, description, destinationIndicator, facsimileTelephoneNumber, internationaliSDNNumber, l, physicalDeliveryOfficeName, postOfficeBox, postalAddress, postalCode, preferredDeliveryMethod, registeredAddress, searchGuide, seeAlso, st, streetAddress, telephoneNumber, teletexTerminalIdentifier, telexNumber, userPassword, x121Address objectclass person requires objectClass, sn, cn allows description, seeAlso, telephoneNumber, userPassword description, seeAlso, telephoneNumber, userPasswordDans le cas ci-dessus, trois champs sont obligatoires (objectClass, sn et cn) et il est aussi possible de renseigner quatre autres champs (description, seeAlso, telephoneNumber, UserPassword).
Afin d'utiliser l'annuaire LDAP pour assurer l'authentification sur leur système, il faut mettre en oeuvre une série d'objets qui sera décrite un peu plus loin... le fait de renseigner le champ password ne suffit pas !
Il est possible de créer des objets personnalisés en créant un nouveau fichier suffixé .oc.conf que vous devez inclure ensuite à l'aide de la directive « include ».
Edition du fichier slapd.at.conf
Pour terminer, il existe un troisième fichier de configuration qui est /etc/openldap/slapd.at.conf. Ce fichier contient la syntaxe et le type (bin, ces, tel...) des différents attributs. Vous trouverez des informations supplémentaires sur les types dans les pages du man.
Attribute | photo | bin |
Attribute | personalsignature | bin |
Attribute | jpegphoto | bin |
Attribute | audio | bin |
Attribute | labeledurl | ces |
Attribute | ref | ces |
Attribute | userpassword | ces |
Attribute | telephonenumber | tel |
Attribute | facsimiletelephonenumber | fax tel |
Attribute | pagertelephonenumber | pager tel |
Attribute | homephone | tel |
Attribute | mobiletelephonenumber | mobile tel |
Attribute | aliasedObjectName | dn |
Attribute | member | dn |
Attribute | owner | dn |
Attribute | seealso | dn |
Attribute | manager | dn |
Attribute | documentauthor | dn |
Attribute | secretary | dn |
Attribute | lastmodifiedby | dn |
Attribute | associatedname | dn |
Attribute | naminglink | dn |
Attribute | reciprocalnaminglink | dn |
Attribute | dn | dn |
De la même façon, pour ajouter de nouveaux attributs, il est possible de créer un nouveau fichier suffixé .at.conf, que vous devez inclure ensuite à l'aide de la directive « include ».
Lancement du serveur
Il ne nous reste plus qu'à lancer notre serveur et faire en sorte qu'il démarre automatiquement à chaque redémarrage de la machine.
Voici les deux méthodes pour vérifier et créer rapidement les liens nécessaires au démarrage automatique d'un service.
Par exemple, le serveur LDAP doit être lancé aux run-levels 3,4 et 5. Il faut donc taper la commande suivante :
chkconfig --level 345 ldap onéquivalent à avec l'ancienne méthode :
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc3.d/S70ldap ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc4.d/S70ldap ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc5.d/S70ldapIl doit être stoppé aux run-levels 0,1,2,6 :
chkconfig --level 0126 ldap offéquivalent à :
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc0.d/K40ldap ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc1.d/K40ldap ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc2.d/K40ldap ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc6.d/K40ldapMaintenant que nla structure de l'annuaire est définie, il est possible de lancer celui-ci en tapant la commande suivante :
/etc/rc.d/init.d./ldap start
Ecrit par Jeff Pillou et Michel Maudet