mise en place d'un domaine samba 2.2 ... - académie de...

30
Mise en place d'un domaine Samba 2.2 avec LDAP Ganaël LAPLANCHE - EDF R&D V1.12, 30/04/2003 – 01-07-2003 http://www.martymac.com Copyright (c) 2003, Ganaël LAPLANCHE - Organisation : EDF R&D Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 1/30

Upload: others

Post on 18-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Mise en place d'un domaine Samba 2.2 avec LDAPGanaël LAPLANCHE - EDF R&D

V1.12, 30/04/2003 – 01-07-2003http://www.martymac.com

Copyright (c) 2003, Ganaël LAPLANCHE - Organisation : EDF R&D Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 1/30

Page 2: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

SommaireAvant-propos...............................................................................................................................................................3I) Introduction .............................................................................................................................................................3II) Etape 1 : Installation d'OpenLDAP ...................................................................................................................4III) Configuration de base et Test du serveur LDAP............................................................................................4

a) Configuration............................................................................................................................................................................................4b) Premiers tests............................................................................................................................................................................................4

IV) Installation de Samba..........................................................................................................................................5V) Préparation du système pour l'authentification via LDAP............................................................................6

a) Outils nécessaires/supplémentaires.........................................................................................................................................................6b) Configuration avancée de LDAP............................................................................................................................................................6c) Insertion de l'arborescence de base pour samba dans l'annuaire LDAP...............................................................................................7d) Configuration des méthodes d'authentification du Système.................................................................................................................8

1) Configuration de Nsswitch.........................................................................................................................................................................................................................82) Configuration de Pam.................................................................................................................................................................................................................................83) Configuration générale des librairies libpam-ldap et libnss-ldap............................................................................................................................................................94) Configuration de smbldap-tools.................................................................................................................................................................................................................9

e) Premiers tests de connexion.....................................................................................................................................................................9VI) Configuration de Samba...................................................................................................................................10

a) L'Impression............................................................................................................................................................................................10b) Configurer Samba..................................................................................................................................................................................10c) Revenons à l'impression.........................................................................................................................................................................11d) Test : Joindre une machine au domaine................................................................................................................................................12e) Test : Se connecter au domaine avec un utilisateur.............................................................................................................................12f) Test : Imprimer........................................................................................................................................................................................13

VII) Etape 2 : Cas d'un serveur LDAP distant....................................................................................................14VIII) Etape 3 : Mise en place d'un BDC...............................................................................................................15

a) Processus de montage du répertoire Home d'un utilisateur.................................................................................................................15b) Configurons notre BDC.........................................................................................................................................................................15c) Test : le BDC prend-il correctement le relai en cas de panne du PDC ?............................................................................................18

IX) Plus loin : La gestion des ACLs.......................................................................................................................18a) Les ACLs au niveau du système de fichier..........................................................................................................................................19b) Les ACLs au niveau de l'environnement..............................................................................................................................................19c) Les ACLs au niveau de Samba..............................................................................................................................................................19d) Tests et limites........................................................................................................................................................................................19

X) Etape 4 : Encore plus loin avec la réplication LDAP.....................................................................................20a) Configuration côté maître......................................................................................................................................................................20b) Configuration côté esclave....................................................................................................................................................................20c) Quelques remarques...............................................................................................................................................................................21d) Tolérance de panne (failover)................................................................................................................................................................21

1) La théorie..................................................................................................................................................................................................................................................212) La pratique................................................................................................................................................................................................................................................22

XI) Toujours plus loin : communication SSL avec notre serveur LDAP.........................................................23a) TLS : Pourquoi ?.....................................................................................................................................................................................23b) Les clefs et les certificats.......................................................................................................................................................................23c) La pratique..............................................................................................................................................................................................23

1) Génération des clefs et du certificat........................................................................................................................................................................................................232) Mise en place côté serveur.......................................................................................................................................................................................................................243) Mise en place côté client..........................................................................................................................................................................................................................244) Testons notre connexion sécurisée..........................................................................................................................................................................................................255) Mise en place pour Samba.......................................................................................................................................................................................................................25

XII) Conclusion.........................................................................................................................................................26XIII) Outils ................................................................................................................................................................26XIV) Liens / Bibliographie ......................................................................................................................................26XV) Remerciements.................................................................................................................................................26XVI) Annexes............................................................................................................................................................27

A1) Exemple d'architecture avancée........................................................................................................................................................27GNU Free Documentation License........................................................................................................................28

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 2/30

Page 3: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Avant-propos

Cedocumenta étéréalisédurantmon stagedefins d'étudesà EDF R&D à Clamart.Il a pourbut deprésenterlesdifférentesétapesde l'installationde sambaet OpenLDAPen émulantun domainewindowsau seind'un réseau.Il estprincipalementbasésur celuid'idealx (http://samba.idealx.org/dist/samba-ldap-howto.pdf),ceux de linux mag' (numéros40 et 46), et ma propreexpérience.Ilabordele côté "pratique",plus quethéorique,et peutoffrir uneapprochedifférentepar rapportaux documentsdéjàexistantspourceuxqui sontun peuperdus.Commetout Howto, il n'estpasexhaustifet peutcontenirquelqueserreurs.Il supposeégalementquevous ayiez quelques connaissances de base sous Unix... Bonne lecture !

I) Introduction

Vousd le savez,Sambaest un outil qui permetde gérerun domaineWindows sansmachineWindows ! Il est ainsi possibledepartagerdesressourcesUnix pour y accéderdepuisune machineWindows (partagede répertoire,d'imprimante)et de gérerleslogonssurun domaine.Depuispeu,Sambapermetdestockersesutilisateursdansun annuaireLDAP. Cecioffre un intérêtmajeur:unegestionsimplifiée et centraliséedescomptesSamba.Ainsi, le fichier smbpasswd,danslequelsonthabituellementstockéslescomptesutilisateurs,estcomplètementremplacépar desaccèsà l'annuaireLDAP (saufpourle stockagedu mot depassedu serveurLDAP qui se fait toujoursdansce fichier). Les avantagesd'une telle architecturesont nombreux: robustesseaccrue,souplessed'utilisation, grandedisponibilité (possibilité de remanierle pool d'utilisateursmêmelorsquele PDC est en panne),etc... Nousaurons l'occasion d'y revenir tout au long de ce document.

Nousallonsvoir dansun premiertempscommentinstallerSamba2.2 et LDAP sur la mêmemachine,puis,par la suite,commentdécentraliser cette architecture (cf à partir de VII).

Contexte :

Nous allons passerpar 4 étapes.L'étape principale est l'étape 1 et peut sesuffire à elle-même.Elle sert de baseaux étapessuivantes, plus courtes, qui complètent notre étude. Voici le programme :

Etape 1 : Installation d'un PDC et d'un serveur LDAP sur la même machine- Plateforme de test : PIII 733 Mhz, 128Mo de Ram, Debian 3.0r1, noyau 2.4.18- Jusqu'au chapitre VII), cette machine s'appelle redpdc.martymac.com pour se nommer par la suite blueldap.martymac.com.- Notre domaine Windows s'appelle RED- Le nom netbios de notre machine est RED-PDC

Etape 2 : Le PDC devient machine à part et interroge notre serveur LDAP- Plateforme LDAP : On conserve la machine de l'étape 1, cette machine s'appelle désormais blueldap.martymac.com- Plateforme PDC : PIII 1,2 Ghz, 256Mo de Ram., Debian 3.0r1, noyau 2.4.18, cette machine s'appelle bluepdc1.martymac.com- Notre domaine Windows s'appelle BLUE- Le nom netbios de notre PDC est BLUE_PDC

Etape 3 : Ajout d'un BDC à notre infrastructure- Plateforme LDAP : On conserve la machine de l'étape 1- Plateforme PDC : On conserve la machine de l'étape 2- Plateforme BDC : PIII 450 Ghz, 128Mo de Ram., Mandrake 9.1, noyau 2.4.21, cette machine s'appelle bluebdc1.martymac.com- Notre domaine Windows s'appelle BLUE- Le nom netbios de notre PDC est BLUE_BDC

Etape 4 : Ajout d'un second serveur LDAP, réplica du premier- Ce serveur offrira une solution de secours si le premier serveur LDAP tombe en panne

Le contexte général :- Le binddn (compte ayant le droit d'écriture) du serveur LDAP est : 'cn=Manager,dc=martymac,dc=com' et son password : 'secret'- La base de notre arbre LDAP est 'dc=martymac,dc=com'

Nota : Nousnousintéresseronsplus à la configurationdesdifférentsservicesqu'àleur compilation! C'estpour ceci que,pour unequestionde facilité, nous utiliserons souvent apt qui, sous GNU/Linux Debian permet d'installer rapidementles applicationsvoulues...Si vousutilisez les sourcesdesprogrammes,il y a de forteschancespourqueles fichiers deconfigurationnesetrouventpas au même endroit ! Un “find” sera alors le bienvenu...

Essayezde lire ce documentdanssa continuité,chaqueétapeprépareà la suivante,puisqu'onconservecertainesconfigurationsprécédentes.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 3/30

Page 4: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Etape 1 : Installation d'un PDC et d'un serveur LDAP sur la même machine

II) Etape 1 : Installation d'OpenLDAP

Le PDC et l'annuaire LDAP ne font qu'un

Nous allons avoir besoin de plusieurs composants :- des librairies LDAP compilées, - des sources de ces librairies (pour des compilations futures), - des utilitaires d'interrogation d'annuaire- du serveur LDAP (slapd)

L'installation de tout ceci se fait de manière très simple sous debian, via apt :

- apt-get install libldap2 libldap2-dev ldap-utils slapd

Le serveur est désormais installé, nous allons voir comment le configurer...

III) Configuration de base et Test du serveur LDAP

a) Configuration

- Editer le fichier le fichier /etc/ldap/slapd.conf pour configurer OpenLDAP :

include /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/nis.schema

pidfile /usr/local/var/slapd.pidargsfile /usr/local/var/slapd.args

database ldbmsuffix "dc=martymac,dc=com"rootdn "cn=Manager,dc=martymac,dc=com"rootpw secretdirectory /var/lib/ldap

index cn eq

Nous disposons maintenant d'une configuration suffisante pour démarrer le serveur :- /etc/init.d/ldap start, tout devrait bien se passer...

b) Premiers tests

Nous allons essayer d'insérer quelques enregistrements dans notre base LDAP, afin de voir si tout fonctionne :- Créer un fichier test.ldiff source :

dn: dc=martymac,dc=comobjectclass: dcObjectdc: martymacobjectclass: organizationo: martymac

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 4/30

AnnuaireLdap

+PDC

[homes][profiles][netlogon]

Utilisateur Loopback

Page 5: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

dn: ou=personnes,dc=martymac,dc=comobjectclass: topobjectclass: organizationalUnitou: personnesdescription: Branche personnes

