11
Installation et Configuration de Open Ldap Présentation rapide Une base LDAP est une base de données où les informations sont enregistrées de manière hiérarchique sous forme d’arbre et non sous forme tabulaire. Une base LDAP est optimisée pour la lecture d’un nombre important de petits enregistrements et convient donc parfaitement pour stocker des annuaires ou des profils utilisateurs. Le système LDAP utilise des schémas (/etc/ldap/schema) pour décrire des objets. Chaque objet contient plusieurs attributs (obligatoire ou facultatifs). Et chaque objet peut hériter des attributs d’un autre objet. Exemple : L’objet « person » a snme attributs : snmonName, surname,.. L’objet fils « organizationalPerson » dérivé de l’objet « person » ajoute les attributs : title, PostalAddress,... Les objets et les attributs sont normalisés pour assurer les échanges entre les logiciels. Il est possible de modifier un schéma en rajoutant des attributs à un objet (déconseillé) ou en créant un nouvel objet (mieux), mais le mieux est de faire valider cette modification par l’IANA. Chaque donnée enregistrée dans la base est identifiée par son DN (Distinguished Name). Ce DN est snparable au chemin snplet d’un fichier. Exemple : dc=esp,dc=sn Pour ajouter ou modifier des données dans la base, il est possible d’utiliser le format LDIF. Installation Paquets à installer : # apt-get ldap-utils libldap-2-3.0 libldap2 libnss-ldap libpam- ldap libsasl2-modules-ldap php5-ldap Ce qui installera en fait : # apt-get install slapd ldap-utils Écran (Titre en rouge) Message Réponse Configuration de slapd Enter your DNS domain esp.sn (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

openldap

Embed Size (px)

Citation preview

Page 1: openldap

Installation et Configuration de Open Ldap

Présentation rapide

Une base LDAP est une base de données où les informations sont enregistrées de manière hiérarchique sous forme d’arbre et non sous forme tabulaire.Une base LDAP est optimisée pour la lecture d’un nombre important de petits enregistrements et convient donc parfaitement pour stocker des annuaires ou des profils utilisateurs.Le système LDAP utilise des schémas (/etc/ldap/schema) pour décrire des objets.Chaque objet contient plusieurs attributs (obligatoire ou facultatifs). Et chaque objet peut hériter des attributs d’un autre objet. Exemple :   L’objet « person » a snme attributs : snmonName, surname,..   L’objet fils « organizationalPerson » dérivé de l’objet « person » ajoute les attributs : title, PostalAddress,...Les objets et les attributs sont normalisés pour assurer les échanges entre les logiciels.Il est possible de modifier un schéma en rajoutant des attributs à un objet (déconseillé) ou en créant un nouvel objet (mieux), mais le mieux est de faire valider cette modification par l’IANA.Chaque donnée enregistrée dans la base est identifiée par son DN (Distinguished Name). Ce DN est snparable au chemin snplet d’un fichier. Exemple : dc=esp,dc=snPour ajouter ou modifier des données dans la base, il est possible d’utiliser le format LDIF.

InstallationPaquets à installer :# apt-get ldap-utils libldap-2-3.0 libldap2 libnss-ldap libpam-ldaplibsasl2-modules-ldap php5-ldapCe qui installera en fait :# apt-get install slapd ldap-utilsÉcran (Titre en rouge) Message RéponseConfiguration de slapd Enter your DNS domain esp.sn

Enter the name of organisation

esp.sn

Admin password xxxxAllow LDAPv2 protocol Oui *

Configuration

Le fichier de configuration est :/etc/ldap/slapd.confLa ligne suivante permet d’autoriser l’utilisation de la norme V2 de LDAP.allow bind_v2La ligne suivante donne la racine de la base LDAP :suffix "dc=esp,dc=sn"La ligne suivante qu’il faut ajouter manuellement donne le login de l’administrateur (admin avec le rappel de la racine). Cette ligne et la suivante sont obligatoires pour avoir un accès root sur la base depuis un programme externe (ex : PHP)

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 2: openldap

rootdn "cn=admin,dc=esp ,dc=sn"La ligne suivante qu’il faut ajouter manuellement donne le mot de passe en clair :rootpw adminPour plus de sécurité, il est préférable de générer un mot de passe crypté en utilisant la snmande :# slappasswdNew password:Re-enter new password:{SSHA}5y67xJ/t7esuGKUD7TQPcgykd8xiYMO2Ensuite, il faut copier la chaîne cryptée à la place du mot de passe en clairParamétrage de l’accès en écriture de la base. Il faut indiquer le bon login et la racine de la base :access to attribute=userPassword       by dn="cn=admin,dc=esp,dc=sn" write       by anonymous auth       by self write       by * noneParamétrage de l’accès en lecture seule de la base. Il faut indiquer le bon login et la racine de la base :access to *       by dn="cn=admin,dc=esp,dc=sn" write       by * read

