L'Annuaire LDAP ASR – Master M2 (2007-2008) - Luiz Angelo STEFFENEL - Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 1 Plan de la Présentation Steffenel ● Introduction ● La structure LDAP ● Installation Administration Réseaux et Systèmes Master M2 - 2007-2008 2 Introduction Historique ● Caractéristiques ● Le protocole LDAP ● Exemples ● Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 3 Historique ● Annuaire : ouvrage publié chaque année, donnant la liste de membres d'une profession, des abonnés à un service, etc. ex : Annuaire téléphonique Annuaire éléctronique ● ● ● ● ● ● Steffenel liste d'informations stockés dans un type de base de données organisation hiérarchique mécanismes simples de recherche et de tri selon des critères variables ex : annuaire de l'université Administration Réseaux et Systèmes Master M2 - 2007-2008 4 Historique ● Le service d'annuaire X.500 conçu en 1988 par des opérateurs télécom ● objectif : interconnecter et unifier tout type d'annuaire ● protocole DAP (Directory Access Protocol) ● problème : X.500 basé sur protocoles OSI (!!!) 1993 : version plus légère du protocole DAP adaptée aux réseaux TCP/IP ● ● ● Steffenel LDAP (Lightweight Directory Access Protocol) Administration Réseaux et Systèmes Master M2 - 2007-2008 5 Caractéristiques des Annuaires Électroniques ● Dynamisme – mises à jour simples et quotidiennes – ● ● ● Steffenel les utilisateurs peuvent mettre à jour leurs propres données Souplesse – l'organisation des entrées permet l'indexation avec des critères multiples Sûreté – les annuaires en ligne disposent de mécanismes d'authentification et de règles d'accès – limite la portée des modifications des utilisateurs – réglemente l'interconnexion avec d'autres annuaires Répartition – les annuaires peuvent être utilisés seuls (standalone) ou liés dans une arbre global Administration Réseaux et Systèmes Master M2 - 2007-2008 6 Annuaires vs. Bases de Données ● Steffenel Annuaire ● Base de Données – système léger – système complet – optimisé pour la lecture – optimisation dynamique – organisation en arbre – organisation relationnelle (tabulaire) – services spécifiques pour la recherche d'informations – ensemble complet de services pour la gestion des données – permet la répartition et la coopération entre différents annuaires – généralement centralisé Administration Réseaux et Systèmes Master M2 - 2007-2008 7 Le Protocole LDAP ● ● ● Steffenel Protocole d'accès à un annuaire Norme qui définit l'échange de données entre clients et serveur – modèle d'information – modèle de nommage – modèle fonctionnel (API) – modèle de sécurité (crypto SSL ou TLS, auth. SASL, ...) Définit aussi l'échange de données entre serveurs qui coopèrent – duplication/synchronisation – hiérarchie de serveurs Administration Réseaux et Systèmes Master M2 - 2007-2008 8 Architecture Client/Serveur Client 1. requête Serveur 2. réponse Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 9 Architecture Partage d'Information Serveur Supérieur 3. nouvelle requête Client 1. requête Serveur 2. referral Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 10 Architecture Duplication 1. update request Esclaves 7. 2. referral slurpd Client 3. new request Maître 5. 4. response Steffenel 6. Administration Réseaux et Systèmes Master M2 - 2007-2008 replication log 11 La structure LDAP Modèle d'information ● Modèle de nommage ● Modèle fonctionnel ● Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 12 Le modèle d'information ● Le modèle d'information LDAP définit le type de données qui peuvent être stockés dans l'annuaire LDAP (le schéma) – ● Chaque entrée correspond à un objet (abstrait ou réel) – ● il définit aussi les règles pour comparer les attributs une entrée est composée par plusieurs objets Exemple Type d'attribut cn: uid: telephonenumber: mail: Steffenel valeur de l'attribut Yves Martin ymartin 326000000 ymartin@mail.com Administration Réseaux et Systèmes Master M2 - 2007-2008 13 Le modèle d'information ● ● Steffenel Les types de donnée – binary – données binaires (images, video, fichiers, ...) – boolean – attribut constitué d'un bit (vrai ou faux) – integer – valeur entier – directory string – chaîne de caractères – dn – pointeur vers un objet de l'annuaire (distinguished name) Quelques règles de comparaison – cis (caseIgnoreMatch) – attribut texte non sensible à la casse – ces (caseExactMatch) – attribut texte sensible à la casse – dn (distinguishedName) – compare deux entrées – ... Administration Réseaux et Systèmes Master M2 - 2007-2008 14 Le modèle d'information ● Steffenel Heureusement, il y a une liste d'attributs utilisateurs déjà établie – c – code du pays (en deux lettres) – o – organisation – ou – unité organisationnelle (section, département, ...) – cn – nom de l'objet (common name, nom d'usage) – givenName – prénom – sn – nom de famille – uid – identifiant unique de l'objet – mail – adresse email – ... Administration Réseaux et Systèmes Master M2 - 2007-2008 15 Le modèle d'information ● ● Steffenel Les classes d'objets - possibilité d'établir une structure commune pour les objets – classes abstraites – classes qui peuvent uniquement être hérités – classes structurelles – classes instanciables – classes auxiliaires – classes qui permettent l'ajout d'attributs facultatifs aux classes structurelles Exemple : les attributs sont définis par – un nom unique - un indicateur d'usage – un Object Identifier unique - un format ou limite de taille – une syntaxe et des règles de comparaison Administration Réseaux et Systèmes Master M2 - 2007-2008 16 Le format d'échange de données LDIF ● ● Les données dans LDAP sont stockés dans un format « non texte » Afin de rendre plus facile l'échange de données, LDAP définit un format texte pour l'import/l'export des données – la syntaxe est la suivante : [<id>] dn: <distinguished name> <attribut> : <valeur> <attribut> : <valeur> ... Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 17 Le modèle de nommage ● Les objets LDAP sont classés hiérarchiquement ● Les entrées sont classées dans un arbre FR (C) sociétéA (O) (OU1) (OU2) (CN) ● Steffenel Direction sociétéB Département1 division1 personne1 Département1 division2 personne2 division1 personne1 personne2 Il existe un objet particulier (rootDSE) qui décrit l'arbre Administration Réseaux et Systèmes Master M2 - 2007-2008 18 La localisation des entrées ● ● ● Steffenel Un objet peut être adressé de deux façons : – par son nom rélatif (RDN – Relative Distinguished Name) – par son nom absolu (DN – Distinguished Name) Le nom relatif est composé d'un ou plusieurs paires clé/valeur – un objet ne doit posséder qu'un seul RDN – le RDN doit être un nom unique dans la branche de l'objet – un RDN peut être multivalué (plusieurs paires clé/valeur) Il est important de rendre les attributs d'un RDN obligatoires Administration Réseaux et Systèmes Master M2 - 2007-2008 19 La localisation des entrées ● Le DN contient le RDN d'un objet associé à l'ensemble des noms relatifs des entrées parentes ● Un DN permet de repérer une entrée de manière unique ● Exemple : – Steffenel uid (user id) o (organization) ou (organization unit) cn (common name) mail ... ● DN - uid=steff01,cn=steffenel,o=univ-reims,mail=xxx@xxxx ● RDN - uid=steffe01 Administration Réseaux et Systèmes Master M2 - 2007-2008 20 Le modèle fonctionnel ● Steffenel LDAP proose une API avec des fonctions pour l'accès et la modification des entrées dans la base – Bind/Unbind – connexion/déconnexion d'une session LDAP – Add – ajoute une entrée au répertoire – Delete – supprime une entrée – Rename – modifie le nom d'une entrée – Search – effectue une recherche – Compare – compare les entrées selon des critères – Abandon – abandonne l'opération précédemment envoyé Administration Réseaux et Systèmes Master M2 - 2007-2008 21 Installation Installation sous Debian ● Création d'une base simple ● Clients ● Autres exemples d'utilisation ● Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 22 Installation sous Debian ● Utilisation du serveur OpenLDAP ● Installation des packages Debian apt­get install slapd ldap­utils ● Configuration du serveur – éditer le fichier /etc/ldap/slapd.conf – choisir le système de base de données à utiliser database bdb – Steffenel définir la racine de l'arbre suffix "dc=mondomaine,dc=org" Administration Réseaux et Systèmes Master M2 - 2007-2008 23 Installation sous Debian – créer « l'objet » administrateur et son mot de passe ● – rootdn "cn=admin,dc=mondomaine,dc=org" rootpw secret astuce : utiliser slappasswd pour créer un mot de passe chiffré ● ex: $ slappasswd New password: ******* Re­enter new password: ******* {SSHA}5R8i8cDhTs+UsIEmyYED11AoG64x6MQ4 Steffenel – modifier toute autre ligne « dn » qui définit les droits de l'administrateur de la base – reinitialiser ldap -> /etc/init.d/slapd restart Administration Réseaux et Systèmes Master M2 - 2007-2008 24 Création d'un carnet d'adresses ● ● ● Pour créer une base, il faut définir la structure de la base Nous allons utiliser un fichier texte (ossature.ldif) dans le format LDIF Le fichier LDIF doit définir la racine de l'arbre # D'abord, la racine de la base LDAP dn: dc=mondomaine,dc=org objectClass: top objectClass: dcObject objectClass: organization dc: mondomaine o: mondomaine description: mon carnet d'adresses Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 25 Création d'un carnet d'adresses ● Ensuite, l'arborescence de l'arbre # La structure où je trouve mes contacts dn: ou=contacts,dc=mondomaine,dc=org ou: contacts objectClass: top objectClass: organizationalUnit description: La structure où je trouve mes contacts ● Finalement, l'administrateur #La definition de l'administrateur dn: cn=admin,dc=mondomaine,dc=org objectClass: organizationalRole objectClass: simpleSecurityObject cn: admin description: administrateur LDAP Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 26 Remplir la base de données ● Dans le cas de notre carnet d'adresses, nous allons utiliser les attributs définis par défaut dans le fichier /etc/ldap/slapd.conf include /etc/ldap/schema/xxxx.schema ● Steffenel Nous allons utiliser, par exemple, les champs suivants : – sn – nom de famille (surname) – gn – prénom (given name) – o – organisation – telephoneNumber – postalAddress – postalCode – mail Administration Réseaux et Systèmes Master M2 - 2007-2008 27 Remplir la base de données ● Créer un fichier contacts.ldif dn: cn=Florent Pepin,dc=mondomaine,dc=org objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Florent Pepin gn: Florent sn: Pepin o: Université de Paris XXV telephoneNumber: 0101010101 postalAddress: 10 rue des Pepins postalCode: 75999 mail: fpepin@paris15.fr description: un collègue à Paris Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 28 Rajouter tout à la base ● Procédure « standard » – ldapadd -x -W -D "cn=admin,dc=mondomaine,dc=org" -f fichiers.ldif – rédemarrer la base de données ● – /etc/init.d/slapd restart vérifier les entrées ● ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts – ● ldapsearch -x -b 'dc=mondomaine,dc=org' '(objectclass=*)' – Steffenel liste tous les objets dans la base liste tous les objets appartenant à la branche mondomaine.org Administration Réseaux et Systèmes Master M2 - 2007-2008 29 Rajouter tout à la base - cont ● Problèmes rencontrés : – erreur 49 (invalid credentials) ● – il faut un administrateur enregistré pour pouvoir écrirer solution : modifier temporairement les droits de l'utilisateur « anonymous » dans le fichier /etc/ldap/slapd.conf # The admin dn has full write access, everyone else # can read everything. access to * by dn="cn=admin,dc=angelo,dc=org" write by anonymous write by * read Steffenel Administration Réseaux et Systèmes Master M2 - 2007-2008 30 Rajouter tout à la base - cont ● Steffenel erreur 49 (invalid credentials) – réinitialiser la base /etc/init.d/slapd restart – remplir la base avec les fichiers .ldif – supprimer l'entrée « write » pour l'user anonymous – réinitialiser la base encore une fois /etc/init.d/slapd restart Administration Réseaux et Systèmes Master M2 - 2007-2008 31 Quelques clients LDAP ● ldapsearch – ● gq – ● Steffenel interface php pour naviguer votre messagerie favourite – ● outil linux pour naviguer l'arbre LDAP phpLDAPadmin – ● déjà utilisé pour vérifier la base thunderbird, exchange OpenOffice Administration Réseaux et Systèmes Master M2 - 2007-2008 32 Exemples d'utilisation ● Carnet d'adresses (bien sûr) ● Contrôle du parc informatique (MACs, IPs, etc.) ● Authentification unique dans un réseau Linux+Windows – remplace NIS – à faire avec beaucoup de précaution ● ● Steffenel incompatibilités au niveau des algorithmes de crypto modification des chemins de recherche et des services d'authentification (PAM) – http://www.openldap.org/doc/admin23/quickstart.html – http://home.subnet.at/~max/ldap – http://moduli.net/sysadmin/sarge-ldap-auth-howto.html Administration Réseaux et Systèmes Master M2 - 2007-2008 33