Вы находитесь на странице: 1из 84

Formation

Administration et scurit

Le logiciel
OpenLDAP
Auteurs :

Clment OUDOT, Raphal OUAZANA et Sbastien BAHLOUL LINAGORA Formation : formation@linagora.com

BY-NC-SA

Licence
Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique 2.0 France

Vous tes libres :

de reproduire, distribuer et communiquer cette cration au public, de modifier cette cration.

Selon les conditions suivantes : Paternit. Vous devez citer le nom de l'auteur original. Pas d'Utilisation Commerciale. Vous n'avez pas le droit d'utiliser cette cration des fins commerciales. Partage des Conditions Initiales l'Identique. Si vous modifiez, transformez ou adaptez cette cration, vous n'avez le droit de distribuer la cration qui en rsulte que sous un contrat identique celui-ci. chaque rutilisation ou distribution, vous devez faire apparatre clairement aux autres les conditions contractuelles de mise disposition de cette cration. Chacune de ces conditions peut tre leve si vous obtenez l'autorisation du titulaire des droits. Ce qui prcde n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies rserves l'usage priv du copiste, courtes citations, parodie...)
BY-NC-SA
2

Pourquoi LINAGORA met ce support sous licence Creative Commons

Volont de contribuer activement l'essor du logiciel libre Promouvoir l'change et favoriser l'mulation communautaire Assurer la prennit de l'industrie logiciel libre et ne comptabiliser que la Valeur Ajoute (le formateur) Partager le savoir et la connaissance une vaste chelle

LINAGORA croit au Libre !

BY-NC-SA

Prsentation du formateur

Parcours du formateur

BY-NC-SA

LINAGORA, premier EOS

Crateur des concepts SS2L (Socit de Services en Logiciels Libres) et TM2L (Tierce Maintenance Logiciel Libre), LINAGORA se dfinit dsormais comme un diteur Orient Service (EOS). LINAGORA propose une Open Source Software Assurance (OSSA) sur 150 logiciels libres :

Prts l'industrialisation, sur une plate-forme unique : le 08000LINUX.com. Avec garantie de service contractuelle : en cas de bug, LINAGORA sengage au rsultat sur des dlais de rsolution. Gestion de la feuille de route du logiciel pour le compte du client et sengage au reversement des dveloppements.

LINAGORA apporte galement son expertise sur toute une gamme de services professionnels et de formations au travers de LINAGORA Formation.

BY-NC-SA

LINAGORA Formation

7 annes d'exprience, au service des technologies libres et Open Source 40 modules de formation rpartis au travers de 7 filires Un cadre agrable, au cur de Paris Deux salles de formation climatises pouvant accueillir jusqu' 10 stagiaires. 2006 : Plus de 150 stages effectus 2006 : Plus de 900 stagiaires Une satisfaction moyenne client de 18/20 Une note moyenne formateur de 16,27/20

BY-NC-SA

Filires de formations
Dveloppement Web

Linux embarqu

Administration et scurit

J2EE OpenSource

Les basiques

Bases de donnes

Bureautique OpenOffice.org
BY-NC-SA
7

Organisation gnrale et planning


09h30 : dbut des cours 10h30 : pause du matin 10h45 : reprise des cours 12h00 : pause djeuner Jour 1 :

Prsentation Installation Configuration Installation

13h00 : reprise des cours 15h00 : pause de l'aprs-midi 15h15 : reprise des cours 17h30 : fin de journe 17h30 : libre discussion avec le formateur

Jour 2 :

Scurit Schma Rplication Performances

BY-NC-SA

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

Historique

Issu du serveur LDAP de l'universit du Michigan, dont drive galement Netscape Directory Server (devenu SUN Directory Server et Fedora Directory Server) Projet initi en 1998 (OpenLDAP v1), avec support LDAPv2 Conforme LDAPv3 en 2000 (OpenLDAP v2) Version stable actuelle : OpenLDAP 2.3 Version 2.4 en valuation, stable courant 2007 3 dveloppeurs principaux :

Howard Chu Pierangelo Masarati Kurt Zeilenga

BY-NC-SA

10

Catgories de logiciels d'annuaires

Annuaires systmes :

Active Directory Lotus Novell eDirectory

Annuaires gnralistes :

OpenLDAP ApacheDS Sun ONE Directory Server Fedora Directory Server

Annuaires de scurit :

Critical Path LiveContent (inJoin) Directory IBM SecureWay

BY-NC-SA

11

Fonctionnalits

Serveur LDAP Open Source Contient :


