Selon les tags présents sur cette page, celle-ci n'a pas été vérifiée pour une des versions LTS supportées d'Ubuntu.
Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



Un serveur d'annuaire avec OpenLDAP

Ce document est la traduction du HowTo présenté à l'adresse https://wiki.ubuntu.com/OpenLDAPServer.

Il a été traduit par Sp4rKy puis remis (un peu) en page et déplacé par bastnic. Il a été mis a jour par Kenny432 pour Ubuntu 8.10 .

LDAP signifie Lightweight Directory Access Protocol, c'est une version simplifiée du protocol X500. Vous pourrez trouver une présentation détaillée sur Wikipédia .

Pour expliquer rapidement, toutes les informations sont stockées dans un arbre. Vous devez déterminer l'arborescence des annuaires ou, autrement dit, des informations de l'arbre (Directory Information Tree) . Nous allons commencer ici avec un exemple simple contenant seulement 2 nœuds en plus de la racine :

  • Le nœud "People" , où seront stockés vos utilisateurs
  • Le nœud "Groups" , où seront enregistrés vos groupes

Vous devez commencer par déterminer ce que sera la racine de votre LDAP. Par défaut, votre arbre peut être déterminé à partir de votre domaine Internet. Si votre domaine est exemple.com , votre racine sera dc=exemple,dc=com .

Dans le cas où le nom de domaine déclaré sur la machine n'est pas celui que l'on souhaite utiliser, il faut modifier le nom dans les fichiers "/etc/hostname" et "/etc/hosts" et redémarrer le serveur AVANT l'installation des paquets. Dans le cas contraire, il risque d'y avoir une contradiction entre le nom choisi à l'installation (ou demandé par dpkg-reconfigure) et celui récupéré automatiquement par l'installation du paquet (dc=lenomdedomaine,dc=extenion). je n'ai pas réussi à modifer cela dans la base LDAP. solutionné partout désinstaller, renommer puis réinstaller.

Avant tout, installons le daemon du server ldap (slapd) sur le serveur. Pour cela, il suffit d'installer les paquets slapd ldap-utils.

On vous demandera votre mot de passe administrateur et votre nom de domaine. Renseignez-les. Parfois on ne vous demandera que le mot de passe et on ne vous demandera rien concernant le nom de domaine car l'installeur récupère directement le nom de domaine de la machine. Si vous souhaitez renseigner ces champs faites :

sudo dpkg-reconfigure slapd

Voici brièvement les réponses attendues pour une installation standard :

1.Passer la configuration d'OpenLDAP ? non
2.Nom de domaine ? example.com
3.Nom de votre société ? masociété 
4.Quelle base de donnée ? hdb 
5.Voulez-vous que la base de donnée soit effacée lorsque slapd est purgé ? oui 
6.Supprimer les anciennes bases de données ? oui
7.Mot de passe administrateur ? VotreMotDePasse
8.Confirmer ce mot de passe ? VotreMotDePasse
9.Authoriser le protocol LDAPv2 ? non

Conseil

Sur Feisty, la commande précédente demande des informations comme le mot de passe de l'administrateur ldap ou le nom de domaine. Cependant, sur ma machine, le fichier de configuration n'est pas modifié en conséquence. La suite est donc à effectuer tout de même.

Mais seulement quelques changements seront effectués sur la configuration par défaut. Tout le reste va se jouer dans le fichier /etc/ldap/slapd.conf.

Nous allons commencer par enregistrer le mot de passe administrateur (de LDAP) dans le fichier de configuration en éditant ce fichier. Ce serait une folie de vouloir enregistrer votre mot de passe en clair donc nous allons générer votre mot de passe en chiffré avec la commande :

sudo slappasswd

On obtient quelque chose dans ce genre :