Pour insérer les données du fichier :- ldapadd -W -D 'cn=Manager,dc=martymac,dc=com' -f test.ldiffPour rechercher (dumper la base a partir de martymac.com) :- ldapsearch -W -D 'cn=Manager,dc=martymac,dc=com' -b 'dc=martymac,dc=com'- ou : ldapsearch -b 'dc=martymac,dc=com' (car dans notre cas, pas besoin d'authentification pour les recherches)Pour effacer les données (afin de laisser une base propre pour la suite) :- ldapdelete -W -D 'cn=Manager,dc=martymac,dc=com' 'ou=personnes,dc=martymac,dc=com'

Si tout ceci fonctionne, passons à l'installation de Samba ! Nous reviendrons plus tard à LDAP...

IV) Installation de Samba

PourSamba,nousnepouvonspasinstallerdirectementlespackagesvia apt-getcarnousallonsavoir besoindecertainesoptionsnoncompilées par défaut. Nous allons donc recréer notre propre package Debian.

- Récupérer les sources pour debian sur samba.org (http://de.samba.org/samba/ftp/Binary_Packages/Debian/dists/stable/main/source/samba_2.2.8a-0.1.tar.gz)- Décompresser les sources : tar xvzf samba_2.2.8a-0.1.tar.gz

Modifier les sources Samba afin de créer un package Debian à notre convenance :

- Modifier le fichier debian/rules :Lignes 61 et + (concernant les options du ./configure), supprimer toutes les références à pam (2), pour obtenir ceci :

60 [ -f source/Makefile ] || (cd source && ./configure \ 61 --host=$(DEB_HOST_GNU_TYPE) \ 62 --build=$(DEB_BUILD_GNU_TYPE) \ 63 --with-fhs \ 64 --prefix=/usr \ 65 --sysconfdir=/etc \ 66 --with-privatedir=/etc/samba \ 67 --localstatedir=/var \ 68 --with-netatalk \ 69 --with-smbmount \ 70 --with-syslog \ 71 --with-sambabook \ 72 --with-utmp \ 73 --with-readline \ 74 --with-libsmbclient \ 75 --with-winbind \ 76 --with-msdfs \ 77 --with-automount \ 78 --with-acl-support \ 79 --with-profile \ 80 --disable-static \ 81 --with-ldapsam)

Lignes 130/131, commenter la référence à pam :

130 #install -m 0644 source/nsswitch/pam_winbind.so \ 131 # $(DESTDIR)/lib/security/

Ligne 141, idem :

141 #mv $(DESTDIR)/usr/bin/pam_smbpass.so $(DESTDIR)/lib/security/

Ligne 181 également :

181 #cp debian/samba.pamd $(DESTDIR)/etc/pam.d/samba

- Modifier ensuite le fichier debian/libpam-smbpass.files et supprimer la ligne concernant pam_smbpass.so (le fichier est alors vide)- Modifier le fichier debian/samba-common.conffiles et supprimer la ligne /etc/pam.d/samba (le fichier est alors vide)- Modifier enfin le fichier debian/winbind.files et supprimer la ligne concernant pam_winbind.so

Les sources sont prêtes pour créer les packages debian :- Exécuter : dpkg-buildpackage dans le répertoire principal. Les packages sont compilés et copiés dans ../- Installerles packages: dpkg-i samba-common_2.2.8a-0.1_i386.deblibsmbclient_2.2.8a-0.1_i386.debsamba_2.2.8a-0.1_i386.debsmbclient_2.2.8a-0.1_i386.deb smbfs_2.2.8a-0.1_i386.deb swat_2.2.8a-0.1_i386.deb winbind_2.2.8a-0.1_i386.deb

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 5/30

Page 6: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Sambaest maintenantinstallé, nous allons maintenantpouvoir configurer LDAP de manièreplus approfondieafin de pouvoirs'authentifier sous debian via le serveur.

V) Préparation du système pour l'authentification via LDAP

a) Outils nécessaires/supplémentaires

Il faut installer plusieurs librairies et outils pour permettre l'auhtentifiation via LDAP :

Installation de nscd : Name service cache daemon, fournit un cache pour différentes requêtes de noms, accélère les requêtes.- apt-get install nscd

Installation de libnss-ldap : Permet d'ajouter la gestion de LDAP à nsswitch.Nsswitchsertd'interfacepour la résolutionde nomsde plusieursservices(les groupesutilisateurs,les nomsde machines,etc...).Ilpermetd'indiquerausystèmeoùchercherlesinformations.Il faut ici le configurerafin d'indiquerà la machinequelesutilisateursetgroupespeuventêtresituéssur l'annuaireLDAP. Ceciserautile notammentpour pouvoireffectuerdesmodificationsdedroitsavecdesgroupesou utilisateursprésentsdansl'annuaireLDAP (en complétantle pool d'utilisateurset de groupesdéjàprésentsdanslesfichiers /etc/password et /etc/group lors d'un chown, chmod, chgrp, getent...).- apt-get install libnss-ldap

Installation de libpam-ldap : Modules LDAP pour pamPamsertà l'authentificationdesutilisateurs.Il offre aux applicationsunecouchetransparentequi permetdegérer,via desmodules,n'importequelle méthoded'authentification(de la carteà puce,aux fichiers password,en passantpar la biométrie...).Il faut luiindiquer,dansnotrecas,d'utiliser l'annuaireLDAP pours'authentifiersur le systèmeunix. Ceci n'estnécessairequesi l'on souhaitepouvoir s'authentifier sur le système Unix avec les comptes LDAP. Nous allons tout de même traiter le sujet.- apt-get install libpam-ldap

Installation de smbldap-tools : Ensemble d'outils de gestion de comptes samba sur LDAP développé par idealx- Télécharger smbldap-tools sur idealx (http://samba.idealx.org/dist/smbldap-tools-0.7.tgz)- Décompresser le tarball : tar xvzf smbldap-tools-0.7.tgz- Copie des *.pl ds /usr/local/sbin- Copie des *.pm ds /usr/share/perl/5.6.1 (à modifier suivant votre version de Perl)Puis,- Extraction de mkntpwd - Editer le Makefile et ajouter au début du fichier : PREFIX=/usr/local (Pour que l'installation se fasse dans $PREFIX/sbin)- Compilation : make && make installNous configurerons smbldap-tools plus tard...

b) Configuration avancée de LDAP

- Copie du fichier samba.schema (provenant du répertoire examples/ des sources de samba) dans /etc/ldap/schema/- Edition du fichier /etc/ldap/slapd.conf et inclure ce nouveau schéma (qui apporte le support des comptes samba) pour avoir ceci :

include /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/samba.schema

pidfile /usr/local/var/slapd.pidargsfile /usr/local/var/slapd.args

database ldbmsuffix "dc=martymac,dc=com"rootdn "cn=Manager,dc=martymac,dc=com"rootpw secretdirectory /var/lib/ldap

index objectClass,rid,uid,uidNumber,gidNumber,memberUid eqindex cn,mail,surname,givenname eq,subinitial

- Edition du fichier /etc/ldap/ldap.conf, fichier servant à toutes sortes de clients utilisant LDAP, pour avoir ceci :

base dc=martymac,dc=comhost 127.0.0.1

- Redémarrage de LDAP /etc/init.d/ldap restart

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 6/30

Page 7: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

c) Insertion de l'arborescence de base pour samba dans l'annuaire LDAP

- Création d'un fichier base.ldiff qui contient l'arborescence de base, nous ajouterons ces données à l'annuaire LDAP :

dn: dc=martymac,dc=comobjectClass: domaindc: martymac

dn: ou=Groups,dc=martymac,dc=comobjectClass: topobjectClass: organizationalUnitou: Groupsdescription: System Groups

dn: ou=Users,dc=martymac,dc=comobjectClass: topobjectClass: organizationalUnitou: Usersdescription: Users of the Organization

dn: ou=Computers,dc=martymac,dc=comobjectClass: topobjectClass: organizationalUnitou: Computersdescription: Windows Domain Computers

dn: cn=Domain Admins,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 200cn: Domain AdminsmemberUid: administratordescription: Windows Domain Users

dn: cn=Domain Users,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 201cn: Domain Usersdescription: Windows Domain Users

dn: cn=Domain Guests,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 202cn: Domain Guestsdescription: Windows Domain Guests Users

dn: cn=Administrators,ou=Groups,dc=martymac,dc=comdescription: Members can fully administer the computer/domainobjectClass: posixGroupgidNumber: 220cn: Administratorsdescription: Windows Domain Members can fully administer the computer/domain

dn: cn=Users,ou=Groups,dc=martymac,dc=comdescription: Ordinary usersobjectClass: posixGroupgidNumber: 221cn: Usersdescription: Windows Domain Ordinary users

dn: cn=Guests,ou=Groups,dc=martymac,dc=comdescription: Users granted guest access to the computer/domainobjectClass: posixGroupgidNumber: 222cn: GuestsmemberUid: nobodydescription: Windows Domain Users granted guest access to the computer/domain

dn: cn=Power Users,ou=Groups,dc=martymac,dc=comdescription: Members can share directories and printersobjectClass: posixGroupgidNumber: 223cn: Power Usersdescription: Windows Domain Members can share directories and printersdn: cn=Account Operators,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 224cn: Account Operatorsdescription: Windows Domain Users to manipulate users accounts

dn: cn=Server Operators,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 225cn: Server Operatorsdescription: Windows Domain Server Operators

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 7/30

Page 8: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

dn: cn=Print Operators,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 226cn: Print Operatorsdescription: Windows Domain Print Operatorsdn: cn=Backup Operators,ou=Groups,dc=martymac,dc=comobjectClass: posixGroupgidNumber: 227cn: Backup Operatorsdescription: Windows Domain Members can bypass file security to back up files

dn: cn=Replicator,ou=Groups,dc=martymac,dc=comdescription: Supports file replication in a domainobjectClass: posixGroupgidNumber: 228cn: Replicatordescription: Windows Domain Supports file replication in a domain

- Insertion de cet arbre dans l'annuaire LDAP : ldapadd -W -D 'cn=Manager,dc=martymac,dc=com' -f base.ldiff

LDAP estmaintenantprêt à recevoirnosutilisateurs,aussibien Unix que Samba.On remarqueque l'arbrecomprend3 branchesprincipales: Groups,Users,et Computers,destinéesà stocker,respectivement: lesGroupesd'utilisateurs,lesUtilisateurs(reliésauxgroupes via le gid) et les Ordinateurs.

Nousallonsbientôtpouvoirnousidentifier via LDAP : il restemaintenantà configurernotresystèmepourqu'il utilise notreserveurpour l'authentification.

d) Configuration des méthodes d'authentification du Système

1) Configuration de Nsswitch

- La configuration générale de libnss-ldap se fait via le fichier /etc/ldap/ldap.conf (cf ci-après)

Copie de /usr/share/doc/libnss-ldap/examples/nsswitch.ldap vers /etc/nsswitch.conf et modification :

