Upload
nevaeh
View
21
Download
1
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
Mars 2002Yves Durand1
Introduction à LDAP
Licence Pro Avril 2003
Yves Durand , Avril 03
Mars 2002Yves Durand2
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
Mars 2002Yves Durand3
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,...
Mars 2002Yves Durand4
Exemple typique d’annuaire (1)
ldap.company.com
Serveur d’application[ ex paye ]
Serveur d’infrastructure[ ex passerelle mail ]
Pages blanchesEntreprise (web)
Serveur d’infrastructure[ ex auth. Accès externes]
passwords
Mars 2002Yves Durand5
Exemple typique d’annuaire (2)
ldap.company.com
Serveur d’infrastructure[ ex passerelle mail ]
MUA (mail user agent)
MTA
Mailbox virtuelles
administration
Solution
Postfix+courierIMAP+LDAP
<smtp>
<smtp, <pop3,<imap, ldap>
Mars 2002Yves Durand6
Annuaires versus databases
• 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
(*) Source : Howes/Smith/Good 1999
Mars 2002Yves Durand7
Facettes de LDAPLDAP 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.
Mars 2002Yves Durand8
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
Mars 2002Yves Durand9
Protocole (2): client-serveur
bindstatus
requêteRéponse 1
Réponse 2
résultat
unbind
Mars 2002Yves Durand10
Modèle de nommage / modèle d’information
c=fr
o=ventes
ou=aspirateurs
cn=maurice_duplantier
countrymust cmay descriptionmay searchguide
organizationmust omay businessCategorymay postalAddress
organizationalUnitmust oumay businessCategorymay registeredAddress
personmust cn,snmay description
Mars 2002Yves Durand11
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
Mars 2002Yves Durand12
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
Mars 2002Yves Durand13
Modèle d’information (3)
• Classes d’objetsLes 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).
Mars 2002Yves Durand14
Modèle d’information (4)
• 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
top
organizationalUnit person
organizationalPerson
Core.schemaobjectclass ( 2.5.6.0 NAME 'top' ABSTRACTMUST objectClass )
objectclass ( 2.5.6.6NAME 'person' SUP top STRUCTURALMUST ( sn $ cn )MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
Mars 2002Yves Durand15
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 ) )
OID
Mars 2002Yves Durand16
Object instance example
dn: uid=tlippert, ou=Development, dc=structure-net, dc=de
objectclass: organizationalpersoncn: Thomas Lippertsn: Lippertl: Hamburgpostalcode: 21033streetadress: billwiese 22telephonenumber: 040-7654321facsmiletelephonenumber: 040-7654321
Mars 2002Yves Durand17
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
Mars 2002Yves Durand18
Le modèle de nommage (2)
dc=gazu, dc=com
ou=direction ou=marktg ou=lab
cn=adeline_durand cn=maurice_duplantier
dn:dc=domaine,dc=comobjectClass:top
dn:ou=direction,dc=gazu,dc=comobjectClass:organizationalUnitou:direction
dn:cn=maurice_duplantier,ou=lab,dc=gazu,dc=comobjectClass:organizationalPersonobjectClass:persontitle:larbincn:maurice_duplantiersn:mauriceuserPassword:{md5}$3$zw4kD19KJ0htelephoneNumber:047676713
Racine de l’annuaire
RDN
Mars 2002Yves Durand19
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
CFR
OCNR-Grenoble
OUBasson
OUpiano
OUclass-Mr-Marand
CNDenis_Marand
CNClaudie_Martin
OUclass-Mme-Violette
CNMauricette_duplantier
CNClaudie_Martin
Mars 2002Yves Durand20
Redirection: Referral C N R
C NC la u d ie_ M a rtin
O Ucla ss-M r-M a ra nd
O UB a sson
C NM a urice tte _ du p lan tier
O Uc la ss-M m e-V io le tte
O Ucla ss-M -Ta rtig n ol
O Up iano
OC N R -G re n o b le
OE co leM u siq u e Eyb e ns
CFR
E ybens
C NA lfre d_ b rend el
O Uclass-M r-ch a sse p ot
O Uh e licon
C NA ris tid e _ Be rg es
O Uc la ss -M m e-M irecou rt
O Utrian g le
OE co leM us iqu e Eyb e ns
CFR
URLURL
Mars 2002Yves Durand21
Modèle de nommage: referral
dn: dc=univ-nancy2,dc=frobjectClass: 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
Mars 2002Yves Durand22
Loi des partitionsTous les objets d’une partition doivent partager un ancêtre commun, et cet ancêtre doit appartenir à la partition
Mars 2002Yves Durand23
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
Mars 2002Yves Durand24
Implémentation dans openldap
/usr/sbin/slapd
/etc/openldap/slapd.conf
/usr/share/openldap/core.schema
include
/var/lib/ldap/*.dbbtruc.ldif
ldapmodify
ldap2ldif
Mars 2002Yves Durand25
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.
Mars 2002Yves Durand26
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
Mars 2002Yves Durand27
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
Mars 2002Yves Durand28
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.
Mars 2002Yves Durand29
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
Mars 2002Yves Durand30
Modèle fonctionnel
• Interrogation– Search– compare
• Modification– Add– Modify– Rename– delete
• Connection– Bind– Unbind– Abandon
Ldapmodify, GQ,…
Ldapsearch, outils web, API
*
Mars 2002Yves Durand31
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
Mars 2002Yves Durand32
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
Mars 2002Yves Durand33
Requête (2)
Mars 2002Yves Durand34
URLS LDAPsyntaxe :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=*)
Mars 2002Yves Durand35
url ldap depuis ie
Mars 2002Yves Durand36
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
Mars 2002Yves Durand37
Qques solutions
• ServeursServeurs• Openldap• Slapd (u Michigan)• Netscape directory
server• IBM LDAP• MS Active Directory !!
• Clients– GQ– Web browsers– Clients mail– Ldapsearch– Cygsoft LDAP browser
Mars 2002Yves Durand38
Acronymes
• DIT ?Directory information tree• OID ?Object IDentifier • CN ?Common name• SN ?
• LDIFFormat d’encodage des
données
• DN & RDN ?[relative] distinguished
name• LBERLightweight Basic Encoding
Rules• RTFM ?Lisez le manuel !!
Mars 2002Yves Durand39
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 !
Mars 2002Yves Durand40
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
Mars 2002Yves Durand41
TP
• Lancement/configuration d’un annuaire• Utilisation d’un outil client en consultation
(GQ)
• Modification d’une base existante.