version imprimable

Commentaires

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
[email protected] #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
[email protected] #showmount −a serveurfichiers
All mount points on serveurfichiers :
serveurfichiers :/home
[email protected] #su − ogluck
[email protected] # ls
. .. toto titi
[email protected] #cd /home/ogluck
[email protected] # 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

Documents pareils