passwd: files ldapgroup: files ldapshadow: files ldap

hosts: files dns

services: ldap [NOTFOUND=return] filesnetworks: ldap [NOTFOUND=return] filesprotocols: ldap [NOTFOUND=return] filesrpc: ldap [NOTFOUND=return] filesethers: ldap [NOTFOUND=return] files

netmasks: filesbootparams: filespublickey: filesautomount: files

aliases: filesnetgroup: files nis

- Attentionpour"hosts": si vousajoutezl'annuaireLDAP commesourcededonnées,vousavezdegrandechancedetombersurunproblèmederécursivité,où le systèmeessaieraderésoudrele nomdu serveurLDAP via le serveurLDAP... dont il n'apasrésolulenom !

2) Configuration de Pam

- La configuration générale de libpam-ldap se fait via le fichier /etc/ldap/ldap.conf (cf ci-après)

Modification de /etc/pam.d/system-auth (cf /usr/share/doc/libpam-ldap/examples/pam.conf)

auth required /lib/security/pam_env.soauth sufficient /lib/security/pam_unix.so likeauth nullokauth sufficient /lib/security/pam_ldap.so use_first_passauth required /lib/security/pam_deny.so

account required /lib/security/pam_unix.soaccount sufficient /lib/security/pam_ldap.so

password required /lib/security/pam_cracklib.so retry=3 type=password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadowpassword sufficient /lib/security/pam_ldap.so use_authtokpassword required /lib/security/pam_deny.so

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 8/30

Page 9: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

session required /lib/security/pam_limits.sosession required /lib/security/pam_unix.sosession optional /lib/security/pam_ldap.so

- Modification dechaquefichier nécessaire(suivantlesbesoins)dans/etc/pam.dpourajouterLDAP àpam(pam_ldap.so).A chaquefichier correspond un service. Exemple avec /etc/pam.d/ssh :

auth sufficient pam_ldap.soauth required pam_nologin.soauth required pam_unix.soauth required pam_env.so # [1]

account sufficient pam_ldap.soaccount required pam_unix.so

session sufficient pam_ldap.sosession required pam_unix.sosession optional pam_lastlog.so # [1]session optional pam_motd.so # [1]session optional pam_mail.so standard noenv # [1]session required pam_limits.so

password sufficient pam_ldap.sopassword required pam_unix.so

- Installation du module pam_cracklib.so (si manquant) : apt-get install libpam-cracklib

3) Configuration générale des librairies libpam-ldap et libnss-ldap

Modification de /etc/ldap/ldap.conf (cf /usr/share/doc/libpam-ldap/examples/ldap.conf) :

BASE dc=martymac,dc=comHOST 127.0.0.1ldap_version 3

nss_base_passwd dc=martymac,dc=com?subnss_base_shadow dc=martymac,dc=com?subnss_base_group ou=Groups,dc=martymac,dc=com?one

rootbinddn cn=Manager,dc=martymac,dc=compam_password md5ssl no

- Créationdu fichier /etc/ldap.secret: echo"secret"> /etc/ldap.secret, contenantle mot depassedu rootbinddnpour lesmisesà jourde la base.

4) Configuration de smbldap-tools

- Editer le fichier /usr/share/perl/5.6.1/smbldap_conf.pm et spécifier chaque option (n'en oubliez pas !!!)

Modification des smbldap-tools (0.7) :

Il sembleraitqu'OpenLDAP,dans les versionsrécentes,vérifie de manièreplus approfondiela hiérarchiedes objets utilisés.Lorsqu'ondésireajouterun compte machine(cf. plus loin), smbldap-toolsutilise un objet posixAccount,qui n'estpasun objetStructurel('parent'): il s'agitd'un objetde typeAuxiliaire ('fils'), cequ'il signifie qu'il dépendd'uneautreclassequi estici account.smbldap-tools utilise, dans ses fonctions d'ajout de comptes machines, l'objet posixAccount sans l'objet account, ce qui a pour effet lerefus de la part du serveur LDAP d'ajouter l'enregistrement à la base (cf rfc2307 - ceci ne devait pas poser problème avec les versionsantérieures de LDAP). Il faut pour ceci modifier les smbldap-tools.- Editer /usr/share/perl/5.6.1/smbldap-tools.pm et ajouter account avant toute utilisation de posixAccount (2 fois dans le fichier)

e) Premiers tests de connexion

- Création d'un utilisateur avec smbldap-tools : smbldap-useradd.pl -m testuser1- Modification de son mot de passe : smbldap-passwd testuser1- On peut voir si cet utilisateur est bien connu du système : getent passwd- Test de connexion avec cet utilisateur depuis la machine Unix : ssh -l testuser1 localhost. Normalement, tout est Ok(Si vous êtes confronté à un problème comme : 'Authentication service cannot retrieve authenticationinfo', cela provientcertainement de la configuration des fichiers dans /etc/pam.d. Ré-éditez ces fichiers pour ajouter le module pam_ldap.so).- Listing du user : ldapsearch -b 'dc=martymac,dc=com'- Suppression du user : smbldap-userdel testuser1 et effacement de son home 'bidon' sur le disque

A ce stade, nous pouvons nous authentifier sur le système via LDAP, il nous reste à installer samba et à le configurer...

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 9/30

Page 10: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

VI) Configuration de Samba

a) L'Impression

- Installation de CUPS : Common Unix Printing System (apt-get install cupsys cupsys-client cupsys-bsd cupsomatic-ppd cupsys-driver-gimpprint)- Configuration de CUPS (édition de /etc/cups/printers.conf ou via http://localhost:631/admin)Nousallonsutiliser sambacommeun serveurde spool uniquement,ce qui signifie qu'il ne fera aucuneconversionde données,iln'agiraquecommeunemémoiretampond'impression/gestionnairede file d'attente.En d'autrestermes,il faudraquechaqueclientenvoiele type de donnéesattenduespar l'imprimante,et donc,disposedu driver approprié.Celui-ci seradisposédansun partagesamba appelé print$.- Modification de /etc/cups/mimes.typeset /etc/cups/mimes.convspour décommenterles lignes application/octet-streamen fin defichier. Ceci va permettre à cups de gérer l'impression 'brute' que l'on va utiliser.- Tester cups pour voir si l'impression fonctionne.

b) Configurer Samba

- Modification du fichier /etc/samba/smb.conf :

[global] ; le nom de notre domaine workgroup = RED ; notre nom de machine netbios netbios name = RED-PDC ; le nom complet server string = RED PDC Server encrypt passwords = Yes

; Synchro pass Unix passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u passwd chat = *new*password* %n\n *new*password* %n\n *successfully* unix password sync = Yes

; Logs log file = /var/log/samba/%m.log log level = 2 max log size = 5000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

; Infos Domaine ; Win9x + NT PDC domain logons = Yes os level = 65 ; Force election master browser + avantage :) preferred master = Yes ; Master browser domain master = Yes ; Participer aux election du local master browser local master = Yes

dns proxy = No ; Serveur Wins actif (un seul par reseau) wins support = Yes

security = user

; LDAP ldap suffix = dc=martymac,dc=com ldap admin dn = cn=Manager,dc=martymac,dc=com ldap port = 389 ldap server = 127.0.0.1 ldap ssl = No ; Impression load printers = yes printing = cups printcap name = cups

; Prise en charge du francais character set = iso8859-1

; Ajout de machine via smbldap-tools add user script = /usr/local/sbin/smbldap-useradd.pl -w %u domain admin group = " @"Domain Admins" "

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 10/30

Page 11: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

; Répertoire homes[homes] comment = Home Directories valid users = %S read only = No create mask = 0664 directory mask = 0775 browseable = No

; Répertoire scripts[netlogon] comment = Network Logon Service path = /opt/samba/netlogon guest ok = Yes

; Répertoire de profils[profiles] path = /opt/samba/profiles writeable = yes browseable = no create mode = 0644 directory mode = 0755 guest ok = yes

; Partage d'imprimantes[printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No writable = no guest ok = yes public = yes printer admin = printadmin

; Partage des drivers d'imprimantes[print$] comment = Printer Drivers path = /etc/samba/drivers browseable = yes guest ok = no read only = yes write list = printadmin

; Un partage...[tmp] comment = Temporary file space path = /tmp read only = No guest ok = Yes

; Un autre partage...[doc] path = /usr/share/doc public = yes writable = no read only = no create mask = 0750 guest ok = yes

- Création du répertoire /opt/samba/profiles : pour le stockage des profils- Création du répertoire /opt/samba/netlogon : pour le stockage des scripts de connexion- Le partage [homes] est mappé sur /home par défaut

- Changement du mot de passe de l'admin LDAP (rootdn) pour samba : smbpasswd -w secret (création de /var/lib/samba/secrets.tdb, attention à la sécurité : fichier non chiffré !)

- Création du compte administrateur de domaine : smbldap-useradd.pl -a -m -g 200 administrator- Mot de passe : smbldap-passwd administrator

c) Revenons à l'impression

Finissons la configuration de l'impression :- Création du répertoire /var/spool/samba : répertoire de spool d'impression, contiendra les données en cours d'impression- Gestion des droits sur ce répertoire : chmod 775 /var/spool/samba- Création de /etc/samba/drivers qui contiendra nos drivers d'imprimante (partagés par print$), y copier les fichiers nécessaires

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 11/30

Page 12: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Créer l'utilisateur printadmin, qui sera l'administrateur du système d'impression :- smbldap-useradd.pl -a -m -g 226 printadmin- smbldap-passwd.pl printadmin

d) Test : Joindre une machine au domaine

- Redémarrage de samba : /etc/init.d/samba restart- Exécution de 'testparm' pour vérifier la configuration de samba : ok- Test du serveur samba : 'nmblookup RED-PDC' et 'smbclient -N -L RED-PDC', Le nom netbios est normalement trouvé et les partages affichés.

