version imprimable
Transcription
version imprimable
Client/Serveur protocoles internet Informations utilisateur Fabien Rico ([email protected]) Olivier Glück Univ. Claude Bernard Lyon 1 séance 3 c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 1 / 56 Introduction Centralisation des données utilisateurs Pourquoi ? ◮ ◮ ◮ Pour permettre à tous les utilisateurs d’un site de partager les machines. Pour gérer finement les droits. Car c’est le seul moyen de partager des données en gardant un peu de protections. En quoi consistent les données ? ◮ ◮ ◮ ◮ Au moins les données d’authentification. Les données système (identifiant système, répertoire personnel,. . .) Les groupes. Les données personnelles (adresse, téléphone,. . .) Quel est le rôle des logiciels ◮ ◮ ◮ Distribuer les informations. Vérifier le login/mot de passe. Assurer l’ensemble de l’authentification. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 2 / 56 Nis/SMB Nis NIS : un annuaire répliqué NIS : Network Information System ◮ ◮ ◮ introduit par SUN en 1985 (Yellow Pages (yp) à l’origine) n’est pas un standard de l’Internet mais est largement utilisé une base de données distribuée qui permet le partage d’informations système (/etc/passwd, /etc/hosts, . . .) Méthode utilisée sous unix ◮ ◮ ◮ Un serveur centralisé distribue les informations aux clients. Le serveur distribue les informations qui proviennent de ses fichiers systèmes. Conserve l’organisation des fichiers unix. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 3 / 56 Nis/SMB Nis NIS : un exemple courant ogluck@serveurnis #grep ogluck /etc/passwd ogluck :x :1001:1001:,,,:/ home/ogluck:/bin/bash Client NFS/NIS Serveur NIS /home/ogluck uid =1001 gid=1001 hosts groups passwd . .. toto titi root@client #showmount −a serveurfichiers All mount points on serveurfichiers : serveurfichiers :/home root@client #su − ogluck ogluck@client # ls . .. toto titi ogluck@serveurfichiers #cd /home/ogluck ogluck@serveurfichiers # l . .. toto titi c O.Glück & F.Rico (U.C.B.L.) Client/Serveur Serveur NFS /home/rico séance 3 4 / 56 Nis/SMB Nis NIS : architecture Architecture : découpage en domaines modèle Client/Serveur au dessus des SUN-RPC un domaine NIS contient ◮ ◮ un serveur NIS maı̂tre qui maintient les ”maps” (informations contenues dans la base) zéro, un ou plusieurs serveurs NIS esclaves : ⋆ ⋆ ◮ permet de décharger le serveur principal et d’être plus résistant aux pannes le maı̂tre réplique ses informations vers les serveurs secondaires des clients NIS qui peuvent interroger le serveurs maı̂tre ou les secondaires Seul le maı̂tre est capable de modifier les maps Pourquoi c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 5 / 56 Nis/SMB Nis NIS : du coté du serveur Les maps sont stockées sur le serveur dans /var/yp/nom-de-domaine Quand le fichier source d’une map est modifié (sur le serveur), il faut régénérer la map associée et éventuellement propager les modifications aux serveurs NIS esclaves Chaque map stocke des couples clé/valeur host .byname /etc/hosts host .byaddr cd /var/yp make passwd.byname /etc/passwd Diffusion aux esclaves passwd.byuid c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 6 / 56 Nis/SMB Nis Commandes du serveur Un serveur NIS maı̂tre doit faire tourner ◮ ◮ ◮ ◮ ypserv pour répondre aux requêtes de ses clients NIS ypbind s’il est lui-même un client NIS (pas obligatoire) ypxfrd pour répondre aux demandes de mise à jour des maps de la part des serveurs esclaves rpc.yppasswdd pour assurer les demandes de changement de mots de passe (yppasswd) Un serveur NIS esclave doit faire tourner ◮ ◮ ypserv pour répondre aux requêtes de ses clients NIS ypbind s’il est lui-même un client NIS (pas obligatoire) Pour installer les NIS (mise en place de la base...) ◮ ◮ ypinit −m sur le serveur NIS maı̂tre ypinit −s master−server sur serveur esclave c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 7 / 56 Nis/SMB Nis Commandes du client La commande ypcat permet de voir le contenu d’une map depuis n’importe quel client Un client NIS ◮ doit réaliser un binding pour interroger le serveur NIS ⋆ ⋆ ◮ il faut donner le nom de domaine et préciser la méthode de localisation du/des serveurs : broadcast (le premier qui répond !) ou désignation explicite d’un serveur nom de domaine positionné par la commande domainname ou dans le fichier /etc/defaultdomain ou en renseignant la variable NISDOMAIN dans /etc /... doit faire tourner le démon ypbind qui recherche régulièrement le serveur NIS approprié ⋆ ypbind −broadcast ⋆ ypset nom−serveur−NIS ; ypbind ⋆ ypwhich permet d’afficher le nom du serveur NIS c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 8 / 56 Nis/SMB Nis Configurer le client pour configurer le client de manière définitive, on utilise le fichier /etc/yp.conf r o o t @ 1 9 2 . 1 6 8 . 6 9 . 2# c a t / e t c / yp . c o n f #p l u s i e u r s e n t r e e s de c e t y p e s o n t p o s s i b l e s domain g r i d 5 0 0 0 s e r v e r 1 9 2 . 1 6 8 . 9 0 . 2 #domain g r i d 5 0 0 0 b r o a d c a s t Il faut ◮ ◮ ≪ prévenir ≫ le système d’utiliser les nis : il est possible de signaler cela dans les fichiers concernés /etc/passwd, /etc/hosts... il est possible d’utiliser le Name Service Switch. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 9 / 56 Nis/SMB Nis NSS : Name Service Switch Pour plus de portabilité les fonctions interrogeant les bases de données systèmes sont capables d’interroger plusieurs types de sources. Apparu avec la libc6 , vient de SUN/Solaris. La configuration se fait via le fichier /etc/nsswitch. conf Permet d’interroger : ◮ ◮ ◮ Les fichiers ; les annuaires (NIS/ldap) ; les domaines SMB. . . Concerne : ◮ ◮ ◮ les informations utilisateurs (passwd, group, shadow, aliases ) ; les informations sur le réseaux ( ethers, hosts, networks, netgroup, services ) ; ... Il faut configurer séparément : ◮ ◮ l’accès aux informations (le client NIS) ; L’utilisation des informations (NSS). c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 10 / 56 Nis/SMB Nis Évolution de NIS Défauts des NIS ◮ ◮ ◮ pas d’authentification des clients NIS : il suffit de connaı̂tre le nom de domaine pour interroger le serveur et connaı̂tre le contenu de ses maps ; les maps sont transmises en totalité même en cas de faible modification de leurs contenus pas adapté aux WAN (broadcast...) ; manque de souplesses sur les informations partagées (unix). NIS+ un successeur éphémère sans succès qui a été officiellement abandonné au profit de LDAP. Cependant, les NIS sont encore largement utilisés ◮ ◮ Efficace ; Simple. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 11 / 56 Nis/SMB SMB Domaine Windows Pour assurer l’authentification centralisée, windows utilise la notion de domaine. Proche de la notion de domaine NIS : ◮ ◮ ◮ ◮ Partage des informations utilisateurs. Pl est possible d’y avoir plusieurs domaines sur un réseau. Le domaine est contrôlé par un Contrôleur Principale de Domaine (PDC). Le PDC peut être assisté de Contrôleurs de Domaines simples (BDC). Il y a qqs différences : ◮ ◮ C’est le contrôleur qui assure l’authentification. Les machines doivent être membre du domaine pour accéder aux informations : ⋆ ⋆ ⋆ elles doivent avoir un compte sur le serveur ; les mots de passe ne sont pas distribués ; le client envoie le mot de passe lors de l’authentification. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 12 / 56 Nis/SMB SMB Configuration du serveur samba Samba peut être PDC ou DC PDC : ◮ Un contrôleur de domaine principal est un serveur : ⋆ ⋆ ⋆ ◮ qui s’enregistre comme PDC dans NetBios ; qui fournit des services de NETLOGON ; qui propose un partage [netlogon] (répertoire qui contient les informations associées). Généralement il propose aussi : ⋆ ⋆ Des services wins Un partage [ profiles ] de profils itinérants c O.Glück & F.Rico (U.C.B.L.) [ global ] ; p a s s d b bac k e nd = l dapsam : l d a p : / / m aste r−l d a p . p a s s d b bac k e nd = tdbsam o s l e v e l = 33 p r e f e r r e d master = auto domain m a s t e r = y e s l o c a l master = ye s security = user domain l o g o n s = y e s l o g o n p a t h = \\%N\ p r o f i l e s \%U l ogon d r i v e = H: l o g o n home = \\ h o m e s e r v e r \%U\ w i n p r o f i l e l o g o n s c r i p t = l o g o n . cmd [ netlogon ] p a t h = / v a r / l i b / samba / n e t l o g o n read onl y = ye s [ profiles ] p a t h = / v a r / l i b / samba / p r o f i l e s r e a d o n l y = no c r e a t e mask = 0600 d i r e c t o r y mask = 0700 Client/Serveur séance 3 13 / 56 Nis/SMB SMB Configuration du serveur samba Domain Controler (Simple) : ◮ Un ⋆ ⋆ ⋆ ◮ de domaine qui s’enregistre comme DC dans NetBios ; qui fournit des services de NETLOGON ; qui propose un partage [netlogon] (répertoire qui contient les informations associées). simple est un serveur : [ global ] p a s s d b bac k e nd = l dapsam : l d a p : / / s l a v e −l d a p . que nya . o r g domain m a s t e r = no domain l o g o n s = y e s l o g o n p a t h = \\%N\ p r o f i l e s \%U l ogon d r i v e = H: l o g o n home = \\ h o m e s e r v e r \%U\ w i n p r o f i l e l o g o n s c r i p t = l o g o n . cmd ldap . . . ... [ netlogon ] p a t h = / v a r / l i b / samba / n e t l o g o n read onl y = ye s Qui dispose d’un moyen : ⋆ ⋆ ⋆ ◮ contrôleur de répliquer les informations système (NIS ?) ; de répliquer la base de mot de passe SMB (par exemple tout est sous ldap qui assure la réplication) de synchroniser le partage [netlogon] De plus il faut sans doute équilibrer la charge pour : ⋆ le partage [ profile ] ⋆ les fichiers (partage [homes], ...) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 14 / 56 Nis/SMB SMB Configuration du client Client windows ◮ ◮ Se configure via l’interface de choix du nom de la machine Il faut créer un compte du domaine pour la machine : ⋆ ◮ demande une authentification en tant qu’administrateur ; Permet une authentification via le domaine ou locale : ⋆ UNIV−LYON1.FR\fabien.rico ⋆ CRILAME301\administrateur Client linux ◮ ◮ Généralement, les informations systèmes sont obtenues autrement (NIS, ldap) Possible d’utiliser le network service switch et/ou pam c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 15 / 56 Nis/SMB SMB Active Directory Remonte à Windows 2000 (en 1999). Principalement, utilisation d’un annuaire LDAP (Lightweight Directory Access Protocol) pour stocker les données. ◮ Grâce à la hiérarchie de LDAP : ⋆ ⋆ ⋆ Plusieurs niveaux : domaine≃arbre, forêt=ensemble d’arbre,... Délégation de la gestion ; Relation d’approbation. En plus, utilisation d’un DNS pour le nommage. ◮ impose un DNS dynamique. Le serveur LDAP est interne à Active directory : ◮ compatibilité difficile (un seul sens). c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 16 / 56 Ldap Problématique résolue par LDAP Existence de plusieurs bases de données : ◮ ◮ ◮ ◮ ◮ annuaire interne du personnel (téléphone, bureau,. . .) ; annuaire externe (téléphone accueil, services, . . .) ; base de gestion des ressources humaines (adresse, num secu,. . .) ; information système (unix, windows,. . .) ; droits (lecture, modifications,...). Problèmes : ◮ ◮ de mise à jour ; de synchronisation. Ldap permet de centraliser les informations. Il lui faut donc : ◮ ◮ ◮ ◮ ◮ souplesse dans le format de l’information mais possibilité d’imposer le schéma ; authentifications ; droits de niveaux multiples (hiérarchie) ; lecture efficace ; interface multiple. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 17 / 56 Ldap Le concept d’annuaire Annuaire informatique ◮ ◮ service permettant d’accéder à des informations relatives à des personnes, des machines (ou autres ressources) de manière organisée objectif : maintenir de façon cohérente et contrôlée une grande quantité de données Système de gestion de base de données (SGBD) ◮ ◮ ◮ le schéma des données stockées est défini pour résoudre un certain problème ; il est connu des applis les objets sont généralement complexes, stockés dans différentes tables ayant des relations entre elles un langage spécifique permet la lecture et mise à jour des tables (requêtes SQL, ...) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 18 / 56 Ldap Le concept d’annuaire Différences annuaire/SGBD - dans un annuaire : Données plus simples : ◮ Pas de liens de dépendances entre les objets stockés ◮ Schéma standardisé. Pas de données induites. ⇒ moins de problèmes de synchronisation lors de la modifications. ◮ ⇒ les applications de l’annuaire n’ont pas besoin de connaı̂tre la structure interne des données stockées ; Un annuaire est principalement consulté en lecture ◮ ◮ Optimisé pour cela. Les objets peuvent être distribués sur plusieurs annuaires. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 19 / 56 Ldap L’annuaire LDAP LDAP : Lightweight Directory Access Protocol Héritier de l’annuaire X500 (proposée par l’ISO) ◮ ◮ standard conçu par les opérateurs télécom pour interconnecter leurs annuaires téléphoniques X500 adapté à Internet ⇒ LDAP (même modèle de schéma, ...) Proposé à l’IETF en 1995 ◮ standard d’annuaire sur TCP/IP ⋆ ◮ ◮ le standard ne concerne pas le contrôle d’accès aux données de l’annuaire Version 3 actuellement [RFC 2251] Aussi : RFC 2252 à 2256, RFC 2829 à 2830, RFC 2849 c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 20 / 56 Ldap L’annuaire LDAP Objectifs : Fournir aux utilisateurs des informations fiables, facilement accessibles. Permettre aux utilisateurs de mettre à jour eux-mêmes leurs informations personnelles. Rendre les informations accessibles de façon contrôlée faciliter le nomadisme des utilisateurs. Éviter la redondance d’informations : un seul annuaire pour l’ensemble des services. Faciliter la gestion (administration) des postes de travail, des équipements réseau. Sans remettre en cause les applications existantes ! c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 21 / 56 Ldap L’annuaire LDAP Un modèle d’information : type des informations contenues dans l’annuaire. Un protocole d’accès : comment accéder aux informations contenues dans l’annuaire. Un modèle de nommage : comment l’information est organisée et référencée. Un modèle fonctionnel : une syntaxe des requêtes permettant l’interrogation de la base et la mise à jour des informations. Un modèle de duplication : comment la base est répartie sur différents serveurs (tolérance aux pannes, répartition de la charge du serveur, ...). Un modèle de sécurité : comment contrôler l’accès aux données ainsi que leur transfert. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 22 / 56 Ldap Le protocole LDAP Il définit Les échanges de la connexion Client/Serveur ◮ ◮ ◮ commandes de connexion au service : bind (authentification), unbind, abandon (le client abandonne la requête en cours) commandes de mises à jour des entrées de l’annuaire : add, delete, modifiy, rename commandes d’interrogation : recherche (search) et comparaison (compare) d’entrées Le format de transport des données ◮ ◮ pas de l’ASCII comme SMTP, HTTP, ... encodage LBER : Lightweight Basic Encoding Rules. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 23 / 56 Ldap Le protocole LDAP Il définit aussi les échanges de la connexion Serveur/Serveur ◮ ◮ la réplication (replication service), en cours de normalisation (LDUP : LDAP Duplication Protocol) créer des liens entre différents annuaires (referral service) - défini dans LDAPv3 les mécanismes de sécurité ◮ ◮ méthodes d’authentification pour se connecter à l’annuaire (qui peut se connecter à l’annuaire et comment) mécanismes de règles d’accès aux données (une fois connecté, à quoi peut-on accéder et avec quels droits) mécanismes de chiffrement des transactions c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 24 / 56 Ldap Le protocole LDAP LDAPv3 est conçu pour être extensible sans avoir à modifier la norme Opération spéciale Extended Operation pour ajouter des opérations possibles par exemple : ◮ ◮ ◮ Cancel, Password Modify, StartTLS. permet l’ajout de paramètres associés à une opération les mécanismes de sécurité sont définis dans une couche séparée : ◮ permet des méthodes d’authentification externes c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 25 / 56 Ldap Se connecter à une base LDAP Des éditeurs ◮ ◮ GQ sous linux LDAP Browser/Editor (sous Windows) De nombreuse librairies ◮ ◮ ◮ C, java perl, python php Des modules de logiciels standart ◮ ◮ ◮ ◮ mod auth (pour assurer l’authentification apache) pam ldap nss ldap (authentification et infos système unix) openvpn−auth−ldap ... c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 26 / 56 Ldap Le modèle d’information Un annuaire est constitué de schémas LDAP qui vont déterminer les objets utilisables dans l’annuaire Un schéma LDAP ◮ ◮ ◮ ◮ définit une liste des classes d’objets, les types des attributs et leur syntaxe répondant aux normes de l’Object Management Group (OMG) standardisé (IANA) : pour l’interopérabilité entre logiciels permet l’interfaçage avec les applications (Samba, ...) o g l u c k @ l i m a : / e t c / l d a p $ l s / e t c / l d a p / schema / README c o r e . schema i n e t o r g p e r s o n . schema k rb5−kdc . schema n i s . schema c o r b a . schema c o s i n e . schema j a v a . schema m i s c . schema o p e n l d a p . schema c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 27 / 56 Ldap Le modèle d’information Un attribut est défini par ◮ ◮ un nom, un identifiant unique (OID), mono/multi-valué, une syntaxe et des règles de comparaison (matching rules), une valeur (format+taille limite), modifiable ou non Les classes d’objets modélisent ◮ ◮ des objets réels : un compte Unix (posixAccount), une organisation (o), un département (ou), un personnel (organizationPerson), une imprimante (device), ... ou abstraits : l’objet père de tous les autres (top), ... Une classe d’objet est définie par ◮ ◮ un nom, un OID, des attributs obligatoires, des attributs optionnels, un type (structurel, auxiliaire ou abstrait) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 28 / 56 Ldap Le modèle d’information c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 29 / 56 Ldap Le modèle d’information c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 30 / 56 Ldap Le modèle d’information Les classes d’objets forment une structure arborescente : tout en haut, l’objet top top person organisationnalUnit organisationalPerson inetOrgPerson Chaque objet hérite des attributs de l’objet dont il est le fils Plus d’infos : ◮ ◮ http://www.it.ufl.edu/projects/directory/ldap-schema/ http://ldap.akbkhome.com/ c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 31 / 56 Ldap Le modèle d’information Exemple (Classe inetOrgPerson) L’objet person a comme attributs : sn, cn, userPassword, telephoneNumber, seeAlso, description L’objet organizationalPerson a en plus comme attribut : title, postalAddress, ou, . . . L’objet inetOrgPerson a en plus : displayName, employeeNumber, homePhone, mail, jpegPhoto, userSMIMECertificate, . . . top person organisationnalUnit organisationalPerson inetOrgPerson c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 32 / 56 Ldap Le modèle de nommage Il définit comment sont organisées les entrées (=objets) de l’annuaire et comment elles sont référencées Structure arborescente contenant deux catégories d’objets ◮ les conteneurs (une zone de rangement) : départ d’une nouvelle branche ⋆ ⋆ ◮ peuvent contenir des conteneurs ou des feuilles généralement, une sous-organisation de l’organisation (département, zone géographique, ...) les feuilles (véritables données) : terminaison des branches (généralement les machines, les utilisateurs, ...) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 33 / 56 Ldap Le modèle de nommage Structure logique hiérarchique : le DIT (Directory Information Tree) Une entrée est identifiée par un nom unique : le DN (Distinguish Name) RDN - Relative Distinguish Name dn : dc=chezmoi,dc=fr ou=Hosts ou=People ou=Group cn=Manager uid=rico uid=rico,ou=People,dc=chezmoi,dc=fr c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 34 / 56 Ldap Le modèle de nommage c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 35 / 56 Ldap Le format LDIF LDAP Data Interchange Format (LDIF) Standard de représentation des entrées sous format texte ⇒ permet de ◮ ◮ faire des imports/exports de la base ou d’une partie créer, ajouter, modifier,... un grand nombre d’entrées de façon automatisée Exemple (un compte POSIX) dn : u i d=r i c o , ou=Peo ple , dc=chezmo i , dc=f r uid : r i co l o g i n S h e l l : / b i n / bash cn : F a b i e n R i c o uidNumber : 1507 o bjectCl as s : account gidNumber : 504 objectClass : posixAccount h o m e D i r e c t o r y : /home/ r i c o o b j e c t C l a s s : top g e c o s : F a b ien Rico o b j e c t C l a s s : shado wAcco unt u s e r P a s s w o r d : : e2NyeXB0 . . . shado wLastChang e : 12556 shadowMax : 99999 c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 36 / 56 Ldap Le modèle fonctionnel Il décrit le moyen d’accéder aux données (syntaxe des requêtes) et les opérations que l’on peut leur appliquer Rappel des opérations de consultation/mise à jour opérations de mise à jour des entrées de l’annuaire : ◮ ◮ add, delete, modify, rename opérations d’interrogation : recherche (search) et comparaison (compare) d’entrées Proche du fonctionnement d’une base de donnée ◮ ◮ filtre (≃ WHERE) liste des attributs (≃ SELECT) Mais recherche dans un arbre : ◮ ◮ base object point de départ de la recherche dans l’arbre. scope profondeur de la recherche. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 37 / 56 Ldap Le modèle de duplication Il définit comment dupliquer l’annuaire sur plusieurs serveurs ◮ ◮ améliorer le temps de réponse être tolérant aux pannes Deux types de serveurs LDAP ◮ ◮ supplier serveur (maı̂tre) : fournit les données consumer server (esclave) : reçoit les données du maı̂tre Possibilité de partionner l’annuaire (éclatement sur plusieurs serveurs) ◮ liens virtuels entre les différentes partitions (referral service) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 38 / 56 Ldap Le modèle de sécurité Authentification pour se connecter au service ◮ ◮ ◮ Anonymous authentification, Root DN/passwd authentification (administrateur), User DN/passwd Contrôle de l’accès aux données ◮ ◮ ◮ droits d’accès aux données (fonctions de l’utilisateur authentifié) : lecture d’une valeur (read), modification (write), recherche (search), comparaison (compare), ... search : les données peuvent être une clé de recherche read : permet de lire les données issues d’une recherche (par ex. search sur cn mais read seulement sur Phone Number) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 39 / 56 Ldap Le modèle de sécurité règles définies sous forme d’ACLs (Access Control List) au niveau du sommet, d’un sous-arbre ou d’une entrée Qu’est-ce qu’une ACL Chiffrement des transactions (LDAP over SSL, opération startTLS) ◮ ◮ ◮ Parfois nécessaire (Active Directory n’autorise la modification que via un canal chiffré). Le serveur doit avoir un certificat X.509 (certificat signé par une autorité reconnue). C’est la cause de nombreuses erreurs de configuration. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 40 / 56 Ldap Mettre en place un annuaire LDAP Il faut bien choisir les schémas ◮ ◮ Quelles informations veut on stocker dans l’annuaire ? ⇒ choix des objets contenant les attributs désirés Quelles sont les applications qui vont utiliser l’annuaire ? ⋆ ⋆ ⋆ ⋆ Authentification des utilisateurs sous Unix, sous windows (samba). Gestion des groupes d’utilisateurs. Listes de mail dynamiques (sympa). Carnets d’adresses Netscape, ... Il faut réfléchir à l’organisation du DIT impacts sur la performance, les droits d’accès, ... Puis dans un second temps ◮ ◮ gestion centralisée sur un seul serveur ? nombre de serveurs redondants ? Emplacement ? c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 41 / 56 Ldap OpenLDAP Logiciel LDAP du domaine public Le démon slapd ◮ traite les requêtes LDAP Le démon slurpd ◮ permet la réplication Des utilitaires ◮ ldapadd, ldapdelete, ldapmodify, ldapmodrdn, ldappasswd, ldapsearch. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 42 / 56 Ldap Le fichier /etc/??ldap/slapd.conf Configuration du serveur ldap définition des schémas utilisés include /etc/ldap/schema/inetorgperson.schema définition du backend (moteur de base de données utilisé pour ranger les données) database ldbm (ldbm par défaut, sinon sql, ...) définition de la base de l’annuaire et de l’administrateur ◮ ◮ ◮ le suffixe : racine de l’arbre suffix "dc=chezmoi,dc=fr" l’administrateur et son mot de passe rootdn cn=Manager,dc=chezmoi,dc=fr rootpw toto le répertoire où la base est stockée directory "/var/lib/ldap" c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 43 / 56 Ldap Le fichier /etc/ ? ?ldap/slapd.conf définitions des ACLs (man slapd.access) # # Format d ’ un ACL : # a c c e s s t o <what> [ by <who> <a c c e s s > [ <c o n t r o l > ] ]+ # <what >: ∗ , un dn , un f i l t r e LDAP, une l i s t e d ’ a t t r i b u t s # <who> : ∗ , dn , anonymous , u s e r s ( q u e l q u ’ un a u t h e n t i f i e ) # <a c c e s s > : none , auth , compare , s e a r c h , r e a d , w r i t e , . # <c o n t r o l > : s t o p , c o n t i n u e , b r e a k ( i m b r i c a t i o n d e s r e g # Par d e f a u t : a c c e s s t o a t t r s=u s e r P a s s w o r d by dn="" w r i t e # l ’ admin by anonymous a u t h # d r o i t de l e c t u r e u n i q u e m by s e l f w r i t e # l e p r o p r i e t a i r e by ∗ none # The admin dn h a s f u l l w r i t e a c c e s s a c c e s s to ∗ by dn="" w r i t e by ∗ read c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 44 / 56 Ldap Le fichier /etc/ ? ?ldap/slapd.conf définition des réplicats ◮ sur le serveur maı̂tre # f i c h i e r dans l e q u e l s l a p d s t o c k e l e s m o d i f i c a t i o n s r e p l o g f i l e / var / l i b / ldap/ replog # d e f i n i t i o n d ’ un r e p l i c a t r e p l i c a h o s t=l d a p . c h e z m o i . f r : 3 8 9 bindmetho d = . . . . . . ◮ sur un esclave # l e dn a u t o r i s e a f a i r e l a m i s e a j o u r u p d a t e d n "cn= slurpd ,dc =..." # URL du m a i t r e u p d a t e r e f l d a p : / / master −l d a p . c h e z m o i . f r : 3 8 9 ... man slapd.conf c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 45 / 56 Ldap Le fichier /etc/??ldap/ldap.conf Configure les option par défaut des client ldap man ldap.conf pour un utilisateur, peut aussi être fait dans ˜/. ldaprc , ou par des variables d’environnements Ne pas le confondre avec /etc/ldap. conf (clien nss-ldap) Exemple (configuration des clients) # s erveur par defaut HOST l o c a l h o s t . l o c a l d o m a i n # b a s e de r e c h e r c h e BASE dc=chezmo i , dc= f r # u t i l i s a t e u r a u t i l i s e r par defaut BINDDN u i d=r i c o , ou=Peo ple , dc=chezmo i , dc= f r # a u t o r i t e de c e r t i f i c a t a u t i l i s e r ( v a l i d e l e c e r t i f i c a t d TLS CACERT / e t c / o p e n l d a p / c a c e r t s / c a c e r t . pem c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 46 / 56 Ldap Gestion des entrées de l’annuaire Gérer/utiliser un fichier ldif. Utiliser ldapadd, ldapmodify, ... Utiliser un client ldap. Utiliser des scripts (perl, python, VBA, powershell ?) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 47 / 56 Ldap Authentification Unix via LDAP Configurer le système pour lire les information utilisateur ◮ ◮ Name Service Switch : sur ldap : ⋆ /etc/nsswitch. conf pour choisir l’ordre de lecture ⋆ /etc/( libnss −)ldap.conf pour permettre à NSS d’utiliser ldap Cela peut suffire si le serveur ldap est autoriser à distribuer les mots de passe (comme NIS) Configurer l’agent d’authentification pour faire un bind. ◮ PAM : Pluggable Authentification Modules ⋆ /etc/pam.d/login pour lui dire de le faire ⋆ /etc/(pam−)ldap.conf pour permettre à PAM d’utiliser ldap Permet la modification via la commande passwd. Attention, à la sécurité : ◮ ◮ le mot de passe circule, il faut utiliser SSL ou startTLS. il ne faut jamais mettre le mot de passe du rootDN dans un fichier. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 48 / 56 Ldap Authentification Samba via LDAP Dans /etc/samba/smb.conf [ global ] # p a r a m e t r a g e d e s c o n n e x i o n s LDAP ldap ser ver = loc alh os t l d a p p o r t = 389 l d a p s u f f i x = "dc= chezmoi ,dc=fr" l d a p admin dn = "cn= Manager ,dc= chezmoi ,dc=fr" ldap s s l = yes Il existe des scripts (perl) qui gère la créations des comptes, les groupes, ... Pour fonctionner il faut à ces script le mot de passe du rootDN c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 49 / 56 SSO Authentification centralisée L’utilisation d’annuaire permet de centraliser l’authentification. Avec votre mot de passe vous pouvez : vous connecter sur les ordinateurs gérés par le cri (qqsoit le système) ; vous connecter sur le vpn (géré par le cri) ; accéder au réseau wifi ; accéder à l’intranet (géré par le service web du cri) ; regarder vos notes sur tomuss (géré par T. Excofier et E. Coquery) ; consulter les pages spiral (géré par icap) ; accéder aux revues en ligne (géré par ? ? ?) s’authentifier sur le serveur apache d’un cours ... N’y a-t’il pas un problème c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 50 / 56 SSO Single Sign On Principe du passeport Une autorité est capable de vous authentifier. Elle est reconnue par plusieurs services. L’autorité ◮ ◮ ◮ reçoit les informations de connexion ; vous accrédite auprès du service ; en générale ne demande qu’une fois les informations. Exemple : Authentification dans le réseaux. CAS pour le web. Fédérations d’identité : Shibboleth ou Athens c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 51 / 56 SSO Exemple le CAS Central Authentication Service Développé à Yale. Permet à plusieurs sites web de demander l’authentification à un unique serveur. Pour l’authentification : ◮ ◮ ◮ ◮ le serveur web détourne le client sur le serveur CAS ; le serveur CAS vérifie les données et renvoie le client avec un ticket (valable une fois) ; le serveur web vérifie le ticket et accepte le client ; le serveur dépose un cookie pour le client de manière à conserver l’authentification pour une prochaine fois (durée limitée). Répendu dans le domaine universitaire ◮ ◮ intégré à u-portal ; nombreuses bibliothèques (php, java, ASP, .net, . . .) c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 52 / 56 SSO Exemple client phpCAS initialiser le client phpCAS::client Authentifier l’utilisateur : ◮ ◮ phpCAS::forceAuthentication phpCAS::checkAuthentication Déloguer phpCAS : :logout() ; c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 53 / 56 SSO Exemple Exemple (Authentification simple) i n c l u d e o n c e ( ’CAS. php’ ) ; phpCAS : : c l i e n t ( CAS VERSION 2 0 , ’cas.univ - lyon1.fr ’ , 4 4 3 , ’/ cas/’ ) ; phpCAS : : s e t N o C a s S e r v e r V a l i d a t i o n ( ) ; i f ( i s s e t ( $ GET [ ’logout ’ ] ) ) { phpCAS : : l o g o u t ( ) ; } i f ( i s s e t ( $ GET [ ’login ’ ] ) ) { phpCAS : : f o r c e A u t h e n t i c a t i o n ( ) ; } $ a u t h = phpCAS : : c h e c k A u t h e n t i c a t i o n ( ) ; i f ( $auth ) { echo "L’ utilisateur est " . phpCAS : : g e t U s e r ( ) . "<Br >" ; echo "<a href=’? logout ’>se d& eacute ; connecter </a><Br >" ; } else { echo "L’ utilisateur n’est pas authentifi& eacute ;<Br >" ; echo "<a href=’? login ’>se connecter </a><Br >" ; } c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 54 / 56 SSO Problèmes Mot de passe unique : ◮ ◮ une seule vérification, accès total. Mais il faut prendre en considération le comportement des utilisateurs. De plus seule solution à certains problèmes : ◮ ◮ ◮ décentralisation des informations, accès distant, partage entre entités. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 55 / 56 SSO Conclusion Partage des informations utilisateurs ◮ ◮ sur un réseau local, à distance. Attention aux trous de sécurité ◮ ◮ ◮ mot de passe unique et protocoles multiples, dépendances et décentralisation, simplification. c O.Glück & F.Rico (U.C.B.L.) Client/Serveur séance 3 56 / 56