polux     Julien Thomas - TELECOM Bretagne frenchenglish

Déploiement d'OpenLDAP

La version installé dans notre cas est la 2.3.35-r1 et avec les options suivantes :

  • berkdb crypt gdbm ipv6 perl readline sasl (selinux) ssl tcpd -debug -kerberos -minimal -odbc -overlays -samba -slp -smbkrb5passwd

Configuration de base

Il est premièrement nécessaire d'éditer le fichier /etc/conf.d/slapd pour indiquer les options que l'on passera au démarrage du démon slapd. Nous avons mis dans un premier temps OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock ldap://'". Cela indique notamment que le serveur sera disponible via les URI en ldap et en ldaps.

La deuxième action consiste à éditer les fichiers de configuration d'OpenLDAP. Le fichier /etc/openldap/ldap.conf définit les informations de base pour les outils ldap. Le fichier /etc/openldap/slapd.conf définit les informations pour le server slapd, notamment le compte principal, le type de base de donnée utilisé et la racine de l'arbre.

Voici un extrait du fichier slapd.conf détaillant les points clés. Le mot de passe à été généré avec la commande slappasswd en SSHA. Pour rappel, «ROOT_DN» est la racine de l'annuaire. Dans notre cas, «ROOT_DN» = dc=polux,dc=org, mais c'est une racine fictive, le nom de domaine n'étant pas enregistré.

password-hash SSHA
database ldbm
suffix «ROOT_DN» # Definit la racine de l'arbre
checkpoint 32 30 # [kbyte] [min]
rootdn "cn=Manager,«ROOT_DN»" # Définit le compte principal
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}yI6/8O+Ge61r1QWTPmB5qURR9eyrIrdz # Définit le mot de passe
du compte principal, ici chiffrer en SSHA
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/openldap-ldbm
# Indices to maintain
index objectClass eq

Pour tester le serveur un simple ldapsearch -x suffit, si les accès anonyme sont autorisés. L'option -x indique qu'il ne faut pas utiliser l'authentification SASL que l'on pas encore configurée.

Organisation générale de l'arbre Un annuaire

LDAP est une structure en arborescence regroupant les données dans différentes branches. L'arbre utilisé pour notre maquette est représentée sur la figure suivante :

Structure de l'annuaire LDAP

Il est donc constitué de trois branches.

  • La branches account (dn : ou=accounts,«ROOT_DN») contient l'ensemble des comptes utilisés pour la maquette. Il s'agit des comptes des mails (dn : ou=mails, ou=accounts,«ROOT_DN») ou des comptes utilisés par les serveurs physiques (dn : ou=servers, ou=accounts,«ROOT_DN»).
  • La branche services (ou=services,«ROOT_DN») contient l'ensemble des informations que l'on peut qualifier des services. Il s'agit des informations DNS (conversion adresse IP vers nom, dn : ou=dns, ou=services,«ROOT_DN»), des informations DHCP pour configurer les différents serveurs de la maquette (dn : ou=dhcp, ou=services,«ROOT_DN») et de la liste des groupes d'utilisateurs (dn : ou=groups, ou=services,«ROOT_DN»).
  • Enfin, la troisième branche, servers (dn : ou=servers,«ROOT_DN»), contient l'ensemble des informations des serveurs.

Le fichier LDIF permettant de générer cet arbre est le suivant :

dn : dc=polux,dc=org
objectClass : dcObject
objectClass : organization
dc : polux
o : Polux LDAP
dn : ou=accounts,dc=polux,dc=org
objectClass : top
objectClass : organizationalUnit
description : Branche utilisateurs
ou : accounts
dn : ou=mails,ou=accounts,dc=polux,dc=org
objectClass : top
objectClass : organizationalUnit
description : mails accounts branch
ou : mails
dn : ou=servers,ou=accounts,dc=polux,dc=org
objectClass : top
objectClass : organizationalUnit
description : servers accounts branch
ou : servers

dn : ou=services,dc=polux,dc=org
objectClass : top
objectClass : organizationalUnit
description : services branch
ou : services
dn : ou=groups,ou=services,dc=...
objectClass : top
objectClass : organizationalUnit
description : groups branch
ou : groups
dn : ou=dhcp,ou=services,dc=...
objectClass : top
objectClass : organizationalUnit
description : DHCP branch
ou : dhcp
dn : ou=dns,ou=services,dc=...
objectClass : top
objectClass : organizationalUnit
description : DNS branch
ou : dns
dn : ou=servers,dc=polux,dc=org
objectClass : top
objectClass : organizationalUnit
description : Servers branch
ou : servers


«Design-by-assumption works as long as assumptions hold. Assumptions are shortcuts to useful efficiencies, provided they are not violated. »
David S. Isenberg

«If the kernel is not evaluated to an MLS-capable protection profile, MLS features cannot be trusted regardless of how impressive the demonstration looks.»
J. Davidson