Serveur indpendant (slapd) et serveur de rplication (slurpd) Bibliothques de connexion (libldap, liblber) Commandes LDAP (ldapsearch, ldapadd, ldapmodify, ldapdelete, ) Commandes de gestion du contenu (slapadd, slapcat, slapindex, ) API (C, C++, TCL, Java)

Supporte :

LDAPv2 et LDAPv3 Rplication complte et diffrentielle Dlgation dauthentification SASL / GSSAPI Internationalisation UTF-8 via Unicode

BY-NC-SA

12

Particularits

Choix de backends :

BerkeleyDB (stockage) LDAP et meta (mandataire) Monitor (supervision) SQL, Perl, Shell (langages de programmation)

Choix d'overlays :

Politique des mots de passe Groupes dynamiques Intgrit rfrentielle Rcriture des requtes la vole

Configuration accessible par LDAP (branche cn=config)

BY-NC-SA

13

Fonctionnement interne
BDB search compare add delete modify modrdn bind unbind abandon extended Intercepteur Librairie BER
BY-NC-SA
Analyse du filtre

DNSRV Contrle du schma HDB LDAP LDBM META PASSWD MONITOR PERL RELAY NULL SHELL SQL
14

Overlays

Liste des backends

back-ldbm :

Historiquement le premier backend de stockage Bas sur une API DBM supportant gdbm (base de donne GNU), ldbm (BerkeleyDB) et mdbm Support de toutes les fonctionnalits historiques : alias, referrals Dveloppement et maintenance stopps Supprim des prochaines versions Backend existant depuis la version 4 des BerkeleyDB Backend transactionnel : une modification ne ncessite que le verrouillage dune page de la base de donnes Support des fonctionnalits rcentes : referrals, VLV, groupes dynamiques Backend stockant des historiques permettant de reconstruire la base en cas de crash. Utilisation de slapcat, slapindex et slapadd chaud

back-bdb :

BY-NC-SA

15

Liste des backends

back-hdb :

Backend driv de back-bdb optimisation du temps dcriture diminution de la redondance dinformations rorganisation de linformation pour une optimisation de la consultation hirarchique Backend permettant la mise en place dun mandataire (proxy) Support de lquivalence entre les attributs Support de la rcriture entre des contextes de nommage diffrents Ne contient pas de donnes Est interrog pour extraire des informations gnrales sur lutilisation du serveur

back-ldap :

back-monitor :

BY-NC-SA

16

Liste des backends

back-meta :

quivalent dun back-ldap multiple : gre lagrgation de plusieurs arbres en un unique Ne gre pas lagrgation dentres Permet de constituer un mta annuaire dit de virtualisation simple (ne permet pas dagrger des sources autres que des serveurs LDAP) Backends permettant dintercepter par des scripts shell / perl / tcl les diffrents appels aux mthodes LDAP Extrmement peu performants Utiliss uniquement pour de la consolidation dinformations (interception des appels de changement de mots de passe, ) Offre une interface LDAP aux bases de donnes Ncessite de configurer l'association des tables et colonnes aux entres et aux attributs
17

back-shell / back-perl / back-tcl :

back-sql :

BY-NC-SA

Fonctionnement du backend BDB


Client LDAP

Processus slapd

Traitement synchrone Traitement asynchrone

Espace disque log data index index index

BY-NC-SA

18

Enregistrement local des donnes

dn2entry.dbb : quivalence entre les DN et les identifiants internes de stockage :


dc=linagora,dc=com : 0x000001 ou=personnes,dc=linagora,dc=com : 0x01094 uid=joe,ou=personnes,dc=linagora,dc=com : 0x41367

id2entries.dbb : stockage des donnes de chaque entre (fichier utilis par la commande slapcat) :
0x41367 : uid : joe objectClass : top, person, inetOrgPerson, sn : Joe givenName : Jack < />

BY-NC-SA

19

Enregistrement local des donnes

XYZT.dbb : fichier dindex sur lattribut XYZT (quelque soit la forme dindexage, fichier(s) utilis(s) par la commande slapindex) Exemple de fichier sn.dbb pour un indexage de type eq et subfinal :

G: < />, 0x41367, < /> Ge: < />, 0x41367, < /> Ger: < />, 0x41367, < /> Germ: < />, 0x41367, < /> Germa: < />, 0x41367, < /> German: 0x41367

BY-NC-SA

20

Le backend de configuration

Fonctionnalit apparue en valuation dans OpenLDAP 2.2, et en version stable dans OpenLDAP 2.3. Configuration accessible par le protocole LDAP, en interrogeant la branche cn=config :

ldapsearch -x -D "cn=admin,dc=linagora,dc=com" -s base -b "cn=config"

BY-NC-SA