Note : Pour pouvoir contacter le contrôleur de domaine, la station a trois possibilités (dans l'ordre) :- Elle contacte le serveur Wins indiqué dans les propriétés Tcp/Ip pour obtenir des informations sur le contrôleur de domaine- Elle recherche les informations dans le fichiers lmhosts local (C:\winnt\system32\drivers\etc\lmhosts)- Elle broadcast sa demandePoureffectuerla jonctionsaudomaine,vousavezdoncle choix. Pouréviter lesproblèmes,je vousconseilleraisplutôt d'utiliserunestationWindowssurle mêmeréseauIP quele PDC(afin d'utiliser la méthodedu broadcast),cependant,vouspouvezaussiindiquerle serveurWins (non testé! - ici notre serveurSamba)en le configurantdansles propriétésTcp/Ip du poste,ou bien encorelaméthode du fichier statique, dont voici un exemple :

#Fichier lmhosts192.168.1.10 RED-PDC #PRE #DOM:RED192.168.1.10 "RED \0x1C" #PRE192.168.1.10 "RED \0x1B" #PRE

Attention,le nomnetbiosprécédant"\0x1C" ou "\0x1B" doit faire exactement15 caractères...("\0x1B" déclareun PDC,et "\0x1C"un contrôleurde domaine).Pour rechargerle cachenetbiosde notre machineWindows, il suffit ensuited'exécuterla commandenbtstat -R, puis pour vérifier le cache : nbtstat -c.

Pour joindre le domaine,il faut disposerd'un comptemachineautorisédansLDAP, si toutefois ceci n'était pas le cas,sambal'ajouterait automatiquementgrâceà l'option : add user script = /usr/local/sbin/smbldap-useradd.pl-w %u du fichier smb.conf.Cependantceci peut poserproblèmedanscertainscas,provocantdeserreursdu côté de la machineWindows. J'ai en effet étéconfrontéàun problèmeétrange: lors dela jonctionaudomaine,la machineestcrééeautomatiquement,maisuneerreursurvient; ilfaut alorsà nouveaurejoindrele domaineavecle comptemachinecréépour quetout fonctionnecorrectement.Si l'on veutajoutermanuellement une machine :- smbldap-useradd.pl -w RED-CLIENT$Si cette commande pose problème, peut-être avez-vous oublié de modifier smbldap-tools ? (cf. plus haut)

A ce stade,il n'estpasencorepossiblede rattacherla machineau domaine,car on ne disposepasd'un utilisateurayantce droit(uid=0, gid=0). Nous allons le créer.- Ajout d'un utilisateur 'rootadmin' pour ajouter une machine au domaine : - smbldap-useradd.pl -a -m -g 200 rootadmin - smbldap-usermod.pl -u 0 -g 0 rootadmin - smbldap-passwd.pl rootadminAttention à ne pas créer un utilisateur nommé 'root', pour éviter conflits avec le vrai root local !!!La machine peut maintenant rejoindre le domaine.

e) Test : Se connecter au domaine avec un utilisateur

Si l'on ouvreunesessionavec'administrator'sur le domaine,windowsne trouvepassonprofil itinérant.Il s'agitd'unproblèmededroitssurle répertoire/opt/samba/profiles: le groupedel'utilisateuradministratorn'apasle droit d'écrituresurcerépertoire.Celanepose pas de problème en soi, car l'administrateur de domaine ne nécessite pas de profil itinérant.

Nous allons maintenant ajouter un utilisateur au domaine :- smbldap-useradd.pl -a -m -g 221 utilisateur- smbldap-passwd.pl utilisateur

Cetutilisateurpourrase"logger" avecsoncomptesousUnix ET Windows; si l'on veutqu'il nepuissepasse"logger" sousUnix, ilfaut préciser un home "/dev/null" et un shell "/bin/false", en le créant ainsi : smbldap-useradd.pl -d /dev/null -s /bin/false -a -m -g 221utilisateur, ou bien tout simplement ne pas installer la gestion de LDAP pour pam sur la machine Unix.

Vérifier que son groupe ait bien le droit d'écriture sur /opt/samba/profiles :- chown :Users /opt/samba/profiles- chmod 775 /opt/samba/profiles (ce qui équivaut normalement à un chmod g+w /opt/samba/profiles)

Vérifier également qu'il n'ait pas trop de droits sur /opt/samba/netlogon :- chmod 555 /opt/samba/profiles et chmod 400 sur chaque script du répertoire

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 12/30

Page 13: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

On peut désormais se "logger" avec cet utilisateur sur le domaine :)

Note : l'utilisateur 'rootadmin' peut, lui aussi, bénéficier d'un profil car il dispose de tous les droits...

f) Test : Imprimer

- Connectez-vous sur le poste client Windows en administrateur local et ajoutez l'imprimante partagée- Vous pouvez maintenant imprimer à partir de n'importe quel utilisateur du domaine.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 13/30

Page 14: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Etape 2 : Le PDC devient machine à part et interroge notre serveur LDAP

VII) Etape 2 : Cas d'un serveur LDAP distant

L'annuaire LDAP est maintenant externalisé

Nousavonsvu le casd'unserveurSambadisposantde l'annuaireLDAP localementet bouclantsur lui même.Cecin'étantpasle butd'un serveurLDAP (de tournerlocalement),oublionsnotre machineautonome(redpdc.martymac.com) pour la laisseren serveurLDAP, renommons-lapar la même occasion blueldap.martymac.com.Introduisonsune nouvelle machine à notre réseau:bluepdc1.martymac.com.Voici doncun résumédesétapesà suivresi l'on désireinstallerun PDCsambaetutiliser unserveurLDAPnonplus local, maisdistant.Jenedétaillepasici lesdifférentesétapes,ellessontidentiquesauxétapesdécritesprécédemmentdansce document. Voici les étapes à accomplir, dans le cas d'un poste vierge, nous changeons ici le nom du domaine pour l'appeler BLUE:

Sur la première machine (Serveur LDAP, appelé "blueldap.martymac.com") :- Installation d'OpenLDAP (processus identique à celui déjà décrit - on peut conserver notre configuration)

Sur la deuxième machine (PDC, appelé "bluepdc1.martymac.com" - domaine : BLUE, nom netbios : BLUE_PDC) :- Installer ldap-utils- Installer Samba et le configurer- Installer Smbldap-tools et les configurer- Installer libpam-ldap (facultatif)- Installer libnss-ldap et le configurer, ainsi que /etc/nsswitch- Installer nscd, le démarrer- Initialiser le password samba LDAP avec 'smbpasswd -w secret' et démarrer samba.- Créer le user avec uid 0 et gid 0 pour l'inscription au domaine. Attention un seul utilisateur de ce type est autorisé (à cause de l'uid ; de plus, un utilisateur ayant le gid à 0 ne peut pas joindre un domaine).- Régler les droits sur les répertoires profiles, home et netlogon. En cas de problème lors chown/chgrp/chmod, vérifier que le systèmea bien accèsaux comptesLDAP. Parfois,un simple redémarragede nscdsuffit ; penserà revoir égalementla configurationdensswitch et de libnss-ldap.

Les configurationsdiffèrent évidemmentà chaqueétapeau niveau des informationsconcernantle serveurLDAP, puisqu'il estmaintenantdistant...Il est possibled'interrogerl'intégralité de notre arbreLDAP (donc de testerl'accèsà notre serveur)avec lacommande: ldapsearch-b 'dc=martymac,dc=com'-xh blueldap.martymac.com. Si vous avezconservéla machinede l'étape1,pensez à stopper Samba, afin de ne pas avoir deux PDC sur le même réseau !

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 14/30

Utilisateur

PDC[homes][profiles][netlogon]

AnnuaireLdap

Page 15: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Etape 3 : Ajout d'un BDC à notre infrastructure

VIII) Etape 3 : Mise en place d'un BDC

La miseenplaced'un BDC dansnotreréseauva permettrede séparerla fonction d'authentificationdecelle du partagede fichiers,jusqu'alors assurée par le même poste.

Nous allons donc avoir trois serveurs distincts : - Le serveur LDAP, qui fournira des informations sur les comptes utilisateurs, - Le PDC, qui permettral'authentificationdes utilisateurs(via des requêtesauprèsdu serveurLDAP) et le partagedes scriptsnetlogon, - Le BDC, qui assureradeuxtâches: le partagedefichiersprincipaux(homes,profiles)et l'authentificationdesutilisateurssi le PDCtombe en panne.

Cettedécentralisationpermetde supprimerles pointssensiblessurnotreréseau,de limiter les gouletsd'étranglement,et d'éviter lasynchronisationdesfichierssmbpasswdentrele PDCet le BDC. Il seraitmêmeici vivementconseillédemettreenplaceun secondserveurLDAP - synchroniséavecle premier- qui prendraitle relai du premieren casde défaillance; mais rassurez-vous,chaquechoseen son temps,nousaborderonsce point plus loin ! Nous allonspour l'instant laissernotre serveurLDAP seul,affrontersadestinée.Autre détail : commevousavezpu le constater,le partagenetlogonestinséparabledu PDC(il estimpossibledepasseruncheminUNC au niveaudu fichier smb.confou de l'annuaireLDAP)... nousle laisseronsdonc sur celui-ci, ce qui ne posepasdeproblèmemajeur: seulsles scriptsne serontpasaccessiblesen casde pannedu PDC. Pour remédierà cela,plusieurssolutionspourraientêtreenvisagées(quel'on ne va pasmettreenoeuvrecar leur intérêtn'estpasprimordial): avoir deuxpartagesnetlogon:sur le BDC et le PDC, et monter,via NFS par exemple,les scriptsdu BDC sur le PDC ; secondesolution : avoir deux partagesnetlogon : sur le BDC et le PDC, et synchroniser les scripts via rsync ou rcp entre le PDC et le BDC...

Voici un schéma récapitulatif de tout ceci ; laissons le partage netlogon au PDC.

a) Processus de montage du répertoire Home d'un utilisateur

Le BDC assure le partage des fichiers de l'utilisateur

1 : L'utilisateur demande l'authentification sur le domaine auprès du PDC2 : Le PDC se connecte au serveur LDAP pour vérifier la validité du compte utilisateur[2 bis] : Le BDC (si le PDC est en panne) se connecte au serveur LDAP pour vérifier la validité du compte utilisateur3 : L'annuaire LDAP répond au PDC[3 bis] : L'annuaire LDAP répond au BDC (si le PDC est en panne)4 : Il autorise (ou non) l'utilisateur à accéder aux ressources du domaine5 : Si l'utilisateur est autentifié, il peut accéder au BDC, et demander l'accès à une ressource (son Home)6 : Le BDC lui fournit cet accès

b) Configurons notre BDC

La configurationdu BDC sefait à peuprèsdela mêmemanièrequele PDC,à la différencedesoptionsd'électionsprésentesdanslefichier smb.confqu'il faut modifier. Le BDC doit, lui aussi,disposerd'un nsswitchmodifié, ainsi quede la librairie libnss-ldap.Labaseldap-client(ldapsearch,ldapadd,etc...)peutêtreun plus, tout commeles smbldap-tools.Enfin, puisquel'un desbutsdu BDCestde fournir les partagesréseaux,on va pouvoir supprimerquasimenttous les partagesau niveaudu PDC pour ne laisserque lasection[global] et [netlogon].En ce qui concernel'authentification,nousn'auronspasbesoinde répliquerles comptesutilisateurspuisqu'ils sont centralisés sur notre annuaire LDAP (qui contient les entrées normalement stockées dans le fichier smbpasswd).

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 15/30

Utilisateur

BDC[homes][profiles]

AnnuaireLdap

PDC[netlogon]

4 1

32

56

2 bis 3 bis

Page 16: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Notre PDC a pour nom netbios BLUE_PDC, voici sa configuration samba (/etc/samba/smb.conf) :

[global] workgroup = BLUE netbios name = BLUE_PDC server string = BLUE PDC Server encrypt passwords = Yes