$ sudo slappasswd
New password:
Re-enter password:
{SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m

Cet exemple montre la définition de votre mot de passe en utilisant le mot de passe "secret". (D'après l'implémentation de SSHA, votre résultat peut varier) .

Depuis Ubuntu Linux Intrepid Ibex, l'installation de slapd ne crée pas de fichier slapd.conf, tous les éléments de configuration sont désormais dans le dossier /etc/ldap/slapd.d/. Pour ceux qui rencontrent ce problème voici une solution ( en anglais ) : OpenLDAP ubuntu 8.10

Pour Intrepid Ibex et supérieur

Éditez le fichier /etc/ldap/ldap.conf avec les droits administrateurs.

S'il n'est pas déjà présent, créez ce fichier avec les droits administrateurs. On renseigne alors les informations suivantes :

ldap_version 3
URI ldap://localhost:389
SIZELIMIT 0
TIMELIMIT 0
DEREF never
BASE dc=example, dc=com

Toutes les informations relatives a slapd.d (dossier remplaçant slapd.conf) sont maintenant inscrites au moment où on lance la commande dpkg-reconfigure slapd

Pour Hardy Heron et inférieur

Maintenant éditez le fichier /etc/ldap/slapd.conf avec les droits administrateurs.

Il va falloir ajouter à la main quelques paramètres très importants. Notamment ces quatre lignes là, à mettre après la section "database" donc vers les lignes 70 et quelques.

suffix          "dc=example,dc=com"
directory       "/var/lib/ldap"
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m

Si jamais vous voulez activer le support de la version précédente d'LDAP, décommentez l'option (ligne 8) :

allow bind_v2

L' annuaire a été créé lors de l'installation, il est maintenant temps de le remplir. Il sera rempli avec des entrées classiques qui seront compatibles avec la structure d'un annuaire (pour un annuaire partagé), avec les comptes classiques (pour une authentification Web par exemple) et avec les comptes Unix (posix).

L'annuaire LDAP peut être rempli par des fichiers ldif (ldif signifie ldap directory interchange format). Générez ce fichier d'exemple (init.ldif) :

Note d'un internaute : ici, la phrase "Générez ce fichier d'exemple" n'est pas claire. On ne comprend pas ce qu'on nous demande de faire véritablement. Créer un fichier n'importe où dans lequel on met ce fichier d'exemple ?
Effectivement il faut créer le fichier init.ldif, qu'on utilisera plus bas
$ vim ~/init.ldif

Contenu du fichier :

# fichier de données : ~/init.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organizationalUnit
dc: example
ou: Example Dot Com

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

dn: uid=lionel,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: lionel
sn: Porcheron
givenName: Lionel
cn: Lionel Porcheron
displayName: Lionel Porcheron
uidNumber: 1000
gidNumber: 10000
gecos: Lionel Porcheron
loginShell: /bin/bash
homeDirectory: /home/lionel
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: lionel.porcheron@example.com
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress: 
initials: LP

dn: cn=example,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: example
gidNumber: 10000
displayName: Example group

Dans l'exemple ci-dessus, la structure de l'annuaire, c'est-à-dire un utilisateur et un groupe ont été créés. Dans d'autres exemples vous auriez pu voir le paramètre "objectClass: top" ajouté dans plusieurs entrées, mais c'est le comportement par défaut donc pas besoin de le mettre :)

Maintenant ajoutez vos entrées à LDAP :

  • Arrêtez le daemon :
sudo /etc/init.d/slapd stop
  • Supprimer ce qui a été ajouté automatiquement à l'installation :
sudo rm -rf /var/lib/ldap/*

Ajouter les données :

sudo slapadd -l ~/init.ldif
Si vous rencontrez le message type :
Entry (cn=example,ou=groups,dc=example,dc=com), attribute 'displayName' not allowed
slapadd: dn="cn=example,ou=groups,dc=example,dc=com" (line=46): (65) attribute 'displayName' not allowed

Il faut commenter la ligne 46 comme ceci :

#displayName: Example group

Puis refaire :

sudo rm -rf /var/lib/ldap/*

Donner les droits de lecture aux fichiers de la base de données

sudo chown -R openldap:openldap /var/lib/ldap

N'oublions pas de relancer ldap :

sudo /etc/init.d/slapd start

Nous allons pouvoir vérifier que les données ont été correctement ajoutées avec les outils du paquet ldap-utils. Pour effectuer une recherche dans les annuaires LDAP il vous suffit de faire :

ldapsearch -xLLL -b "dc=example,dc=com" uid=lionel sn givenName cn
dn: uid=lionel,ou=people,dc=example,dc=com
cn: Lionel Porcheron
sn: Porcheron
givenName: Lionel

Une rapide explication :

  • -x désactive l'authentification SASL
  • -LLL empêche l'affichage des informations LDIF
  • -b indique la branche utilisée

NE PAS OUBLIER d'ajouter le user qui doit administrer le service ldap au group openldap à créer lors de l'install du paquet ou bien de donner les bons droits sur les fichiers /etc/ldap/ldap.conf et /var/lib/ldap/*

Maintenant que votre serveur est prêt et démarré vous pouvez :

  • Authentifier vos utilisateurs dans l'annuaire comme expliqué dans la documentation LDAPClientAuthentication
  • Authentifier vos utilisateurs via une applications web
  • Utiliser l'annuaire comme une base de données pour votre client mail
  • Et bien plus encore !!!

De manière plus concrète, il existe des solutions simples à installer et qui vous permettent un excellent accès à votre annuaire, que ce soit en visualisation comme en création/édition.

phpLDAPadmin

Pré-requis
  • Avoir un serveur WEB installé, voir LAMP.
Installation

Vous devez installer les paquets php5-ldap phpldapadmin.

Et on y accède via http://votre_domaine.com/phpldapadmin/

Attention, le login est : "cn=admin,dc=example,dc=com".

Problème : Memory Limit low

Si lorsque vous allez sur l'interface web de phpldapadmin, vous avez cette erreur :

Memory Limit low. Your php memory limit is low - currently 16M

Editer en admin le fichiers php.ini :

 cd /etc/php5/apache2/
 sudo nano php.ini

trouvez la section suivante et changez la valeur memory_limit = 16M en mettant 50M :

 ;;;;;;;;;;;;;;;;;;;
 ; Resource Limits ;
 ;;;;;;;;;;;;;;;;;;;

 max_execution_time = 30     ; Maximum execution time of each script, in seconds
 max_input_time = 60 ; Maximum amount of time each script may spend parsing   request data
 ;max_input_nesting_level = 64 ; Maximum input variable nesting level
 memory_limit = 50M      ; Maximum amount of memory a script may consume (16MB)

Il suffit ensuite de recharger la configuration de apache pour que la modification soit prise en compte :

sudo /etc/init.d/apache2 reload

puis relancer votre serveur ldap :

sudo /etc/init.d/slapd restart

source forum Developpez.com

Le service LDAP peut vite devenir un service hautement critique dans votre system d'information : tout dépend (ou peut dépendre) de LDAP :

  • Authentification
  • Autorisation
  • Mail

Ce serait donc une bonne idée de créer un système redondant. Le mini HOWTO ci-dessous vous permettra de le faire.

Introduction

Avec OpenLDAP 2.2 (sur Breezy et Dapper), la réplication est basée sur une communication maitre-esclave.

ATTENTION

Vous devez vous rappeler que les modifications devraient toujours etre faites sur le maitre ! Si vous modifiez un esclave, les modifications seront perdues dès la synchronisation suivante :/

Le maître

Sur le maître, vous devez modifier la section "base de donnée" du fichier de configuration /etc/ldap/slapd.conf pour ajouter une instruction de réplication. L'exemple suivant montre une replication sur le serveur ldap-2.example.com avec le Manager user et le mot de passe secret. Le fichier de log est l'emplacement où les données seront stockées avant d'etre envoyées sur le(s) serveur(s) esclave(s).

replica uri=ldap://ldap-2.example.com:389 binddn="cn=Manager,dc=example,dc=com" bindmethod=simple 
credentials=secret

replogfile      /var/lib/ldap/replog

Il ne reste plus qu'a redémarrer votre serveur LDAP :)

Le(s) Esclave(s)

Sur le(s) serveur(s) esclave(s) , il vous suffit d'autoriser votre serveur maitre à mettre à jour la base de donnée LDAP. Pour cela ajoutez les lignes suivantes dans votre /etc/ldap/slapd.conf à la section base de données :

updatedn        cn=Manager,dc=example,dc=com
updateref       ldap://ldap-1.example.com

Redémarrez votre serveur LDAP (l'esclave).

  • slapd.1259674495.txt.gz
  • Dernière modification: Le 01/12/2009, 14:34
  • par 213.95.41.13