21

Le backend de configuration

BY-NC-SA

22

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

23

Modes d'installation

Depuis les paquets de la distribution Linux :

RedHat, Fedora Core et RHES :

Obligatoires : openldap-2.3.X.rpm (librairies obligatoires) installer : openldap-servers-2.3.X.rpm et openldap-clients-2.3.X.rpm Obligatoires : libldap2 installer : slapd, ldap-utils

Debian, Ubuntu :

Toutefois les choix de compilation sont imposs ce qui peut ne pas convenir la matrise ncessaire ce type de composant essentiel !

Depuis les sources :


Besoin des outils de compilation C (autoconf, make, gcc) Besoin des bibliothques (fichiers .h) des produits tiers Permet de slectionner finement les fonctionnalits et d'optimiser les binaires

BY-NC-SA

24

Pr-requis l'installation

Avant de lancer la configuration des sources, il faut dterminer :


Le format de stockage (backend) Les fonctionnalits (overlays) Le modle de scurit (SSL/TLS, SASL) Larchitecture des annuaires (classique ou multimatres)

Et pr-installer les bibliothques correspondantes :


SASL : cyrus-sasl SSL/TLS : OpenSSL ou GnuTLS Backend BDB, HDB : BerkeleyDB 4.2, 4.4 ou 4.5 (pas la 4.3 !) Backend SQL : UnixODBC

BY-NC-SA

25

Installation de BerkeleyDB par les sources

Tlcharger une version de BerkeleyDB depuis le site et les correctifs associs :

http://www.oracle.com/technology/software/products/berkeley-db/index.html

Dsarchiver :

tar xzf db-4.x.y.tar.gz

Appliquer les correctifs :

patch -p1 < patch.4.x.y.z

Dtermination automatique de la configuration locale :


cd db-4.x.y/build_unix ../dist/configure

Calcul des dpendances, compilation et installation :


make depend && make sudo make install

Le rpertoire dinstallation par dfaut est :

/usr/local/BerkeleyDB.4.x

BY-NC-SA

26

Installation d'OpenLDAP par les sources

Tlcharger la dernire version depuis le site :

wget c ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.35.tgz

Dsarchiver :

tar xzf openldap-2.3.35.tgz

Regarder les options disponibles :


cd openldap-2.3.35/ ./configure --help

Si besoin, indiquer l'emplacement des produits tiers :


export CPPFLAGS=-I/usr/local/BerkeleyDB.4.x/include export LDFLAGS=-L/usr/local/BerkeleyDB.4.x/lib -R/usr/local/BerkeleyDB.4.x/lib export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.x/lib

BY-NC-SA

27

Installation d'OpenLDAP par les sources