; Synchro pass Unix passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u passwd chat = *new*password* %n\n *new*password* %n\n *successfully* unix password sync = Yes

; Logs log file = /var/log/samba/%m.log log level = 2 max log size = 5000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

; Domaine ; Win9x + NT PDC domain logons = Yes os level = 65 ; Force election master browser + avantage :) preferred master = Yes ; Master browser domain master = Yes ; Participer aux election du local master browser local master = Yes

; Serveur Wins active (un seul par reseau) wins support = Yes

security = user

; SAMBA-LDAP declarations ldap suffix = dc=martymac,dc=com ldap admin dn = cn=Manager,dc=martymac,dc=com ldap port = 389 ldap server = blueldap.martymac.com ldap ssl = No

; Deactivate opportunistic locks (wised) ; opLocks = False ; encoding to french character set = iso8859-1

; using smbldap-tools to add machines add user script = /usr/local/sbin/smbldap-useradd.pl -w %u domain admin group = " @"Domain Admins" "

; Partages netlogon obligatoires en local[netlogon] path = /export/samba-test/netlogon comment = Network Logon Service guest ok = Yes

Voici la configuration de notre BDC, BLUE_BDC :

[global] workgroup = BLUE netbios name = BLUE_BDC server string = BLUE BDC Server encrypt passwords = Yes

; Synchro pass Unix passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u passwd chat = *new*password* %n\n *new*password* %n\n *successfully* unix password sync = Yes

; Logs log file = /var/log/samba/%m.log log level = 2 max log size = 5000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

; Domaine ; Win9x + NT PDC domain logons = Yes os level = 48 ; Force election master browser + avantage :) preferred master = No

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 16/30

Page 17: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

; Master browser domain master = No ; Participer aux election du local master browser local master = No

; Serveur Wins active (un seul par reseau) wins support = No

security = user ; SAMBA-LDAP declarations ldap suffix = dc=martymac,dc=com ldap admin dn = cn=Manager,dc=martymac,dc=com ldap port = 389 ldap server = blueldap.martymac.com ldap ssl = No

; Deactivate opportunistic locks (wised) ; opLocks = False ; encoding to french character set = iso8859-1

; using smbldap-tools to add machines add user script = /usr/local/sbin/smbldap-useradd.pl -w %u domain admin group = " @"Domain Admins" "

; Répertoires homes, à mapper via \\SERVEUR\utilisateur[homes] path=/export/samba-test/home/%u comment = Home Directories valid users = %S read only = No create mask = 0664 directory mask = 0775 browseable = No

; Répertoires profiles, à mapper via \\SERVEUR\profiles\utilisateur[profiles] path = /export/samba-test/profiles writeable = yes browseable = no create mode = 0644 directory mode = 0755 guest ok = yes

[tmp] comment = Temporary file space path = /tmp read only = No guest ok = Yes

[doc] path = /usr/share/doc public = yes writable = no read only = no create mask = 0750 guest ok = yes

Le BDC offre désormaislespartagesauparavantassurésparle PDC.Il vadoncfalloir y créerlesrépertoirespartagésgénériques,(ici/export/samba-test/home et /export/samba-test/profiles), ainsi que le répertoire home de chaque utilisateur :

Exemple pour l'utilisateur blueuser :- mkdir /export/samba-test/home/blueuser - chown blueuser:Users /export/samba-test/home/blueuser- chmod 755 /export/samba-test/home/blueuserIl faut aussi régler les droits du répertoire profiles de la même manière que pour le PDC :- chown :Users /export/samba-test/profiles- chmod 775 /export/samba-test/profilesNe pas oublier d'initialiser le password samba LDAP :- smbpasswd -w secretEnfin, il ne faut pasoublier de synchroniserle SID du BDC aveccelui du PDC. Le SID serastockédansle fichier secrets.tdb,lemême qui stocke le mot de passe LDAP. Sur le BDC (le PDC doit être joignable) :- smbpasswd -S -r BLUE_PDC

Voilà, si on démarrele PDC et le BDC, la stations'authentifierasur le PDC et monterales partagesdu BDC. Si le PDC tombeenpanne, la station devrait s'authentifier sur le BDC. Effectuons quelques tests pour confirmer ceci...

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 17/30

Page 18: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

c) Test : le BDC prend-il correctement le relai en cas de panne du PDC ?

Nous allons effectuer ces tests avec un client WinXP, appelé BLUEWKS (Blue Workstation).

Le problèmemajeurpour testerla validité de notreconfigurationestquenotremachineWindowspeutauthentifierelle-mêmeunutilisateur s'il s'est déjà connecté sur le domaine à partir de celle-ci. Pour être plus clair, voici un exemple : on crée un utilisateur sousLDAP, le PDCet le BDC sontenmarche.Si on se"log" à partir denotrestationWindows,tout fonctionnenormalement.Couponsmaintenantle PDCet le BDC. Normalement,nousn'avonsplusdeDC pournousauthentifiersur le domaine...Erreur: notrestationva quand même le faire : elle a gardé l'utilisateur en cache.Ceci offre un avantage: si le PDC et le BDC tombenten panneen mêmetempssur un réseau(peuprobable),nousavonsquandmêmela possibilitéd'utiliser la station.L'inconvénientestquedesproblèmesde sécuritépeuventseposer...Quelssont-ils? Toutsimplementla non-concordancedesbasesd'utilisateurs.Imaginonsqu'unutilisateursoit suppriméde la baseLDAP aprèsque lePDCet le BDC soienttombésenpanne,l'utilisateurpeuttoujoursseconnecterà la stationtandisqu'il a normalementétérayédelaliste des utilisateurs valides !

Maintenant que nous savons à quoi nous en tenir, testons un peu notre configuration...

- PDC et BDC démarrés- Création d'un utilisateur sous LDAP- On peut se connecter avec l'utilisateur, on dispose des scripts netlogon (ceci est normal, ils sont sur le PDC)- Extinction du PDC- On peut se connecter avec l'utilisateur, on ne dispose plus des scripts netlogon (ceci est normal, il n'y en a pas sur le BDC)Problème: a-t-onbienétéidentifiéspasle BDC ? Ne serait-cepasla machineWindowsqui l'aurait fait (carsi on éteintle BDC, onobserve ici le même résultat : je vous assure que c'est bluffant) ? Voyons ceci, continuons...- Supprimons l'utilisateur sous LDAP- On ne peut plus se connecter avec l'utilisateur... C'est bien le BDC qui nous a authentifiéSi celan'estpasle cas,c'estquec'estvotremachineWindowsqui vousa authentifié,on enrevientauproblèmecité ci-dessus: ellen'estpassynchroniséeavecLDAP et nesaitdoncpasquel'utilisateura étésupprimé.Parcontre,le BDC, lui, interrogeconstammentl'annuaire, donc si votre machine passe par lui pour l'authentification, vous êtes refusé, ce qui se passe ici.

La suppressiond'un utilisateurpermetde manièreflagrantede savoirsi la machineWindowsfait appelou non à un contrôleurdedomainepour s'authentifier.Dès qu'un contôleur de domaineest en marche,tous les problèmesd'incohérenceconcernantlesutilisateursdisparaissent.Si on les éteintpuis que l'on supprimeou que l'on ajoutedesutilisateurs,la machineresteen "solo" etconservesesanciennesdonnéespour l'authentification.D'où une impossibilité de se connecteralors qu'un utilisateur existe etinversement.

Le BDC a bien pris le relai du PDC tombé en panne... Mais lors de la reprise de celui-ci, que se passe-t-il ? Continuons notre test...

- Le PDC est toujours éteint et le BDC allumé- Création d'un utilisateur sous LDAP- On peut se connecter avec l'utilisateur, mais pas de scripts netlogon (ce qui correspond bien à notre BDC)- Démarrage du PDC- On peut se connecter avec l'utilisateur, avec scripts netlogon, le PDC a bien pris le dessus sur notre BDC

La présenceou non de scriptsnetlogonnouspermetdesavoir ici quel estle DC qui nousa authentifié.Ceci estvalabledansnotrecas car seul le PDC possède le partage netlogon...

En casdepanique,si rien nefonctionne,n'oubliezpasqueles logssontunesourced'informationtrèsimportante(généralementdans/var/log/samba),n'hésitezpasà lesconsulter! Lestestsqueje vousprésenteici permettentdesefaire rapidementuneidéedecequisepassemaisneremplacentpasles informationsdétailléescontenuesdanscesprécieuxfichiers!!! Pensezégalementà vousassurerque les SID de domainessont bien synchronisésentre le PDC et le BDC avec la commandesmbpasswd-S -r BLUE_PDC (àexécutersur le BDC), si cen'estpasle cas,vousrisquezdevousarracherlescheveux,le BDC refusantdeprendrele relai du PDC,mais recevant quand même la demande de la machine Windows... attendez vous à des heures de recherche (je suis passé par là...) !

IX) Plus loin : La gestion des ACLs

Cettepartie est assezgénéralisteet peut concernerindifféremmentle PDC, le BDC ou les deux... ! A vous de voir, selon vosbesoins... Dans mon cas, les deux serveurs en bénéficient !

LesACLs offrent unegrandesouplessedansla gestiondesdroitsdesutilisateurs.Alors quelesdroitsPOSIXdéfinissentuneliste de3 acteurs: User/Group/Others(utilisateur/groupe/touslesautres)intéragissantavecle systèmede fichier, lesACLs permettentd'enajouterà songréparmi la liste desutilisateurs/groupesexistants.On ne va pasrevenirsur le débat"ACLs vs POSIX", maissachezqu'il est vrai que l'on peut gérerdesdroits très fins en ayantpour sadispositionles droits POSIX (en jouant avecla créationdegroupes), comme il est vrai que cela peut être au prix d'une perte certaine de vos attributs capillaires !

IntégrerlesACLs sefait à trois niveaux: auniveaudu systèmedefichier, tout d'abord,ensuiteà celui de l'environnement,enfin auniveau de Samba. Nous allons procéder par étapes...

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 18/30

Page 19: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

a) Les ACLs au niveau du système de fichier

Il convienttout d'abordde bienchoisir sonsystèmede fichier. Il faut qu'il supporteles ACLs, évidemment.Parmiles systèmesdefichiers,nousavonsà notredispositionXFS,EXT2 (patchkernel),EXT3 (patchkernel)...Pourmapart, j'ai choisid'utiliserXFS,carc'est le seul à supporterles ACLs en natif, et il offre de bonnesperformances.Il faut généralementrecompilerle noyaude laditribution GNU/Linux pour bénéficier des ACLs, je vous passe les détails de cette opération, ceci étant une autre histoire...

Note : Les ACLs pour XFS ont été oubliées pour le noyau de la Mandrake 9.1, cf. : http://qa.mandrakesoft.com/show_bug.cgi?id=3615

b) Les ACLs au niveau de l'environnement

Il faut aussi que les binaires utilisés quotidiennement supportent les ACLs et que notre machine soit prête à compiler des applicationssupportantles acls, il faut donc encoreinstaller quelquespackages...libacl1, libacl1-dev,acl, libattr1, libattr1-dev,attr, libxfs1,xfslibs-dev, xfsdump et xfsprogs. En utilisant apt, cela se fait très rapidement.

Une fois tout ceci effectué (noyau/modules, packages...), nous allons tester si le FS supporte les acls :- touch document.txt- setfacl -m u:utilisateur:rw document.txt(il faut évidemment que l'utilisateur 'utilisateur' existe :))- getfacl document.txt

Si vousn'avezpaseudemessaged'erreurcomme'Operationnot supported'lors du setfaclet si vousretrouvezbienvotreACL lorsdu getfacl, c'est que vous avez bien tout installé et que ça marche, passons maintenant à la partie Samba...

c) Les ACLs au niveau de Samba

Votre FSsupportelesACLs, votresystèmeaussi...Il resteà demanderà Sambadelesgérer...Si vousavezcompiléSambaaveclesoptionsdécritesdansle IV) decedocument,vousavezintégrélesACLs. Sinon,il faut recommencer...L'option intéressanteici est'--with-acl-support'.

La deuxième(et dernièrechose)àeffectuerpourle supportdesACLs sousSambaestdemettre'nt aclsupport'à 'Yes'dansla section[global] ou celledu partagedansle fichier smb.conf.Notezquecetteoptionestpardéfautà Yes,maisparsoucidepropreté,mieuxvaut la spécifier...

d) Tests et limites

Jenevaispasdétaillertouteslesprocéduresde tests,ellessontrelativementsimples.Vouspouvez,pourvousfaire rapidementuneidée du bon fonctionnement de votre configuration, créer deux utilisateurs et vous amuser à changer leurs droits.

J'ai effectué pour ma part quelques tests plus approfondis et ai remarqué quelques détails :

- Les ACLs se limitent aux droits POSIX seulement (rwx)- Seul le propriétaire peut modifier les droits du fichier- Les refus explicites ne sont pas gérés- Si un utilisateur n'a pas le droit d'écriture sur un fichier, il peut tout de même en changer le nom ou le supprimer (!!!)- Comme d'habitude, les droits de l'utilisateur prévalent sur les droits du groupe

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 19/30

Page 20: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Etape 4 : Ajout d'un second serveur LDAP, réplica du premier

X) Etape 4 : Encore plus loin avec la réplication LDAP

Un second annuaire LDAP prend le relai si le premier tombé en panne

On remarqueunechoseimportantedansnotrearchitecture: la gestiondu failover sefait auniveaudesPDC/BDC: si le PDCtombeenpanne,le BDC prendcorrectementle relai.Cependant,quesepasse-t-ilsi c'estle serveurLDAP qui tombeenpanne? Là sesitueun gros problème: nous n'avonsplus accèsà notre based'utilisateurs,personnene peut plus s'authentifier...Nous allons voircomment mettre en place un système de réplication qui permettrait la redondance d'information en cas de panne du serveur LDAP.

La miseenplaced'untel systèmeesttrèssimple: le serveurmaîtrevasemettreà l'écoutedechaquemodificationapportéeà la baseet les renvoyerau serveurLDAP esclavequi mettrala sienneà jour, afin de la garder"up-to-date".Ceci se fait grâceau démonslurpd, côté maître : c'est lui qui se connecteraau démonslapdde l'escalvepour mettre la basede ce dernierà jour. Je passel'installation d'OpenLDAP côté esclave, vous devez commencer à connaître... Passons directement à la configuration !

a) Configuration côté maître

Il suffit de déclarerle réplica,un nouveauposteque nousappelleronsblueldap_backup.martymac.comet le fichier "replog" danslequel les changementsà la baseserontrépertoriés.Ce fichier seralu par slurpdqui seconnecteraau serveurLDAP esclavepourmodifier sa base. Modification du fichier slapd.conf :

replogfile /var/lib/ldap/replogreplica host=blueldap_backup.martymac.com:389 binddn="cn=Manager,dc=martymac,dc=com" bindmethod=simple credentials="secret"

b) Configuration côté esclave

Déclarationdu DN autoriséà répliquersa baseet du serveurmaîtreauquelse reporteren casde demandede modification desdonnées. Ceci se fait via le fichier slapd.conf du serveur esclave blueldap_backup.martymac.com :

updatedn "cn=Manager,dc=martymac,dc=com"updateref "ldap://blueldap.martymac.com"

C'est tout ce qu'il y a à faire concernant la configuration de nos serveurs LDAP. Il reste à lancer le démon slurpd sur le serveur maître(en plusdu démonslapd,évidemment...).Il faudraajouterà ceci un mécanismedefailover (ou de partagede charges,ou les deux,suivantles besoins)! Un mécanismed'IP virtuelle pourraitfacilements'encharger,approfondissonsun peule sujetaprèsquelquesremarques...

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 20/30

Utilisateur

BDC[homes][profiles]

PDC[netlogon] Annuaire

LdapMaître

AnnuaireLdap

Esclave

GestionFailover Réplication

Prise de relai si Pdc en panne

Page 21: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

c) Quelques remarques

Les explicationsci-dessussontvalablespour unebasevierge,car slurpdn'envoieau serveurLDAP esclaveque les modificationsapportées à la base. Si votre base contient déjà des informations, suivez cette manipulation, sur le serveur maître :- Dumpez la base dans un fichier : ldapsearch -b 'dc=martymac,dc=com' -xh blueldap.martymac.com > dump.ldiff- Supprimez dans ce fichier les quelques lignes de fin contenant les informations globales sur la recherche- Eteignez slapd et slurpd- "Backupez" vos fichiers de base situeés dans /var/lib/ldap : tar cvzf /tmp/ldap.back.tgz /var/lib/ldap- Supprimez les fichiers de la base : rm -rf /var/lib/ldap/*- Démarrez les démons slapd et slurpd- Enfin, insérez le contenu du fichier de dump : ldapadd -W -D 'cn=Manager,dc=martymac,dc=com' -f dump.ldiff- Vous devriez retrouver votre base initiale sur le serveur maître ET sur le serveur esclave qui aura reçu les mises à jour.

Notes :- Il estpossibled'ajouter/supprimerun enregistrementdansunebaseesclave,cependant,cet événementneserapastoujoursreportédansla basemaître.Ceci dépendde la directiveupdaterefqui redirige les requêtesde modificationvers le serveurLDAP maître.Attention, donc, aux incohérences dans le cas d'une mauvaise configuration...- Nous avonsici dumpéla baseavec ldap-search,mais il est égalementpossibled'utiliser slapcat,ou de simplementcopier lesfichiers de données situés dans /var/lib/ldap !

d) Tolérance de panne (failover)

1) La théorie

Nousavonsvu commentimplémenterdesserveursLDAP redondants,maiscommentfaire pourinterrogerl'un ou l'autreenfonctiondeleur état? Avoir desserveursdisposantdesmêmeinformationsmaisnepaspouvoir interrogerle serveurB si le serveurA tombeen panne ne serait d'aucune utilité : il faut mettre en place un système de tolérance de panne.La méthodeque nousallons étudierest très simple : elle consisteà passerpar une addresseIP virtuelle. ChaqueserveurLDAPpossèdesapropreadresseIP, maisenpossèdeaussiunesecondequi seracommuneà tousles serveursredondants(un "alias"). Lesserveursdemeurentacessiblesvia leur "vraie" adresseIP, mais le sont désormaisaussipar leur nouvelle adresse.Côté client(Samba),nousinterrogeronsla baseLDAP via l'adresseIP virtuelle commune(et non la "vraie" adresse).Le passaged'unserveuràl'autreseferaparunemodificationdela tablederoutagedu posteclient, cecidemanièretotalementtransparentepour l'application:si le premier serveur tombe en panne, les données sont immédiatement redirigées vers le second.

Nousabordonslà la partiela plusdifficile du sujet: la détectionde la panneet la remontéed'information.Cecipeutsefaire via unprotocolede routagemaisnousnouscontenteronsici d'un script qui testeraen permanencel'état desserveurset qui modifiera latable de routage, méthode simple à mettre en place et facilement contrôlable.

Il existebiend'autresméthodesde tolérancedepanne,notammentle NAT (NetworkAddressTranslation)ou le routagedynamique(via l'utilisation d'un protocolede routage),mais elles impliquent souventun matériel intermédiaire(routeur ou ordinateur).Leprincipe généralrestecependantle mêmeque celui que nousallons appliquerici : rendrela pannetransparenteau client par unmécanismede sélectiondu chemin.La solution que nous avonschoisie est peu onéreuse: aucunmatériel supplémentairen'estnécessaire ; elle n'est cependant pas conseillée dans un environnement de production !

Quelques concepts à respecter :

- Il faut forcer le client à consultersa table de routagepour sélectionnerle cheminque les packetsdoivent prendre.En d'autrestermes,l'adresse IP virtuelle ne doit pas être sur le même sous-réseau IP quele client. En effet, si le serveurdistantestsurle mêmesous-réseauquele client, lespacketspourrontêtreacheminéssanspasserparunemachinetierce(routeur),cequi, dansnotrecas,nenousintéressepas.Poursélectionnernotrechemin,nousallonsdoncindiquerauclient quel'adresseIP virtuelle (non joignale)peutêtrecontactéeenutilisantunepasserellequi n'estautrequela "vraie" adresseIP du serveurLDAP à contacter.Celui-ci sechargerade la transmission des packets à son interface virtuelle. Voilà comment nous allons sélectionner nous même le "bon" serveur LDAP.- L'utilisation de nosserveursLDAP commegatewaysimpliqueaussiqueleursinterfacessoit dans le même sous-réseau IP queleclient.

En résumé :

Sur le PDC samba :- Configuration de Samba et des services clients LDAP pour interroger le serveur LDAP via son adresse IP virtuelle- Sa table de routage lui indiquera par où passer pour atteindre l'adresse IP virtuelle du serveur LDAP. - Modification dynamique de sa table de routage, via un script, en fonction de l'état des serveurs

Sur les serveurs LDAP :- Adresse IP dans le même sous-réseau que le client (pour servir de gateway)- Ajout d'uneinterfacevirtuelle ayantuneadresseIP communeà tousles serveursredondants,maisappartenant à un sous-réseaudifférent (pour forcer le routage)- Réplication des données de l'annuaire

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 21/30

Page 22: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

2) La pratique

Schéma d'une connexion à l'aide d'une méthode de tolérance de panne (V.IP.)

Configuration des serveurs LDAP :

- On considère que les problèmes de réplication sont déjà réglés (cf. précédemment dans ce document).- Ajouter une adresse IP virtuelle à chacun des répliquas : ifconfig eth0:1 192.168.2.1 netmask 255.255.255.0

