Installer un annuaire LDAP (OpenLDAP)



LDAP est un protocole d'accès aux annuaires allégés (Lightweight Directory Access Protocol).
Voir Annuaires LDAP et Protocole LDAP

D'importantes différences existent entre les versions 1.2.x et 2.0.x d'OpenLDAP. J'essaierai de traiter de ces différences autant que possible.

Logiciels

OpenLDAP

OpenLDAPhttp://www.openldap.org/
openldap-1.2.12 -- 10 mai 2001, 1009 ko (.tgz)
openldap-2.0.11 -- 24 mai 2001, 1687 ko (.tgz)

Le projet OpenLDAP est un effort collaboratif pour fournir une suite d'applications et d'outils de développement LDAP robuste, commercialisable, pleinement fonctionnelle, et Open Source. Le projet est géré par une communauté de volontaires répartis à travers le monde qui utilise Internet pour communiquer, planifier et développer la suite OpenLDAP et sa documentation associé.

Le projet OpenLDAP est heureux de vous annoncer la disponibilité d'OpenLDAP 2.0, une suite de serveurs, clients, utilitaires et outils de développement utilisant le protocole LDAP (Lightweight Weight Directory Protocol).

OpenLDAP est dérivé du logiciel LDAP de l'Université du Michigan version 3.3.

Cette version intègre les composants suivants :

Il y a en plus quelques composants contribués :

nss_ldap