Démarrage du serveur (slapd)Le serveur slapd se démarre d’une manière classique avec la commande :# /etc/init.d/slapd restart

Le format de fichier LDIFCe format de fichier est utilisé pour faire des imports / exports entre plusieurs bases ou pour modifier ou ajouter des données dans une base.ATTENTION : Il est obligatoire de coder les données en UTF-8. Si lors de l’importation une erreur est rencontrée, celle-ci est abandonnée à l’endroit où elle en était.

Fichier LDIF pour ajouter des enregistrements

Voici la structure d’un fichier LDIFdn: <distinguished name    objectClass: <object class    objectClass: <object class    ...    <attribute type:<attribute value    <attribute type:<attribute value    ...Voici un exemple de fichier LDIF (AjoutRacine.ldif) pour créer la racine de l’arbre LDAP :dn: dc=esp,dc=snobjectClass: dcObjectobjectClass: organizationo: espdc: esp

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 3: openldap

snmande pour ajouter la racine :ldapadd -x -D "cn=admin,dc=esp,dc=sn" -w admin -f racine.ldif

snmande pour ajouter une unité organisationelle dn: ou=direction,dc=esp,dc=snobjectclass: organizationalUnit

ou: direction

Voici un exemple de fichier LDIF (kaneFiche.ldif) pour créer une nouvelle fiche :dn: uid=kane,ou=direction,dc=esp,dc=snobjectclass: accountobjectclass: posixAccountuid: kaneuserPassword: passeruidNumber: 1001gidNumber: 1001loginShell: /bin/bashhomeDirectory: /home/kanecn: Ibrahima kanesnmande pour ajouter la fiche :ldapadd -x -D "cn=admin,dc=esp,dc=sn" -w admin -f kaneFiche.ldifFichier LDIF pour modifier des enregistrementsLes snmandes de modification ont la syntaxe suivante :  dn: distinguished name   changetype  {{TYPE}}    change operation identifier   list of attributes...   ...  -   change operation identifier   list of attributes   ...TYPE peu avoir l’une des valeurs suivantes :   add (ajout d’une entrée),   delete (suppression),   modrdn (modification du RDN),   modify (modification : add, replace, delete d’un attribut)

Commande pour rechercher des enregistrementsRechercher les enregistrements contenant un attribut objectclass (donc tous) depuis la racine :ldapsearch -x -b "dc=esp,dc=sn" "objectclass=*"Rechercher les enregistrements contenant un attribut cn dans la branche direction :ldapsearch -x -b "o=direction,dc=esp,dc=sn" "cn=*"Rechercher les enregistrements dont l’attribut dc se termine par ka depuis la racine :ldapsearch -x -b "dc=esp,dc=sn" "dc=*ka"

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 4: openldap

Sauvegarde et Restauration d’une base de données LDAPLa commande suivante permet de générer un fichier .LDIF contenant la base snplète :slapcat -l DumpLDAP.ldif -b "dc=esp,dc=sn"

utilitaires graphiquesLDAP Browser est un programme en Java, permettant de consulter et de modifier une base LDAP : http://www-unix.mcs.anl.gov/ gawor/ldap/

PhpldapadminInstallation

Vous devez installer les paquets php5-ldap phpldapadmin.

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

Attention, le login est : "cn=Manager,dc=esp,dc=sn".

Exemples de scripts PHPExemple de script PHP pour se connecter au serveur LDAP$server="localhost";$port="389";$dn="dc=esp,dc=sn";$rootdn="cn=admin,$dn";$rootpw="admin";

$ds=ldap_connect($server,$port); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);$r=ldap_bind($ds,$rootdn,$rootpw)         or die ("Impossible de se connecter au serveur ! \n");echo "Authentification sur le serveur OpenLDAP -> OK \n\n";Exemple de script PHP pour rechercher des enregistrements$sr=ldap_search($ds,$dn,"(objectclass=*)");if ($sr) {        $info=ldap_get_entries($ds,$sr);        echo $info["count"]." enregistrements dans OpenLDAP \n";        for ($i=0;$i<=$info["count"];$i++) {                echo "$i - ".$info[$i]["dn"]." \n";        }}

Liste partielle des attributs de la classe « organization »

Attribut DescriptionbusinessCategory Activité professionnelle d’une entreprise ou d’une personnec Code du pays en deux lettres (respectant le standard ISO 3166)cn Nom de l’objet (snmon name)

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 5: openldap

Attribut Descriptiondescription Description de l’objetdistinguishedName Nom distingué (utilisé par d’autres attributs par héritage)facsimileTelephoneNumber

Numéro de fax

givenName Prénom de la personnehouseIdentifier Identifiant d’un batimentinitials Initiales d’une personneinternationalSDNNumber Numéro ISDNl localité de l’objet (géographique)member Distinguished Name des membresname Nom (utilisé par d’autres attributs par héritage)o Nom de l’organisationobjectClass Classe d’objetsou Unité organisationnelle (branche de l’organisation)owner Nom du propriétaire de l’objetpostalAddress Adresse postale (sans le code postal)postalCode Code postalpostalOfficeBox Boîte aux lettres (postale)