Configuration du client Samba (PDC, BDC) :

- Configurer Samba et les clients LDAP (libnss, libpam, ...) pour qu'ils interrogent le serveur LDAP via l'adresse IP virtuelle. Si vouspassezparun nomdemachine,ceci revientjusteà changerl'adresseIP associéeau nomd'hôte(auniveaudu serveurDNSou du fichier hosts), sinon, changez l'adresse IP directement.- Créer et exécuter le script de scrutage des serveurs qui modifiera la table de routage : voici un exemple de script :

#!/bin/sh# Script scrutant IP1 et IP2, et modifiant la table de routage# en fonction de l'état des machines. Necessite nmap.# Ganaël LAPLANCHE

# IP virtuelle du groupe de serveursVIP="192.168.2.1"# Interface de sortie de notre clientIFACE="eth0"# Premier serveurIP1="192.168.1.10"METRIC1="0"# Deuxième serveurIP2=" 192.168.1.15"METRIC2="5"# Tests a effectuer# Port distantTESTPORT="389"# Nom du serviceTESTSERV="ldap"# ProtocoleTESTPROTO="tcp"# Attente entre chaque boucleWAIT="5"

while true; do echo "[Test de ${IP1}]" nmap -sT ${IP1} -p ${TESTPORT} | grep "${TESTPORT}/${TESTPROTO}[ ]*open[ ]*${TESTSERV}"> /dev/null if [ $? -eq 0 ]; then route add -host ${VIP} metric ${METRIC1} gw ${IP1} dev ${IFACE} > /dev/null echo "${IP1} -- Ok : routage pour ${VIP}, metrique ${METRIC1}" else route del -host ${VIP} metric ${METRIC1} gw ${IP1} dev ${IFACE} > /dev/null echo "${IP1} !Ok : stop routage" fi

echo "[Test de ${IP2}]" nmap -sT ${IP2} -p ${TESTPORT} | grep "${TESTPORT}/${TESTPROTO}[ ]*open[ ]*${TESTSERV}"> /dev/null if [ $? -eq 0 ]; then route add -host ${VIP} metric ${METRIC2} gw ${IP2} dev ${IFACE} > /dev/null echo "${IP2} -- Ok : routage pour ${VIP}, metrique ${METRIC2}" else route del -host ${VIP} metric ${METRIC2} gw ${IP2} dev ${IFACE} > /dev/null echo "${IP2} !Ok : stop routage" fi

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 22/30

Table de routage du PDC Samba :"Pour atteindre 192.168.2.1/24,

passe par 192.168.1.10/24"

Script shellScrute l'état des serveurs

Modifie

LDAP 1(maître)

IP : 192.168.1.10/24VIP : 192.168.2.1/24

LDAP 2(esclave)

IP : 192.168.1.15/24VIP : 192.168.2.1/24

RéplicationPDCSamba

IP : 192.168.1.5/24

Serveurs Ok ?

Connexion vers LDAP1 ou LDAP2

Page 23: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

sleep ${WAIT} echo "-------------------------"doneexit 0

Cescript trèssimpleutilise nmappour testersi le port 389(LDAP) desserveursestbienà l'écoute.Si c'estle cas,il inscrit lesdeuxroutes,maisavecdesmétriquesdifférentes; cellequi a la pluspetitemétriqueestalorsutilisée.Si l'un ou l'autredesserveursvient àtomberenpanne(réseauou serveurLDAP), la routeestsupprimée,cequi a poureffet derendrel'autrerouteactive: l'autreserveurprend le relais.

XI) Toujours plus loin : communication SSL avec notre serveur LDAP

a) TLS : Pourquoi ?

Vousle savezpeut-être,maispardéfaut,lescommunicationsavecnotreserveurLDAP sefont enclair. Il suffit de"sniffer" le réseau(non switché) pour s'en rendre compte. Une personne mal intentionnée pourrait donc intercepter toutes les informations qu'il désire, ycompris les mots de passede nos utilisateurs(mêmechiffrés, ceux-ci sont précieux...On trouve de nombreuxoutils pour les"casser"...)! Une manièresimple de sécurisernos transactionsest de passerpar TLS (TransportLayer Security,anciennementSSLv3.0, renommé et normalisé par l'IETF, cf. RFC2246), qui assurera le chiffrement des données.

Jenevaispasrentrerdanslesdétailsd'unecommunicationvia TLS, cecidépasseraitle cadredu sujet.SachezsimplementqueTLSreposesurla couche4 (Transport)du modèleOSI,cequi lui permetdesécuriserlescommunicationsréseaudemanièretransparentepourlesapplications.Il reposesur l'utilisation declefssymétriqueset asymétriques,et introduit la notiondecertificatdélivréparuntiers, qui assure alors l'authenticité des clefs. Je vous vois soupirer, allez, encore une dernière explication avant la pratique...

b) Les clefs et les certificats

Vous le savezsansdoute,une pairede clefs estcomposéed'uneclef privéeet d'uneclef publique.Elles ont la particularitéd'êtreinséparables,car ce que chiffre l'une, l'autre peut la déchiffrer.Voilà pourquoion parlede clefs asymétriques.La clef privéeestdestinéeà êtregardéeprécieusementparsonpropriétaire,alorsquela clef publiquepourraêtrediffusée.Le principegénéralconsistealorsàchiffrer lesdonnéesavecla clef publiquedudestinataireafin qu'il puissela déchiffreravecsaclef privéeet êtreainsi le seulàpouvoir comprendre le message.

Le certificat vient juste introduire la notion d'authenticitédes clefs. Commentêtre sûr qu'uneclef publiqueest bien celle de lapersonneàqui l'on veutenvoyerdesdonnées? Le certificatnousoffre uneréponse: unesociététierce(deconfiance,uneautoritédecertification: CA) va certifier quela clef publiqueappartientbienà cettepersonne.Ainsi, plus dedoute,la clef estla bonne...nousévitons ainsi de nous faire piéger par une personne qui voudrait intercepter nos données (le fameux "homme du milieu")...

c) La pratique

Nous allons implémenterTLS sur notre serveurLDAP maître.Ne vous inquiétezpas,l'implémentationde TLS ajoute juste unecommandede type STARTTLS qui permet,si on le désire,de démarrerune transactionsécuriséesur le port standardLDAP. Ilresteratoujourspossiblede communiquer"en clair" avecnotre serveur.OpenLDAPdoit être compilé avecl'option --with-tls etOpenSSL doit être installé.

Dans la pratique, la mise en place de TLS se traduit par trois étapes :

- La génération des clefs/certificats côté serveur- La mise en place de TLS côté serveur- La mise en place de TLS côté client

1) Génération des clefs et du certificat

Nousallonsdanscetteétapepréparernotreserveurà l'utilisationdeTLS. Il va falloir générernotrepairedeclefset faire signernotreclef publique par une Autorité de Certification. Vous devez disposer d'OpenSSL.

Dans le répertoire /etc/ldap, créer un répertoire 'cert' qui contiendra les clefs et le certificat :mkdir /etc/ldap/cert

Dans ce répertoire, générez la clef privée du serveur :openssl genrsa -out serverkey.pem 1024Puis la clef publique et la demande de certificat (dans cert.req) :openssl req -new -key serverkey.pem -out servercert.reqComplétezcorrectementles informationsqui voussontdemandées.Pensezà bien renseignerle CN (CommonName)par le FQDN(nom dns) de votre serveur, celui qui sera utilisé lors de l'interrogation de la base LDAP par les clients.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 23/30

Page 24: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

Pour l'étapesuivante,vous avez le choix, soit vous envoyezla demandede certificat à une CA reconnuequi vous enverralecertificat, soit vous certifiez vous-même votre clef en vous faisant passer pour une CA. Nous allons voir comment faire...Mettons nous dans le peau d'une CA. Générez la clef privée de la CA :openssl genrsa -out cakey.pem 1024Puis son certificat propre (qui est alors autocertifié : on ne fait pas appel à une autre CA) :openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365La encore, complétez correctement les champs demandés. N'oubliez pas que vous êtes la CA...

Enfin, signature par la CA de la clef publique de notre serveur :openssl x509 -req -in servercert.req -out servercert.pem -CA cacert.pem -CAkey cakey.pem -days 365 -CAcreateserial

Suppression des fichiers temporaires :rm *.reqrm *.srl

Suppression de la clef privée de la CA :rm cakey.pem

Réglage des droits :La clef privée ne doit pouvoir être lue que par root :chown root:root serverkey.pem ; chmod 400 serverkey.pem

Voilà, vousdisposezdésormaisdesfichiersnécessairespourmettreenplaceTLS sur le serveur.Nousallonsvoir lesmodificationsàapporter dans le fichier slapd.conf...

2) Mise en place côté serveur

Modifier /etc/ldap/slapd.conf et ajouter les chemins vers les différentes clefs et le certificat :

# TLS# Chemin vers le certificat du serveur LDAPTLSCertificateFile /etc/ldap/cert/servercert.pem# Chemin vers la clef privée du serveur LDAPTLSCertificateKeyFile /etc/ldap/cert/serverkey.pem# Chemin vers le certificat de la CATLSCACertificateFile /etc/ldap/cert/cacert.pem

Attention de bien ajouter ceci dans la section globale.Si vousredémarrezvotre serveurLDAP, il devraitdésormaisêtrede capablede communiqueravecTLS. Cettecommunicationseferasur le port 389(standard,port LDAP) via la commandestarttlsqui activerala transactionsécurisée.Attention,ceciestdifférentd'une communication "purement" SSL, qui pourrait être mise en place sur le port LDAPS (636) via un tunnel SSL.

3) Mise en place côté client

Nous allons mettre en place TLS au niveau du PDC. Inspirez-vous de cet exemple pour le BDC, il s'agit de la même démarche...

La configurationdesoutils LDAP, delibnss-ldapet delibpam-ldapsefait, commed'habitude,via le fichier ldap.conf.N'hésitezpas,pour libnss-ldap et libpam-ldap, à consulter le fichier exemple fourni dans les tarball disponibles sur le site http://www.padl.com.

Pour autoriserles communicationsTLS, il faut modifier le fichier ldap.conf.Deux types de directivesexistent : les directivesOpenLDAPpureset lesdirectivesajoutéespar libpam_ldapet libnss_ldap.Ellessontsupplémentaires,l'oubli del'uneou l'autreferaquel'applicationqui l'utilise nefonctionnerapas.Cecipeutconduireà deserreursdifficiles àdiagnostiquer! Ajoutezceciaufichierldap.conf du PDC :

#Directive SSL OpenSSL (pour ldapsearch notamment)TLS_CACERT /etc/ldap/cert/cacert.pem

#Directives SSL libnss et libpam# Activation SSL brute (port 636)# ssl yes# Acivation SSL via commande starttls (port standard 389)ssl start_tls#Verifie certificat serveurtls_checkpeer yes# Emplacement certificat CAtls_cacertfile /etc/ldap/cert/cacert.pem