http://www.padl.com/nss_ldap.html
nss_ldap-153 -- 30 mai 2001 , 148 ko (.tar.gz)
La résolution des entités défini dans la RFC 2307 est généralement effectuée via un ensemble d'appels de bibliothèques C UN*X (tel que getpwnam() pour retourner les attributs d'un utilisateur). Le module nss_ldap fournit un moyen aux stations Linux et Solaris d'accéder aux informations (tel que utilisateurs, hôtes, et groupes) depuis un annuaire LDAP. Le module est l'implémentation de référence de la RFC 2307, et a été étudié par des vendeurs comme Sun (qui a développé l'interface "Nameservice Switch" originale).

pam_ldap

http://www.padl.com/pam_ldap.html
pam_ldap-116 -- 14 juin 2001 , 93 ko (.tar.gz)
Le module pam_ldap fournit aux stations Linux et Solaris un moyen de s'identifier auprés de répertoires LDAP, et de changer ses mots de passes dans le répertoire.

Installation

Compilez et installez OpenLDAP 1.2.x.
Le plus facile est d'utiliser les paquets propre à votre distribution GNU/Linux.
bash$ lynx ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-1.2.12.tgz
bash$ tar xvzf openldap-1.2.12.tgz
bash$ cd openldap-1.2.12
bash$ CFLAGS="-O2" ./configure --prefix=/usr --sysconfdir=/etc \
    --libexecdir=/usr/sbin --localstatedir=/var/run \
    --enable-wrappers=yes --enable-passwd=yes --enable-shell=yes \
    --enable-shared
bash$ make
bash$ make install
bash$ cd ..
bash$ rm -rf openldap-1.2.12

Configuration

Les fichiers de configuration se situe dans le répertoire /etc/openldap/

Fichiers principaux

slapd.conf
slapd.conf est le fichier de configuration du démon slapd.
Modifiez la racine de l'annuaire, l'identifiant de l'administrateur et son mot de passe.
Attention : Ce fichier contient le mot de passe de l'administrateur. Il doit donc être en mode 0600.
OpenLDAP 1.2.x
OpenLDAP 2.0.x
ldap.conf
ldap.conf est le fichier de configuration des utilitaires LDAP en ligne de commande.
Modifiez la racine de l'annuaire.
OpenLDAP 1.2.x
OpenLDAP 2.0.x

Fichiers secondaires

ldapfilter.conf
OpenLDAP 1.2.x : ldapfilter.conf
OpenLDAP 2.0.x : ldapfilter.conf
ldapsearchprefs.conf
OpenLDAP 1.2.x : ldapsearchprefs.conf
OpenLDAP 2.0.x : ldapsearchprefs.conf
ldaptemplates.conf
OpenLDAP 1.2.x : ldaptemplates.conf
OpenLDAP 2.0.x : ldaptemplates.conf

Descriptions d'objets

Un excellent site pour naviguer dans l'arborescence des objets LDAP : http://ldap.hklc.com/
D'autres schéma peuvent être trouvés à l'adresse http://www.openldap.org/its/.
OpenLDAP "core"
L'inclusion de ces définitions est indispensable. Elle implémente les schémas présent dans :
RFC1274 : The COSINE and Internet X.500 Schema
RFC2079 : Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Ressource Identifiers (URIs)
RFC2247 : Uning Domains in LDAP/X.500 Distinguished Names
RFC2251 : Lightweight Directory Access Protocol (v3)
RFC2252 : Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions
RFC2253 : Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
RFC2254 : The String Representation of LDAP Search Filters
RFC2255 : The LDAP URL Format
RFC2256 : A Summary of the X.500(96) User Schema for use with LDAPv3
RFC2377 : Naming Plan for Internet Directory-Enabled Applications
RFC2589 : Lightweight Directory Access Protocol (v3): Extensions for Dynamic Directory Services

OpenLDAP 1.2.x : slapd.at.conf et slapd.oc.conf
OpenLDAP 2.0.x : core.schema

COSINE Pilot
L'inclusion de ces définitions est recommandé. Elle implémente les schémas présent dans :
RFC1274 : The COSINE and Internet X.500 Schema

OpenLDAP 2.0.x : cosine.schema

InetOrgPerson
L'inclusion de ces définitions est recommandé. Elle implémente les schémas présent dans :
RFC2798 : Definition of the inetOrgPerson LDAP Object Class

OpenLDAP 2.0.x : inetorgperson.schema

Network Information Service
Cette définition implémente les schémas présent dans :
RFC2307 : An Approach for Using LDAP as a Network Information Service
RFC2252 : Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions
Nécessite "core" et COSINE.

OpenLDAP 1.2.x : nis.at.conf ; nis.oc.conf ; others_nis.at.conf et others_nis.oc.conf
OpenLDAP 2.0.x : nis.schema

Netscape Roaming

OpenLDAP 1.2.x : netscape_roaming.at.conf et netscape_roaming.oc.conf

Objet Java
Cette définition implémente les schémas présent dans :
RFC2713 : Schema for Representing Java(tm) Objects in an LDAP Directory

OpenLDAP 2.0.x : java.schema

Objet CORBA
Cette définition implémente les schémas présent dans :
RFC2714 : Schema for Representing CORBA Objects in an LDAP Directory

OpenLDAP 2.0.x : corba.schema

Kerberos V KDC

OpenLDAP 2.0.x : krb5-kdc.schema

Projet OpenLDAP
Nécessite "core", COSINE et InetOrgPerson.

OpenLDAP 2.0.x : openldap.schema

Divers expérimental

OpenLDAP 2.0.x : misc.schema

North America Directory Forum

OpenLDAP 2.0.x : nadf.schema

Debian GNU/Linux

OpenLDAP 1.2.x : debian.at.conf et debian.oc.conf

Netscape Mail Routing

OpenLDAP 1.2.x : mail_netscape.at.conf et mail_netscape.oc.conf

Sécurité

Avant tout, changez le mot de passe de l'administrateur de l'annuaire et vérifiez que le fichier slapd.conf n'est pas lisible par le monde (mode 600).
Une bonne partie de la sécurité consiste à écrire les bonnes règles d'accès aux données de l'annuaire via la directive access du fichier slapd.conf.

Administration

Maintenant que openldap est correctement configuré. Démarrez-le.
$ slapd
Si tout ne se passe pas correctement, lancez-le en mode de débogage. Les messages d'erreur s'afficheront à l'écran.
$ slapd -d 255
Pour créer la base, il faut partir d'un fichier LDIF initial qui contient au minimum la racine et le rootdn. Appelez ce fichier racine.ldif
dn: dc=exemple,dc=fr
objectClass: top
objectClass: dcObject
dc: exemple

dn: cn=Manager,dc=exemple,dc=fr
objectClass: organizationalRole
cn: Manager
Incluez ce fichier dans l'annuaire.
$ ldapadd -f racine.ldif -D "cn=Manager,dc=exemple,dc=fr" -w secret

Script de démarrage

Récupérez le script de démarrage openldap.init.
$ cp openldap.init /etc/init.d/openldap
$ chmod 755 /etc/init.d/openldap
$ chown root.root /etc/init.d/openldap
$ chkconfig --add openldap
Slapd peut aussi être démarré via inetd, mais cette solution est réservé au cas d'un serveur LDAP tré peu sollicité.
Ajoutez dans inetd.conf :
ldap	dgram	tcp	nowait	root	/usr/sbin/tcpd	/usr/sbin/slapd
et rechargez inetd.

Journalisation

Sauvegarde

Définissez, dans le fichier slapd.conf, une directive replog par annuaire que vous souhaitez sauvegarder.
Pour répliquer l'annuaire sur un annuaire esclave, utilisez la directive replica.

Statistiques

Les statistiques d'utilisation du serveur LDAP sont stockées dans un objet spécial "cn=monitor"
$ ldapsearch -s base -b'cn=monitor' 'objectclass=*'
CN=MONITOR
version=slapd 1.2.11-Release (Fri Jun 23 11:07:26 EDT 2000)
threads=1
connection=7 : 20010620100353Z : 33 : 33 : cn=Manager,dc=exemple,dc=fr : 
connection=9 : 20010613073814Z : 279 : 279 : NULLDN : 
connection=10 : 20010613073814Z : 559 : 559 : NULLDN : 
connection=12 : 20010613073814Z : 2 : 2 : cn=Manager,dc=exemple,dc=fr : 
connection=14 : 20010621084547Z : 1 : 1 : NULLDN : 
connection=15 : 20010621093944Z : 2 : 1 : NULLDN : 
connection=16 : 20010620094936Z : 40 : 40 : cn=Manager,dc=exemple,dc=fr : 
connection=17 : 20010620094403Z : 39 : 39 : cn=Manager,dc=exemple,dc=fr : 
connection=18 : 20010620094403Z : 35 : 35 : cn=Manager,dc=exemple,dc=fr : 
connection=20 : 20010615063058Z : 2 : 2 : cn=Manager,dc=exemple,dc=fr : 
connection=21 : 20010620095039Z : 37 : 37 : cn=Manager,dc=exemple,dc=fr : 
connection=22 : 20010614071357Z : 2 : 2 : cn=Manager,dc=exemple,dc=fr : 
connection=23 : 20010614071357Z : 9 : 9 : cn=Manager,dc=exemple,dc=fr : 
connection=24 : 20010620094936Z : 38 : 38 : cn=Manager,dc=exemple,dc=fr : 
connection=25 : 20010620100353Z : 34 : 34 : cn=Manager,dc=exemple,dc=fr : 
connection=26 : 20010615063058Z : 3 : 3 : cn=Manager,dc=exemple,dc=fr : 
connection=27 : 20010620100353Z : 32 : 32 : cn=Manager,dc=exemple,dc=fr : 
connection=28 : 20010620095039Z : 53 : 53 : cn=Manager,dc=exemple,dc=fr : 
connection=30 : 20010620100352Z : 48 : 48 : cn=Manager,dc=exemple,dc=fr : 
connection=45 : 20010621071617Z : 2 : 2 : cn=Manager,dc=exemple,dc=fr : 
connection=46 : 20010614123338Z : 7 : 7 : cn=Manager,dc=exemple,dc=fr : 
connection=47 : 20010621071617Z : 3 : 3 : cn=Manager,dc=exemple,dc=fr : 
currentconnections=22
totalconnections=13270
dtablesize=1024
writewaiters=0
readwaiters=0
opsinitiated=38279
opscompleted=38278
entriessent=7238
bytessent=5462889
currenttime=20010621093944Z
starttime=20010613073813Z
nbackends=1

Migration Tools

http://www.padl.com/tools.html
MigrationTools-38 -- 21 mai 2001 , 12 ko (.tar.gz)

Documentation

Pages de manuel


Christophe Merlet
redfox@redfoxcenter.org
©Tous droits réservés
21 juin 2001