Indiquer les options (dont le rpertoire d'installation) :

./configure --enable-bdb --with-tls --without-cyrus-sasl --prefix=/opt/openldap --enablemonitor --enable-overlays

Calcul des dpendances et compilation :

make depend && make

Passage des tests (optionnel) :

make test

Installation :

sudo make install

BY-NC-SA

28

Exercice

Installer les produits tiers partir des paquets fournis dans votre distribution Linux :

BerkeleyDB 4.2 OpenSSL

Installer OpenLDAP partir des sources dans le rpertoire utilisateur (par exemple /home/linagora/stage)

BY-NC-SA

29

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

30

Organisation du rpertoire d'installation

bin : utilitaires clients etc : configuration include : fichiers d'en-ttes pour compiler des clients LDAP lib : bibliothques pour compiler des clients LDAP libexec : excutables des serveurs man : pages de manuel sbin : utilitaires d'administration var : donnes variables (bases, donnes de rplication, fichiers de lancement)

BY-NC-SA

31

Fichiers de configuration

Fichier principal de configuration du serveur :

$prefix/etc/openldap/slapd.conf

Configuration (optimisation) de BerkeleyDB :

$prefix/var/openldap-data/DB_CONFIG

Fichier de configuration des clients :

$prefix/etc/openldap/ldap.conf

Localisation des fichiers schmas :

$prefix/etc/openldap/schema/

Manuel intgr :

man -M $prefix/man slapd.conf

BY-NC-SA

32

Structure de la configuration

Structure de slapd.conf :

Directives gnrales :

Inclusion des fichiers schmas Directives de scurit Contrles d'accs (ACL) Limites Paramtres dexcution Paramtres communs aux bases du backend Dfinition d'une base (database XXX) Paramtres spcifiques la base (index, mots de passe, etc.) Overlays (Dfinition d'une autre base)

Dfinition dun backend (backend XXX) :

(Dfinition d'un nouveau backend)

BY-NC-SA

33

Paramtres gnraux

referral : envoie des clients sur cette URL si le serveur est incapable de rpondre threads <integer> : nombre de fils d'excution maximum tool-threads <integer> : nombre de fils d'excution maximum pour les utilitaires d'administration pidfile : fichier contenant lidentificateur de processus du serveur argsfile : fichier contenant les arguments passs au lancement du serveur gentlehup {on|off} : arrt sans coupure des connexions tablies rootDSE <filename> : nom du fichier LDIF contenant les informations publier sur lentre dn= de lannuaire

BY-NC-SA

34

Paramtres gnraux

reverse-lookup {on|off} : active ou non la rsolution de nom pour lhistorisation (logs) loglevel : Niveau de debug enregistr par syslog sockbuf_max_incoming : taille maximum accepte pour une session anonyme sockbuf_max_incoming_auth : taille maximum accepte pour une session authentifie default_search_base <dn> : base par dfaut en labsence de ce paramtre dans une requte schemadn <dn> : nom de lattribut contenant le DN du schma ajout par le serveur sur chaque entre

BY-NC-SA

35

Paramtres globaux des backends

suffix : Prcision du contexte de nommage lastmod {on|off} : slapd maintient ou non les attributs oprationnels :

modifiersName modifyTimeStamp creatorsName createTimeStamp

readonly {on|off} : le contexte est ou non accessible en criture rootdn : DN de ladministrateur du suffixe correspondant (ce champ doit faire partie du contexte de nommage auquel il est attach) rootpw : mot de passe de ladministrateur (possibilit de le chiffrer avec slappasswd)

BY-NC-SA

36

Paramtres spcifiques BDB et HDB

cachesize <integer> : Nombre dentres maintenues en mmoire (du processus OpenLDAP) checkpoint <kbytes> <min> : Point dcriture du fichier de log lorsque soit il dpasse le volume indiqu par le nombre <kbytes>, soit <min> minutes sont passes dbnosync : pas de synchronisation instantane sur disque (ni dans le fichier de log ni dans les fichiers de donnes) dirtyread : autorise la lecture dune information non commite , cest--dire uniquement prsente dans le fichier de log idlcachesize <integer> : meilleure performance si idlcachesize = cachesize (pour HDB, idlcachesize =3 * cachesize) searchstack <integer> : profondeur maximum dune recherche (refus de filtres trop complexes pour viter le dni de service) index <attrlist> [pres,eq,approx,sub,...] : ajoute un ou plusieurs index sur un ou plusieurs attributs Note : penser utiliser slapindex aprs l'ajout d'un index sur un attribut existant
37

BY-NC-SA

Exercice

Configuration basique d'OpenLDAP :

Inclure les schmas :

Core Cosine inetOrgPerson Contexte : dc=linagora,dc=com Administrateur : cn=admin,dc=linagora,dc=com (et choisir un mot de passe)

Dclarer une base BDB :

Indexer les attributs objectClass, cn et sn en quivalence et prsence

BY-NC-SA

38

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

39

Lancement du serveur

slapd :

Lancement la demande via inetd :

Pas de charge permanente pour un service peu utilis Peu utilis, car slapd est un service lourd Disponibilit instantane Absence de relance dun processus chaque connexion

Lancement unique sous forme de dmon :

slurpd :

Lancement en mode instantan (one-shot) :

Traite toutes les propagations effectuer et sarrte (utile pour resynchroniser sur une connexion non permanente) Fonctionne en parallle de slapd pour propager les modifications

Lancement en mode permanent (dmon) :

BY-NC-SA

40

Paramtres de lancement

Options communes :

-d : niveau de debug (puissances de 2, de 2 2048, composables) -f : fichier de configuration utiliser -l : processus syslog utilis pour les logs (LOCAL0, LOCAL1, LOCAL4, ...)

slapd :

-h : URL spares par un espace (exemple : -h ldap:/// ldaps:/// ) -u, -g et -r : permettent de protger le reste du systme contre une dfaillance du dmon

slurpd :

-r <replogfile>: fichier contenant les modifications notifies par le daemon slapd -t : rpertoire temporaire dans lequel le fichier replogfile est copi avant dtre trait

BY-NC-SA

41

Peuplement initial

Utilisation d'un fichier LDIF pour insrer le DIT :


Contexte de nommage Branches Utilisateurs spciaux (comptes applicatifs, rplication, etc.)

Exemple de LDIF pour le contexte de nommage :


dn: dc=linagora,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: linagora o: LINAGORA description: LINAGORA

BY-NC-SA

42

Outils d'administration du serveur

slapacl : teste les ACLs slapauth : teste les paramtres de connexion (authz) slapcat : extraction des informations des fichiers DB slapadd : ajout dentres sans passer par la couche rseau, mais directement par les librairies slapindex : recre lensemble des fichiers dindex (peut tre assez long !) slapdn : vrifie la conformit dun DN en fonction du schma du serveur slaptest : vrifie la conformit du fichier slapd.conf slappasswd : gnre un mot de passe chiffr slapindex et slapadd ont une option -q amliorant grandement leurs performances

BY-NC-SA

43

Clients LDAP en ligne

ldapsearch : recherche dans lannuaire ldapadd : ajoute une ou plusieurs entres par le biais dun fichier LDIF ldapdelete : supprime une ou plusieurs entres, ou mme un arbre ldapcompare : vrifie quune valeur existe ou non pour un attribut particulier dune entre ldapmodify : modifie des entres dans l'annuaire ldapmodrdn : modifie le RDN et/ou dplace lentre ldappasswd : utilise lopration tendue de mise jour du mot de passe ldapwhoami : opration renvoyant lidentit de lutilisateur

BY-NC-SA

44

Options gnrales des clients LDAP

-D <dn> : DN de lentre utilise pour se connecter lannuaire -w <chane> : prcise le mot de passe sur la ligne de commande -H <URL LDAP> : prcise lURL (hte et port) de connexion lannuaire -h <hte> -p <port> -P {2|3} : version du protocole LDAP utilis pour la connexion -f : fichier LDIF contenant les modifications apporter -c : mode continu, ne s'arrte pas aux erreurs -s : stocke les erreurs dans un fichier Options par dfaut dans le fichier ldap.conf

BY-NC-SA

45

Paramtres spcifiques la recherche

-b <base> : DN de dpart de recherche -s <scope> : tendue de la recherche (base, one, sub) "filtre" : Filtre LDAP (exemple : "(objectClass=person)") Attributs :

Liste spcifique d'attributs (exemple : sn cn uid) Tous les attributs ('*') Tous les attributs oprationnels ('+')

BY-NC-SA

46

Comparaison des mthodes

Connect (clients LDAP) :

Permet de prendre en compte les volutions ventuelles durant le processus dalimentation Autorise la base LDAP tre disponible malgr lalimentation Utilise les mcanismes de rplication permettant dassurer une synchronisation de tous les serveurs partir dun unique point daccs

Dconnect (outils d'administration) :


Import rapide, sans transfert ni vrification rseau Possibilit dimporter sans index pour rindexer par la suite (plus rapide) Possibilit de limiter les vrifications pour acclrer le chargement (option -q)

BY-NC-SA

47

Exercice

Peuplement initial :

Crer un LDIF du contexte et d'une branche ou=personnes Crer des utilisateurs dans cette branche avec des mots de passe Insrer ce fichier avec slapadd

Dmarrer slapd en debug (niveau 256) Utiliser le client LDAP de recherche pour :

Voir la totalit des entres Voir les attributs oprationnels du contexte de nommage Voir l'entre RootDSE

Utiliser les diffrents clients LDAP pour lire et diter les donnes de l'annuaire

BY-NC-SA

48

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

49

SSL et TLS

SSL : Secure Socket Layer (version actuelle : v3) TLS : Transport Layer Security (version actuelle : v1) Comparaison SSL/TLS :

mmes algorithmes SSL chiffre une connexion (tunnel) TLS est inclus dans LDAP et est mis en place au cours de la connexion SSL ncessite un port de connexion diffrent (636) , alors que TLS sadapte sur le protocole LDAP (donc sur le port standard, 389) grce l'opration startTLS

Pour les faire fonctionner il faut disposer dun certificat valide :


sign dune autorit internationale sign dune autorit locale reconnue par tous les clients

BY-NC-SA

50

Flux SSL/TLS

ClientHello ServerHello Certificate CertificateRequest ServerHelloDone Certificate ClientKeyExchange

BY-NC-SA

51

Circuit de certification
Autorit de certification (AC) racine Autorit de certification (AC) oprationnelle

Intgre le certificat Client

Signe Signe

Certificat Racine

Serveur OpenLDAP Certificat Serveur Certificat Oprationnel

Transmet les certificats serveurs et oprationnels

BY-NC-SA

52

Paramtres de scurit dans slapd.conf

TLSCipherSuite <ciphers>+ : permet de prciser quels sont les algorithmes de chiffrement utiliss, par exemple : HIGH:MEDIUM:+TLSv1 TLSCertificateFile <filename> : fichier du certificat public du serveur TLSCertificateKeyFile <filename> : fichier contenant la cl prive du certificat du serveur allow / disallow / require <feature> : autorise / refuse / ncessite des connexions suivant certaines fonctionnalits (exemple : disallow LDAPv2) password-hash <hash> [<hash>] : algorithme de cryptage utilis lors de lutilisation de lopration tendue de changement du mot de passe

BY-NC-SA

53

Paramtres de scurit dans slapd.conf

Facteurs de scurit :

security <factors> : spcifie des longueurs de cls minimum utiliser pour assurer les oprations :

ssf=<n>, tls=<n> update_ssf=<n>, update_tls=<n>

Rplication scurise :

tant donn quen sadressant un serveur esclave, on ne peut pas savoir si la connexion a pu tre scurise par TLS (mme port de connexion), il est possible de forcer la rplication ne seffectuer que si la communication est chiffre :

Dans la section replica du contexte de nommage, ajouter tls=critical Dans la section syncrepl, ajouter tls=critical

BY-NC-SA

54

Gnration dun certificat OpenSSL

Gnration de la cl prive :

openssl genrsa aes256 -out ca.key 1024

Cration de la demande de signature :

openssl req -new -key ca.key -out ca.csr

Auto signature de la demande :

openssl x509 -days 1460 -signkey ca.key -in ca.csr -req -out ca.pem

Intgration du certificat dans OpenLDAP (slapd.conf) :


TLSCipherSuite HIGH:MEDIUM:+TLSv1 TLSCertificateFile $prefix/etc/openldap/ca.pem TLSCertificateKeyFile $prefix/etc/openldap/ca.key

Relancer OpenLDAP (slapd) avec les URL correspondantes :

$prefix/libexec/slapd h ldap:// ldaps://

BY-NC-SA

55

Rgles de contrles daccs (ACL)

Permet de dterminer quels sont les accs donns un client de lannuaire Peut tre dtermin par de nombreux critres Cot non ngligeable dvaluation. Peut donc ncessiter des spcialisations fonctionnelles dans certains cas. Paramtres :

access to <quoi> [by <qui> <droits> <contrles>]+

Manuel :

man -M $prefix/man slapd.access

BY-NC-SA

56

L'objet de l'ACL

Sur quoi porte lACL : 3 lments

lment n1 : quel DN

DN (expression rgulire) base : le DN lui - mme one : les fils directs du DN prcis subtree : toute la descendance y compris le DN children : toute la descendance sans le DN Filtre sur les attributs (comme ceux de ldapsearch) Liste dattributs (exemple : userPassword, uid) Lentre tout entire (entry) Les fils de cette entre (children)

Elment n2 : slection par rapport aux attributs

Elment n3 : quels attributs de ce(s) DN

BY-NC-SA

57

Les droits d'une ACL

Droits incrmentaux : none < auth < compare < search < read < write

auth = authentification (bind uniquement) compare = opration de comparaison (compare) search = permet dutiliser lattribut dans un filtre read = lecture des valeurs de lattribut write = criture (modification, ajout et suppression) des valeurs de lattribut

Droits spars : {x,c,s,r,w}+ Exemple pour lattribut userPassword :


access to attrs=userPassword by self xw+ by * x+

BY-NC-SA

58

qui s'applique l'ACL

* : tout le monde anonymous : toute connexion non authentifie sur lannuaire users : toute connexion authentifie sur lannuaire self : lentre utilise pour sauthentifier dn : un DN spcifi group : un groupe dutilisateur (groupOfNames par dfaut) peername, sockname : en fonction des connexions (nom dhte, ) set : dfinition en fonction des attributs des entres aci : par les ACL stockes dans lannuaire

BY-NC-SA

59

Exemples d'ACL

Lecture sur la branche des personnes :


access to dn.subtree=ou=personnes,dc=linagora,dc=com filter=objectClass=person attrs=uid,sn,givenName,mail,objectClass by users csr+ by * none

Protection du mot de passe :


access to attrs=userPassword by self xw+ by uid=replicator,dc=linagora,dc=com write by * x+

BY-NC-SA

60

Les ACI

Afin de permettre une plus grande dynamique des ACL, il est maintenant possible dinsrer des ACI dans lannuaire. Nom de lattribut : OpenLDAPaci Syntaxe :

OID # SCOPE # RIGHTS # TYPE # SUBJECT OID : ordre de la rgle (1, , n) SCOPE : entry

BY-NC-SA

61

Les ACI

RIGHTS = ACTION [ ; PERMISSIONS ; TARGET]+ ACTION = grant | deny PERMISSIONS = PERMISSION + [ , + PERMISSION ] * PERMISSION = w | r | s | c | a TARGET = all | children | attribut TYPE = access-id | group | self SUBJECT = DN

BY-NC-SA

62

Limites

limits <who> <limit> [<limit>]

Avec <who> :

anonymous users dn[.<style>]=]<pattern> group[/oc[/at]]=<pattern> time[.{soft|hard}]=<integer> size[.{soft|hard|unchecked}]=<integer>

Et <limit> :

Cas particuliers :

sizelimit : taille maximum dune recherche timelimit : temps maximum dune recherche idletimeout : temps maximum dune connexion devenue inactive

BY-NC-SA

63

Exercice

SSL/TLS :

Crer et signer un certificat serveur Installer le certificat dans OpenLDAP Contrler la scurit avec les outils OpenSSL

ACL et limites :

Inscrire des rgles d'accs et des limites dans slapd.conf Trouver des mthodes pour vrifier l'efficacit des rgles mises en place

BY-NC-SA

64

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

65

Les schmas

Les schmas courants :


Core : lensemble des objets dont OpenLDAP a besoin Cosine (RFC 1274) : issu des schmas X500 NIS : les informations pour les comptes informatiques inetOrgPerson (RFC 2798) : une personne au sein dune organisation

Les schmas en cours :


Misc : objet de routage mail (abandonn) Samba : Accs aux ressources sur un serveur Microsoft Bind : support des objets DNS Dyngroup : support des groupes dynamiques

Visualisation du schma dun serveur :

ldapsearch b cn=subschema x s base +

BY-NC-SA

66

Exemples

Validit des valeurs des attributs en fonction de la syntaxe :


attributetype ( 0.9.2342.19200300.100.1.20 DESC 'RFC1274: home telephone number NAME ( 'homePhone' 'homeTelephoneNumber' ) EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )

Syntaxe et normalisation associes :


ldapSyntax ( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )

BY-NC-SA

67

Exemples

Cohrence du contenu des entres en fonction des classes dobjet :


objectClass ( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC 'RFC2798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL MAY ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ preferredLanguage $ userSMIMECertificate $ userPKCS12 ))

Rgles dgalit (dapproximation, de comparaison, )


matchingRules ( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

BY-NC-SA

68

Exercice

Schma :

Dfinir deux attributs Dfinir une classe d'objet drivant de la classe inetOrgPerson possdant ces deux attributs de manire facultative Installer le schma dans OpenLDAP Insrer des entres conformes au nouveau schma

BY-NC-SA

69

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

70

Types de rplication

Rplication push-based , ou SIR :


Server Initiated Replication : c'est l'annuaire matre qui rplique vers les esclaves Disponible dans OpenLDAP avec slurpd ou une configuration particulire de Syncrepl

Rplication pull-based , ou CIR :

Consurmer Initiated Replication : ce sont les esclaves qui tablissent les requtes vers l'annuaire matre Disponible dans OpenLDAP avec Syncrepl (depuis la version 2.2)

Rplication multimatres (multimaster) :


Plusieurs annuaires peuvent recevoir les critures Fonctionnalit exprimentale dans OpenLDAP

BY-NC-SA

71

Fonctionnement de slurpd

BY-NC-SA

72

Fichiers de slurpd

Il y a 4 fichiers importants analyser pour connatre le statut de la rplication slurpd :

Le fichier replog de slapd : il contient les modifications enregistres sur lannuaire matre mais pas encore rcupres par slurpd. Le fichier replog de slurpd : il contient les modifications qui se trouvaient dans le fichier replog de slapd et qui ont t rcupres par slurpd. Le fichier de statut : chaque ligne de ce fichier contient ladresse et le port dun annuaire esclave, ainsi que la date et le rang de la dernire modification accepte ou rejete. Le fichier de rejet : il est spcifique un esclave et contient les modifications rejetes.

BY-NC-SA

73

Configuration de slurpd dans slapd.conf

Un serveur est :

soit matre, et peut contenir une ou plusieurs directives dfinissant chaque esclave (destination de la rplication) : replica uri = URL de l'esclave bind method = simple binddn = DN de connexion l'esclave credentials = mot de passe replogfile /var/lib/ldap/replog-hostname

soit esclave, et il contient deux paramtres lui permettant daccepter les flux de rplication mis par le serveur matre :

updatedn : DN par lequel le matre propage les modifications updateref : URL de renvoi lorsque des modifications lui sont adresses

BY-NC-SA

74

Syncrepl

Fonctionnalit apparue dans OpenLDAP 2.2 Synchronisation base sur des cookies : l'esclave va interroger le matre pour connatre les entres diffrentes Deux modes :

refreshAndPersist : l'esclave (consumer) rcupre en continu les modifications apportes au matre (provider) suivant ltat maintenu par le serveur refreshOnly : lesclave demande priodiquement les mises jour au matre

Syncrepl est compatible avec la configuration multimatres Possibilit de n'envoyer que les diffrences entre les entres (c'est dire au niveau des attributs) avec delta-syncrepl Possibilit de simuler la rplication SIR en utilisant un proxy LDAP (back-ldap) Rplication plus stable que slurpd car toujours convergente

BY-NC-SA

75

Configuration de Syncrepl

Sur le matre :
overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100

Sur l'esclave :
syncrepl rid=123
provider=ldap://provider.example.com:389 type={refreshOnly|refreshAndPersist} interval=jj:hh:mm:ss retry=60 10 300 3 + searchbase="dc=linagora,dc=com" filter="(objectClass=organizationalPerson)" scope=sub attrs="cn,sn,ou,telephoneNumber,title,l" schemachecking={off|on} bindmethod=simple binddn="cn=syncuser,dc=linagora,dc=com" credentials=secret
76

BY-NC-SA

Exercice

Slurpd :

Configurer sur la mme machine un annuaire matre et un annuaire esclave avec slurpd Dmarrer les processus Valider la rplication

Syncrepl :

Reproduire l'architecture prcdente au moyen de SyncRepl Valider la rplication

BY-NC-SA

77

Plan de cours

Prsentation du logiciel OpenLDAP Installation Configuration Utilisation (client et serveur) Scurit Schma Rplication Performances

BY-NC-SA

78

Premires mesures doptimisation

Compiler le noyau avec la configuration exacte de la machine Compiler le serveur LDAP avec le nouveau noyau activ Ne pas activer doptions de dboguage particulires ni dhistorisation en production :

loglevel 0

Dans le cas o lhistorisation est active, paramtrer syslog de faon ne pas forcer la synchronisation sur disque de chaque message :

local4.*

-/var/log/slapd.log

Rgler finement les options de paramtrage du backend utilis

BY-NC-SA

79

Sources classiques des problmes

Les pertes de performance en charge peuvent tre lies :

au montant limit de mmoire qui arrive lorsque :

il y a trop dindex par rapport aux donnes ce qui fait basculer les oprations en partition d'change disque (swap) il ny pas assez de processus ou de fils d'excution (threads) par processus pour traiter les demandes sur des attributs non indexs gnrant trop de rsultats

aux recherches abusives :

Dans certains cas les limites systmes doivent tre augmentes pour viter une indisponibilit en grande charge, notamment sur des instances utilisant un backend meta ou LDAP. Les limites correspondantes sont alors :

le nombre de fichiers ouverts maximum par processus le nombre de fils d'excution (threads) par processus

BY-NC-SA

80

Pour optimiser, quelques principes

Toute recherche doit tre faite sur un attribut index En fonction du type de recherche, prciser les modes de recherches permet de limiter les index mettre en uvre (cot mmoire et CPU) Activer un cache DNS local (nscd) ou disposer dun serveur DNS rapide Paramtrer le fichier DB_CONFIG Augmenter la quantit de mmoire vive disponible Pour les solutions plus complexes :

Mise en place dun espace disque virtuel en mmoire Dupliquer le nombre de serveurs et introduire de lquilibrage de charge

BY-NC-SA

81

Pour aller plus loin...

Sites :

http://www.openldap.org http://www.commentcamarche.net/ldap/ldapinst.php3

Listes de diffusion :

ldap-fr@cru.fr (LDAP et OpenLDAP, en franais) openldap-software@openldap.org (en anglais)

Livres :

LDAP : Administration systme (Broch) de Gerald Carter Annuaires LDAP (Broch) de Marcel Rizcallah

BY-NC-SA

82

Et si vous souhaitez continuer votre apprentissage...


Dtachez ce coupon et adressez-le au ple Formation : Yves MIEZAN EZO Email : formation@linagora.com Tl : 01 58 18 68 28 Fax : 01 58 18 68 29
icie Prnom : nf 0 B 10 ion uct haine Socit : c rd de re pro n ! ot tio Mail : ur v forma s
Tl : Stage : Tarif catalogue :

z de

Nom :

.................................................................................................... .................................................................................................... ................................................................................................... ................................................................................................... ..................................................................................................... ..............................................Date : .......................................... ..........................Rduction : - 100 ........Tarif final :...............

Code Opration LNGFetdevientfortenlibre


83

BY-NC-SA

Formation

Administration et scurit

Merci de votre attention


LINAGORA Formation formation@linagora.com

BY-NC-SA