Le fichier 'cacert'doit être présentsur notre disque.Il s'agit du certificat de la CA. Il convientde le copier au bon endroit (ici/etc/ldap/cert/) depuis notre serveur LDAP.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 24/30

Page 25: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

4) Testons notre connexion sécurisée

Testons d'abord si les outils clients OpenLDAP fonctionnent :ldapsearch -b 'dc=martymac,dc=com' -ZZ -xh blueldap.martymac.com

L'ajoutde-ZZ forcela communicationenTLS. Vousdevriezvoir apparaîtrel'arborescencequenousavionsdéjàauparavant.Si vousavezuneerreur,vérifiez bienquele nomdu serveurutilisé pour la requêteestbien le nompassédansle CN lors de la demandedecertificat du serveur !

Testons ensuite la bonne configuration de libnss-ldap : exécutons 'getent passwd' et voir si nos utilisateurs LDAP sont bien listés...

Si tout cela fonctionne,c'estdéjàun bon point, cependant,est-cebien chiffré ? Pour s'enassurer,nousallonssniffer (écouter)leréseau avec tcpdump :

Sur le serveur LDAP, on écoute les connexions provenant de notre PDC : tcpdump -s0 -xX ip host bluepdc1.martymac.com and host blueldap.martymac.comSur le BDC, on rapatrie les entrées utilisateurs avec : getent passwd ou ldapsearch -b 'dc=martymac,dc=com' -ZZ -xh blueldap.martymac.comLe PDC va contacterle serveurLDAP pour y lire les informationsnécessaires.On voit alorsplusieurssegmentsTCPaffichésavectcpdump,maisrien n'estcompréhensible...Si l'on réitèrel'opérationencommentantleslignesconcernantla configurationnSSL,onpourra distinguer les informations rapatriées par notre PDC, la preuve que le flux de données est bien chiffré !

5) Mise en place pour Samba

Le but de toutceciétantdepouvoir intégrerTLS auxcommunicationsentreSambaet notreserveurLDAP, terminonscechapitreenvoyant comment modifier le fichier smb.conf du PDC :

; SAMBA-LDAP declarationsldap suffix = dc=martymac,dc=comldap admin dn = cn=Manager,dc=martymac,dc=com; Attention ! Comme d'habitude, il faut utiliser le nom de serveur donné en tant que CN pour le certificatldap server = blueldap.martymac.com; ldap ssl = Noldap ssl = start_tlsldap port = 389

Il suffit de rajouteruneligne à notreconfigurationprécédente: 'ldapssl= start_tls'.N'oubliezégalementpasdepréciserle port surlequelsambadevraseconnecter.Ici, le port est le port 389, puisquel'on utiliserala commande'starttls'sur uneconnexionLDAPstandard.Notezqu'il s'agitdu port pardéfautpouruneconnexionde type 'starttls',maisautantle spécifierpourenêtresûr.Vérifiezenfin quele nomde serveurpassépour la directive'ldapserver'correspondbienauCN utilisé lors de la générationdu certificatduserveurLDAP ! Si vousoubliezcepetit détail,sambanepourrapasétablirla connexionTLS et votrefichier de"log" vousindiquera: "TLS: can't connect", message qui n'est pas très explicite, vous êtes prévenus...

Pourvérifier quececifonctionne,"loggez"vousàpartir devotremachineclienteWindowset,auchoix : sniffezlesconnexionsentrele serveurLDAP et le PDC(cf. ci-avant),ou bienexaminezle fichier de log concernantla machineclientegénéréparSamba,vouspourrez lire, si tout se passe bien : "StartTLS issued: using a TLS connection" !

N'hésitezpasà configurertousvosclients/serveurspourpasserparTLS... Celapermetdemanièresimpledesécuriser(un peu)voscommunications.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 25/30

Page 26: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

XII) Conclusion

Cedocumenttoucheà safin. J'espèrequ'il vousa éclairésur lesdifférentesétapesà suivrepourinstalleret configurerSamba2.2+LDAP.

Il n'a pas la vocation(ni la prétention!) d'etreexhaustif...donc si vous avezdesquestions,descommentaires,des informationssupplémentaires ou si vous avez remarqué des erreurs, n'hésitez pas à me contacter à [email protected] !

Merci d'avoir parcouru ce Howto et Bonne chance !

XIII) Outils

Voici une petite liste d'outils très utiles :

Outils pour administrer LDAP :- directory-administrator, basé sur qt- gq, basé sur gtkOutils pour administrer samba/ldap :- smbldap-tools d'idealx, scripts Perl permettant d'administrer en ligne de commande des comptes Samba stockés sur LDAP- idxldapaccounts d'idealx, module permettant d'administrer, via webmin, des comptes Samba stockés sur LDAP

XIV) Liens / Bibliographie

Softs :http://www.openldap.orghttp://www.samba.orghttp://www.padl.com

Utilitaires :http://samba.idealx.orghttp://webmin.idealx.org

Howtos :http://samba.idealx.org/dist/samba-ldap-howto.pdfhttp://de.samba.org/samba/docs/Samba-HOWTO-Collection.pdfhttp://us3.samba.org/samba/ftp/docs/htmldocs/Samba-LDAP-HOWTO.htmlhttp://us3.samba.org/samba/ftp/docs/htmldocs/Samba-BDC-HOWTO.html

http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.htmlhttp://www.linuxmafia.com/~rick/lecture-notes/ldap

Tldp :http://www.tldp.org/HOWTO/LDAP-Implementation-HOWTO/

Livres :Linux mag' numéro 40 (p.37) et 46 (p.32)

Liste de diffusion Samba-fr :http://listes.ujf-grenoble.fr/wws/info/samba-fr

XV) Remerciements

Ce documenta étérégidéau seind'EDFR&D à Clamart.Merci à toutel'équipeet tout particulièrementà Vincent Gayrard,DavidLacoste, et Xavier Lemesle pour leur soutien et l'aide qu'ils ont su m'apporter !

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 26/30

Page 27: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

XVI) Annexes

A1) Exemple d'architecture avancée

Voici un exemple d'architecture intégrant les différentes technologies que nous avons étudiées :

Machines utilisées dans le cas des tests efectués :

PDC 1 : PIII 1.2 Ghz, 256 Mo Ram, GNU/Linux Debian 3.0r1, noyau 2.4.18BDC 1 : PIII 450 Mhz, 128 Mo Ram, GNU/Linux Mandrake 9.1, noyau 2.4.21

PDC 2 : PIII 733 Mhz, 128 Mo Ram, SCO Linux Server 4.0, noyau 2.4.19BDC 2 : PIII 733 Mhz, 128 Mo Ram, SCO Linux Server 4.0, noyau 2.4.19

LDAP maître : PIII 733 Mhz, 128 Mo Ram, GNU/Linux Debian 3.0r1, noyau 2.4.18LDAP esclave 1 : Machine similaire

LDAP esclave 2 : PIII 733 Mhz, 128 Mo Ram, GNU/Linux Mandrake 9.0PDC 3 : Même machine physique (loopback)

LDAP esclave 3 : PIII 733 Mhz, 128 Mo Ram, GNU/Linux Mandrake 9.0BDC 3 : Même machine physique (loopback)

LDAP esclave 4 : PIII 733 Mhz, 128 Mo Ram, GNU/Linux Mandrake 9.0BDC 4 : Même machine physique (loopback)

Notes :

- On distingue 3 domaines principaux. Ces domaines sont des (sous-)réseaux IP différents.- On distingue 2 sites, reliés par une liaison WAN.- Seul le serveur LDAP maître autorise la modification de ses données par une personne physique (binddn).- Les autres doivent limiter l'écriture par des Acls LDAP pour n'autoriser les mises à jour que par réplication (slurpd).- Dans le 3è domaine, les serveurs LDAP sont présents sur la même machine physique que le serveur Samba (interrogation par loopback), mais il est tout à fait possible d'introduire une machine tierce dans chaque cas.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 27/30

LdapMaître

LdapEsclave

1

GestionFailover(V.IP)

LdapEsclave

2

LdapEsclave

3

LdapEsclave

4Pdc 1[netlogon]

Bdc 1[homes][profi les]

Pdc 2[netlogon]

Bdc 2[homes][profi les]

Domaine 1

Site physique 1 Site physique 2

Domaine 2 Domaine 3

Wan

Bdc 3[homes][profi les]suivant

util isateur

Bdc 4[homes]

[netlogon]suivant

util isateur

Pdc 3[netlogon]

Loopback ou distant + Tls

Loopback ou distant + Tls

Réplication + Tls

Réplication + Tls

Loopback ou distant + Tls

Réplication + Tls

Page 28: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

GNU Free Documentation License

Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USAEveryone is permitted to copy and distribute verbatim copiesof this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effectivefreedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author andpublisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU GeneralPublic License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come withmanuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless ofsubject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms ofthis License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below,refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the workin a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated intoanother language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of theDocument to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is inpart a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject orwith related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document isreleased under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may containzero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released underthis License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable forrevising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely availabledrawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in anotherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is notTransparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publiclyavailable DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCFand JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/orprocessing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear inthe title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title,preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translatesXYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".)To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are consideredto be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and hasno effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the licensenotice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may notuse technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange forcopies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license noticerequires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-CoverTexts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all wordsof the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve thetitle of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 28/30

Page 29: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue therest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with eachOpaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps,when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one yearafter the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide youwith an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version underprecisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoeverpossesses a copy of it. In addition, you must do these things in the Modified Version:

* A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. * B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. * C. State on the Title page the name of the publisher of the Modified Version, as the publisher. * D. Preserve all the copyright notices of the Document. * E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. * F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. * G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. * H. Include an unaltered copy of this License. * I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. * J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. * K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. * L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. * M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. * N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. * O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, youmay at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice.These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements ofpeer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in theModified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If theDocument already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may notadd another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of anyModified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that youinclude in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multipleInvariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of theoriginal author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the licensenotice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine anysections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the variousdocuments with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in allother respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracteddocument, and follow this License in all other respects regarding verbatim copying of that document.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 29/30

Page 30: Mise en place d'un domaine Samba 2.2 ... - académie de Caenwawadeb.crdp.ac-caen.fr/iso/tmp/ressources/ldap/samba2.2_ldap_howto-fr.pdfSommaire Avant-propos.....3

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, iscalled an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual workspermit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of theDocument.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, theDocument's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronicform. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections withtranslations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the originalversions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, providedthat you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between thetranslation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typicallyrequire changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense ordistribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you underthis License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spiritto the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version"applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) bythe Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the FreeSoftware Foundation.

How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the titlepage:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover

Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such asthe GNU General Public License, to permit their use in free software.

Mise en place d'un domaine Samba 2.2 avec LDAP - Ganaël Laplanche - EDF R&D - http://www.martymac.com Page 30/30