presentationAddressAdresse réseau de la présentation de l’objet (généralement une URL vers la présentation en ligne)

protocolInformationAttribut snplémentaire à presentationAddress pour définir le protocole à utiliser

registeredAddress Adresse postale pour des envois de courriers resnmandés et de colisseeAlso DN d’objets snplémentairesserialNumber Numéro de série de l’objetsn Nom de famille de la personne (surname)st Etat ou région (state)streetAddress Nom de la rue et assimiilé (boulevard, ...)telephoneNumber Numéro de téléphonetitle Titre de la personne (différent de fonction)uid Identifiant unique de l’objetuserPassword Mot de passe de l’utilisateur

Liste partielle des attributs de la classe « inetOrgPerson »

Nom Sémantique Mono Obl Lecture Utilisationcn nom(s)

snplet(s) (d’usage) sans accent

O RI Ordre : Nom, Prénom. Attention : pas d’accent pour simplifier les recherches. Voir aussi displayName. Exemple : "Bugale

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 6: openldap

Nom Sémantique Mono Obl Lecture UtilisationJerome"

displayNamenom snplet avec accents

Version accentuée de la valeur principale de cn. Exemple : "Bugalé Jérôme"

employeeTypetype de personnel

D ? RI ? Définir les grandes familles ?

facsimileTelephoneNumber

Numéro de fax

RI Format E 123 (cf Références)

givenName Prénom M D RI idem sn. Exemple : "Jérôme"l localité de l’objet (géographique)

labeledURIPage personnelle

RI

mailadresse mel canonique

M RI ?

mobile numéro de téléphone mobile

RI Format E 123 (cf Références)

o Nom de l’organisation

ouUnité organisationnelle (branche de l’organisation)

postalAddressAdresse postale

RI Adresse snplète. Attention au format ("$" séparateur, voir RFC2256)

postalCode Code postal

preferredLanguagelangue préférée

M RI cf RFC2068

sn Nom O RI

Contient le nom d’usage. Il est possible d’ajouter le nom de famille (nom patronymique) en seconde valeur. Tout caractère diacritique. Première lettre en majuscule. Voir aussi cn. Exemple : "Bugalé".

st Etat ou région (state)telephoneNumber numéro de

téléphone fixe

RI Format E 123 (cf Références)

title titre RI Responsabilité ; président, directeur, ... (cf Harpège ?). Code ou intitulé snplet ?

uididentifiant unique

M D R utilisé snme rdn, contenu indifférent mais aussi court que possible

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 7: openldap

Nom Sémantique Mono Obl Lecture Utilisation

userCertificatecertificat X509

A ?

Problème rencontréSuite à une coupure brutale du serveur, le serveur ldap n’est pas reparti. Voici le message que vous pouvez recevoir :# slapd -d 1bdb_db_open: dbenv_open(/var/lib/ldap)bdb(dc=esp,dc=sn): operation not permitted during recoverybdb_db_open: db_open(/var/lib/ldap) failed: Invalid argument (22)backend_startup: bi_db_open failed! (22)bdb_db_destroy: close failed: Invalid argument (22)slapd stopped.En fait, c’était la base ldap qui ést corrompue et pour régler ce problème, il faut ré-indexée avec ces snmandes :# /etc/init.d/slapd stop# slapindex# /etc/init.d/slapd start Utiliser votre serveur LDAPMaintenant que votre serveur est pret et démarré vous pouvez :

Authentifier vos utilisateurs dans l' annuaire snme expliqué dans la documentation LDAPClientAuthentication

Authentifier vos utilisateurs via une applications web Utiliser l'annuaire snme 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,

InstallationVous devez installer les paquets php5-ldap phpldapadmin. Et on y accède via http://www.esp.sn/phpldapadmin/

Réplication des données LDAPLe service LDAP peut vite devenir un service hautement critique dans votre système d'information : tout dépend (ou peut dépendre) de LDAP :

Authentification Autorisation Mail ...

IntroductionAvec OpenLDAP 2.2 , la réplication est basée sur une communication maitre-esclave. ATTENTION Vous devez vous rappeler que les modifications devraient toujours être faites sur le maitre ! Si vous modifiez un esclave, les modifications seront perdues dès la synchronisation suivante :/

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)

Page 8: openldap

Le maitreSur le maitre, 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.esp.sn 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.esp.sn:389 binddn="cn=Manager,dc=esp,dc=sn" bindmethod=simple credentials=secretreplogfile /var/lib/ldap/replogIl 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=esp,dc=snupdateref ldap://ldap-1.esp.snRedémarrez votre serveur LDAP (l'esclave).

(mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL)