1 / 41

Introduction à LDAP

Licence Pro Avril 2003. Introduction à LDAP. Yves Durand , Avril 03. Annuaires LDAP : plan. Qu’est-ce que c’est un annuaire Protocole de LDAP Modèle d’information Modèle de nommage Partition & duplication Sécurité Modèle fonctionnel Conception d’un modèle de nommage

nevaeh
Download Presentation

Introduction à LDAP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Licence Pro Avril 2003 Introduction à LDAP Yves Durand , Avril 03 Yves Durand

  2. Annuaires LDAP : plan • Qu’est-ce que c’est un annuaire • Protocole de LDAP • Modèle d’information • Modèle de nommage • Partition & duplication • Sécurité • Modèle fonctionnel • Conception d’un modèle de nommage • Solutions / vulnérabilités / exemples Yves Durand

  3. Qu’est-ce qu’un annuaire • Répertoire en ligne, dynamique • Possibilité de faire des recherches • Contrôle d’accès à l’information Ce n’est pas: • approprié à de fréquentes écritures • destiné à manipuler des données volumineuses • un substitut à un serveur FTP, un système de fichiers,... Yves Durand

  4. Exemple typique d’annuaire (1) ldap.company.com Serveur d’infrastructure [ ex passerelle mail ] passwords Serveur d’infrastructure [ ex auth. Accès externes] Pages blanches Entreprise (web) Serveur d’application [ ex paye ] Yves Durand

  5. MTA Mailbox virtuelles Solution Postfix+courierIMAP+LDAP Exemple typique d’annuaire (2) Serveur d’infrastructure [ ex passerelle mail ] <smtp, <pop3, <imap, ldap> <smtp> MUA (mail user agent) administration ldap.company.com Yves Durand

  6. Annuaires Performance ~140 req/sec (**) Ratio Read/write1000<r<10000 Extensibilité Distribution AAA cablé Protocole standard : LDAP Database Performance ~n*100 xAct/s (*) Auth/ etc. à gérer langage “standard”: SQL Annuaires versus databases (*) Source : Howes/Smith/Good 1999 Yves Durand

  7. Facettes de LDAP LDAP définit : • le protocole -- comment accéder à l’information contenue dans l’annuaire, • un modèle d’information -- le type d’information contenu dans l’annuaire, • un modèle de nommage -- comment l’information est organisée et référencée, • un modèle fonctionnel -- comment on accède à l’information, • un modèle de sécurité -- comment données et accès sont protégés, • un modèle de duplication -- comment la base est répartie entre serveurs, • des API -- pour développer des applications clientes, • LDIF -- un format d’échange de données. Yves Durand

  8. Protocole (1) • Communication client/serveur • Normalisée (LDAPv3, RFC2251) • Communication serveur/serveur • Referral défini, replication en cours (LDUP) • Messages LDAP encapsulés dans des trames TCP/IP • [pas la seule solution, ex. UDP] • Pas en ASCII mais en Lightweight Basic Encoding Rules: LBER • Le Serveur écoute sur le port 389 (par défaut) / 636 • Le protocole nécessite une connection : bind Yves Durand

  9. bind status requête Réponse 1 Réponse 2 résultat unbind Protocole (2): client-serveur Yves Durand

  10. country must c may description may searchguide organization must o may businessCategory may postalAddress organizationalUnit must ou may businessCategory may registeredAddress person must cn,sn may description Modèle de nommage / modèle d’information c=fr o=ventes ou=aspirateurs cn=maurice_duplantier Yves Durand

  11. Modèle d’information (1) • Kescekeuçé ? • Un jeu de règles qui détermine ce qui peut être stocké dans le répertoire • Verification avant stockage d’informations • Un jeu de règles qui contrôle l’exploitation de l’information • Règles de comparaison • Pas les règles d’accès Yves Durand

  12. Modèle d’information (2) • schéma • Décrit les classes d’objets • Structurelles • Auxiliaires • abstraites • Décrit les types d’attributs qui sont rattachés • user • operational Yves Durand

  13. Modèle d’information (3) • Classes d’objets Les classes d’objets modélisent des objets réels ou abstraits en les caractérisant par une liste d’attributs optionnels ou obligatoires. Une classe d’objet est définie par : • Un nom, qui l’identifie • Un OID, qui l’identifie également • Des attributs obligatoires • Des attributs optionnels • Un type (structurel, auxiliaire ou abstrait) • Exemples de classes d’objet : • une organisation (o), • ses départements (ou), • son personnel (organizationalPerson), • ses imprimantes (device), • ses groupes de travail (groupofnames). Yves Durand

  14. Modèle d’information (4) Core.schema objectclass ( 2.5.6.0 NAME 'top' ABSTRACT MUST objectClass ) top • Les classes d’objets forment une hierarchie, au sommet de laquelle on trouve l’objet top • Chaque classe d’objet hérite des attributs de la classe père organizationalUnit person objectclass ( 2.5.6.6 NAME 'person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) organizationalPerson Yves Durand

  15. OID Modèle d’information (5) • Exemple de classe d’objet ( 2.5.6.7 NAME 'organizationalPerson' SUP person STRUCTURAL MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) ) Yves Durand

  16. Object instance example dn: uid=tlippert, ou=Development, dc=structure-net, dc=de objectclass: organizationalperson cn: Thomas Lippert sn: Lippert l: Hamburg postalcode: 21033 streetadress: billwiese 22 telephonenumber: 040-7654321 facsmiletelephonenumber: 040-7654321 Yves Durand

  17. Le modèle de nommage (1) • Organisation des entrées : structure logique arborescente, le directory information tree (DIT) • Chaque objet est une instance d’objet • Chaque entrée est identifiée par un nom, le DN=distinguished name • Le “suffix” définit l’espace de nommage dont le serveur a la gestion • Un noeud de l’arbre (entrée de l’annuaire) est appelé DSE (directory service entry) • Sommet de l’arbre: BaseDN ou rootDSE racine de l’arbre Yves Durand

  18. dc=gazu, dc=com ou=direction ou=marktg ou=lab cn=adeline_durand cn=maurice_duplantier Le modèle de nommage (2) Racine de l’annuaire dn:dc=domaine,dc=com objectClass:top dn:ou=direction,dc=gazu,dc=com objectClass:organizationalUnit ou:direction dn:cn=maurice_duplantier,ou=lab,dc=gazu,dc=com objectClass:organizationalPerson objectClass:person title:larbin cn:maurice_duplantier sn:maurice userPassword:{md5}$3$zw4kD19KJ0h telephoneNumber:047676713 RDN Yves Durand

  19. C FR O CNR-Grenoble OU Basson OU piano OU class-Mr-Marand CN Denis_Marand OU class-Mme-Violette CN Claudie_Martin CN Mauricette_duplantier CN Claudie_Martin Le modèle de nommage: alias & referral • permettent à une entrée de l’annuaire de pointer vers une autre entrée du même (alias) ou d’un autre(referral) annuaire. • L’attribut aliasObjectName de l’objet alias a pour valeur le DN de l’entrée pointée. dn: cn=Claudie_Martin, ou=class-Mr_marand, ou=Basson, o=CNR-Grenoble, c=FR objectclass: alias objectclass: aliasObject aliasedObjectName: cn=Claudie_Martin, ou=class-Mr_marand, ou=Basson, o=CNR-Grenoble, c=FR cn: John Doe Yves Durand

  20. Redirection: Referral URL Yves Durand

  21. Modèle de nommage: referral dn: dc=univ-nancy2,dc=fr objectClass: top objectClass: domain dc: univ-nancy2 dn: ou=Pers,dc=univ-nancy2,dc=fr ou: Pers objectClass: referral objectClass: extensibleObject ref: ldap://ldap.univ-nancy2.fr:392/ou=Pers,dc=univ-nancy2,dc=fr dn: ou=Etudiants,dc=univ-nancy2,dc=fr ou: Etudiants objectClass: referral objectClass: extensibleObject ref: ldap://ldap.etudiant.univ-nancy2.fr:392/ou=Etudiants,dc=univ-nancy2,dc=fr Yves Durand

  22. Loi des partitions Tous les objets d’une partition doivent partager un ancêtre commun, et cet ancêtre doit appartenir à la partition O O Yves Durand

  23. Duplication: replication • Le modèle de duplication (replication service) définit comment dupliquer l’annuaire sur plusieurs serveurs. • Pas encore standard, mais est proposé par la plupart des serveurs. • L’IETF prépare le protocole LDUP. Master slapd slave slapd Yves Durand

  24. truc.ldif /var/lib/ldap/*.dbb Implémentation dans openldap ldap2ldif /usr/sbin/slapd ldapmodify include /etc/openldap/slapd.conf /usr/share/openldap/core.schema Yves Durand

  25. modèle de sécurité • Le modèle de sécurité décrit le moyen de protéger les données de l’annuaire des accès non autorisés. • La sécurité se fait à plusieurs niveaux : • par l’authentification pour se connecter au service (phase de bind) • par un modèle de contrôle d’accès aux données (les acl) – non standard - • par le chiffrement des transactions entre clients et serveurs ou entre serveurs. Yves Durand

  26. modèle de sécurité (2) • par l’authentification pour se connecter au service (phase de bind) • Anonyme ou RootDN • Mot de passe en clair ou SSL/TLS (eg certificats SSL) • Mécanisme extérieur : SASL Yves Durand

  27. modèle de sécurité (3) • par un modèle de contrôle d’accès aux données (les acl) – non standard – <target> <permission> <bind rule> <target> : point d’entrée de l’annuaire auquel s’applique la règle <permission> : permet ou refuse un type d’accès (lecture, écriture...) <bind rule> : identifie le bindDN utilisé en connexion Yves Durand

  28. modèle de sécurité (4) • par le chiffrement des transactions entre clients et serveurs ou entre serveurs. • LDAPv3 supporte le chiffrement des transactions (entre clients et serveurs ou entre serveurs) via l’utilisation de SSL ( ldaps ) ou de son successeur, TLS ( startTLS extended operation ). • SSL ou TLS servent également pour l’authentification par certificats : • permet au client de prouver son identité au serveur et, en retour, à celui- ci d’en faire de même vis à vis du client. Yves Durand

  29. vulnérabilités • Déni de service • Codes BER semi-valides, requete malformées => freeze • Mesures compensatoires • Firewall • Opérations signées • Buffer overflow • Attaquant récupère les privilèges système, ou privilège de la database • Mesures compensatoires • Tourner ldap en chroot Yves Durand

  30. Modèle fonctionnel Ldapsearch, outils web, API • Interrogation • Search • compare • Modification • Add • Modify • Rename • delete • Connection • Bind • Unbind • Abandon Ldapmodify, GQ,… * Yves Durand

  31. Requête (1) • LDAP ne fournit pas d’opération de lecture d’entrée. • Pour connaître le contenu d’une entrée, il faut écrire une requête qui pointe sur cette entrée. Une requête est composée de 8 paramètres : • base object l’endroit de l’arbre où doit commencer la recherche • scope la profondeur de la recherche • derefAliases si on suit les liens ou pas • size limit nombre de réponses limite • time limit temps maxi alloué pour la recherche • attrOnly renvoie ou pas la valeur des attributs en plus de leur type • search filter le filtre de recherche • list of attributes la liste des attributs Yves Durand

  32. Requête (3) : format des filtres • (<operator>(<search operation>)(<search operation>)...)) • Ex : (&(objectclass=inetOrgPerson)(!(mail=*))) • Toutes les entrées de type utilisateur sans adresse mail • : Exemples de filtres de recherche • (cn=Laurent Mirtain) égalité Nom vaut "Laurent Mirtain" • (cn=*Mart*) sous-chaîne Nom contient "Mart" • (cn~=martin) approximation Nom sonne comme "martin" • (employeenumber>=100) comparaison Numéro supérieur à 100 • (sn=*) existence Tous les noms propres • (&(sn=Mirtain)(l=sophia)) ET Nom vaut "Mirtain" ET localisation vaut Sophia • (|(ou=sophia)(ou=rocquencourt)) OU ou vaut sophia ou rocquencourt • (!(tel=*)) NON Toutes les entrées sans attribut téléphone Yves Durand

  33. Requête (2) Yves Durand

  34. URLS LDAP syntaxe : ldap[ s]://< hostname>:< port>/< base_ dn>?< attributes>?< scope>?< filter> <base_ dn> : DN de l’entrée qui est le point de départ de la recherche <attributes> : les attributs que l’on veut consulter <scope> : la profondeur de recherche dans le DIT à partir du <base_ dn> - base : s’arrête au niveau courant (par défaut) - one : descend d’un niveau - sub : parcourt tous les sous- niveaux <filter> : filtre de recherche, par défaut (objectClass=*) Yves Durand

  35. url ldap depuis ie Yves Durand

  36. Conception du modèle • Définir son système d’information: quelles applis, quelle capacités, quelle topologie en  avec l’espace de nommage • Directory peut être plat, ou branché par organisations • Choix des RDN pour designer les personnes. • cn significatif, • cn abstrait (event. Avec un alias) • uid abstrait, unique&non ambigu • Recommendation IETF : email Yves Durand

  37. Serveurs Openldap Slapd (u Michigan) Netscape directory server IBM LDAP MS Active Directory !! Clients GQ Web browsers Clients mail Ldapsearch Cygsoft LDAP browser Qques solutions Yves Durand

  38. DIT ? Directory information tree OID ? Object IDentifier CN ? Common name SN ? LDIF Format d’encodage des données DN & RDN ? [relative] distinguished name LBER Lightweight Basic Encoding Rules RTFM ? Lisez le manuel !! J Acronymes Yves Durand

  39. Ce qu’il faut retenir • A quoi cela sert • Différences avec une database • Modèle d’objets et modèle de nommage • Se retenir de re-inventer des schémas (oid etc.) • Se rappeller que ça existe ! Yves Durand

  40. Références bibliographiques • “Understanding and Deploying LDAP directory Services” Howes/Smith/Good, MacMillan tech. Publishing • Une bible… • http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/LDAP.html • Lisible & utile • Les RFC • Understanding LDAP. - IBM téléchargeable a partir de http://tux.iut2.upmf-grenoble.fr/~bonnaud/LP/reseaux/2002/reseaux.html Yves Durand

  41. TP • Lancement/configuration d’un annuaire • Utilisation d’un outil client en consultation (GQ) • Modification d’une base existante. Yves Durand

More Related