Création d un contrôleur de domaine sous Linux



Documents pareils
Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

I. Présentation du serveur Samba

LDAP et carnet d'adresses mail

Jeudis du libre, Samba ou comment donner le rythme aux stations Windows

INSTALLATION ET CONFIGURATION DE OPENLDAP

RTN / EC2LT Réseaux et Techniques Numériques. Ecole Centrale des Logiciels Libres et de Télécommunications

Authentification des utilisateurs avec OpenLDAP et Samba 3.0

Annuaire LDAP + Samba

But de cette présentation. Contrôleur de domaine avec Samba (rédigé pour Ubuntu Server) Introduction. Samba: principes

Conférence technique sur Samba (samedi 6 avril 2006)

Imprimantes et partage réseau sous Samba avec authentification Active Directory

PARAMETRER SAMBA 2.2

Journée Josy/PLUME. Outils logiciels libres utiles à tout ASR SAMBA. Maurice Libes. Centre d'océanologie de Marseille UMS 2196 CNRS

LINUX REMPLAÇANT WINDOWS NT

OpenLDAP, un outil d administration Réseau. Une implémentation d OpenLDAP

Faites danser votre serveur avec Samba. Association LOLITA

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Authentification des utilisateurs avec OpenLDAP

UE5A Administration Réseaux LP SIRI

SAMBA. partager des fichiers sous Linux par un protocole compatible Microsoft

LINUX Préparation à la certification LPIC-3 (examen LPI 300) - 2ième édition

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Outils Logiciels Libres

Couplage openldap-samba

Installation et configuration d un serveur SAMBA sous linux Red Hat

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

M2-ESECURE Rezo TP3: LDAP - Mail

Serveur d impression CUPS

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Module Samba: Concepts et fonctionnement

Utiliser Améliorer Prêcher. Introduction à LDAP

Support de cours. Serveur de fichiers Samba. 2003, Sébastien Namèche - 1

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Les différentes méthodes pour se connecter

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Déploiement d'un serveur ENT

Aubert Coralie, Ruzand Brice GTR 2002 Bonvarlet Manuel, Desroches Alexandre, Magnin Cyril DRT Notice technique 1

Client Debian Squeeze et serveur SambaEdu3

Projet Semestre2-1SISR

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Mise en place d un firewall d entreprise avec PfSense

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

Le protocole FTP (File Transfert Protocol,

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Active Directory. Structure et usage

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Architecture de la plateforme SBC

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Linux Intranet. Guillaume Allègre INP-FC octobre Grenoble INP Formation Continue. G.

Partages de fichiers SAMBA et d imprimantes CUPS entre deux réseaux internes.

Réaliser un inventaire Documentation utilisateur

Installation d'un serveur sftp avec connexion par login et clé rsa.

Préparation d un serveur Apache pour Zend Framework

Authentification unifiée Unix/Windows

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

L annuaire et le Service DNS

Présentation de Samba

Configuration d'un annuaire LDAP

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Installation et configuration de Vulture Lundi 2 février 2009

Guide d installation de SugarCRM Open Source version 4.5.1

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

PPE GESTION PARC INFORMATIQUE

REPARTITION DE CHARGE LINUX

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

PRO CED U RE D I N STALLATI O N

La double authentification dans SharePoint 2007

Initiation à LINUX pour Scribe

Installation des outils OCS et GLPI

Acronymes et abréviations. Acronymes / Abbréviations. Signification

ZIMBRA Collaboration Suite SAMBA OPENVPN

Réalisation d un portail captif d accès authentifié à Internet

Guide Installation Serveur Extensive Testing

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

WDpStats Procédure d installation

14. Samba Introduction Protocoles Microsoft. Page suivante Page précédente Table des matières

Serveur de messagerie sous Debian 5.0

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Installation d'un serveur FTP géré par une base de données MySQL

Guide Installation Serveur Extensive Testing

LDAP : pour quels besoins?

WEB page builder and server for SCADA applications usable from a WEB navigator

Authentification des utilisateurs avec OpenLDAP et Samba 3.0

OpenLDAP au quotidien: trucs et astuces

OpenLDAP, un outil d administration réseau. (Implémentation d openldap à l INRA de Rennes)

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

FreeNAS Shere. Par THOREZ Nicolas

Gestion d identités PSL Installation IdP Authentic

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

1. Présentation du TP

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

Transcription:

Année 2012-2013 Création d un contrôleur de domaine sous Linux Samuel Chevalley

Sommaire 1. Les grandes étapes de la mise en place du contrôleur de domaine... 3 1.1. Création de l espace de travail... 3 1.2. Installation d OpenLDAP (version2.4.23)... 4 1.2.1. Les paquets... 4 1.2.2. Configuration de base du serveur LDAP... 5 1.3. Rendre OpenLDAP compatible à Samba... 7 1.4. Installation de Samba (version3.5.6)... 11 1.5. Configuration de Smbldap-tools... 15 1.6. Création de l arbre LDAP... 16 1.7. Gestion des profils itinérants en Français... 16 1.7.1. Création d un groupe... 17 1.7.2. Création d un utilisateur... 17 1.7.2.1. Vérification de la bonne création... 17 1.7.3. Création des lecteurs réseaux... 18 1.8. Configuration des clients LDAP... 19 1.8.1. Clients GNU/Linux... 19 1.8.2. Clients Windows... 20 1.9. Installation de Phpldapadmin... 22 2. En résumé... 23 Annexes... 24 2

1. Les grandes étapes de la mise en place du contrôleur de domaine 1.1. Création de l espace de travail Avant de se lancer dans la configuration d un contrôleur de domaine, il faut commencer par avoir un système d exploitation sur lequel installer les composants nécessaires à la réalisation du projet. Mon tuteur m a donc proposé de me créer une machine virtuelle (VM) d une Debian Squeeze (distribution libre GNU/Linux) sur Proxmox (virtualiseur sous GNU/Linux utilisé dans l entreprise) avec pour seul configuration : Le nom de la VM (son nom NetBIOS) : LDAP1 La configuration réseau : o IP : 192.168.5.149/24 o DNS : 192.168.5.100 o Passerelle : 192.168.5.1 Un accès root (super utilisateur) Me voila donc avec un système et un accès réseaux, nous allons maintenant mettre à jours la Debian afin de profiter des dernier packages disponibles, pour cela il faut tout d abord ce connecter à la VM en SSH (Secure Shell) à l aide d un émulateur de terminal comme Putty. De plus, pour effectuer toutes les opérations qui suivront, nous serons logué avec le super utilisateur root. Sous GNU/Linux la commande à effectuer est assez simple pour mettre à jour un système, il suffit de taper : root@ldap1:~#apt-get update && apt-get upgrade Nous voici donc avec un système d exploitation sein et fonctionnel. Il reste seulement un petit pré-requis avant de commencer l installation d OpenLDAP et de Samba, il faudra juste rajouter une ligne au fichier hosts (fichier permettant la résolution de nom). Nous allons donc ouvrir ce fichier grâce à l éditeur vi (on aurait aussi pu choisir gedit ou nano) : root@ldap1:~#vi /etc/hosts Et nous rajoutons une ligne à son contenu : 192.168.5.149 LDAP1.clin LDAP1 Cette ligne indique à notre serveur que l adresse IP 192.168.5.149 correspond à LDAP1.clin ou à LDAP1 (clin est le nom de notre futur domaine), il ne sera donc pas perdu et saura que c est de lui qu il s agit si dans certains fichiers de configuration nous notons son nom ou son adresse IP (au lieu de 127.0.0.1 qui signifie lui-même). 3

Modifier debconf : root@ci_ldap1:~#dpkg-reconfigure debconf Sélectionner Dialogue puis Intermédiaire. Nous pouvons donc débuter et allons commencer par installer et configurer OpenLDAP qui fournira le système de base pour l'authentification des utilisateurs. Ensuite, on configurera le système pour qu'il s'appuie intégralement sur OpenLDAP, et on installera Samba pour pouvoir partager des fichiers. Il y aura un disque réseau par utilisateur, et un disque partagé entre tous les utilisateurs. 1.2. Installation d OpenLDAP (version2.4.23) 1.2.1. Les paquets Commençons par installer les paquets nécessaires : root@ldap1:~#apt-get install slapd ldap-utils Répondre aux questions suivantes : Faut-il omettre la configuration d'openldap? Non Nom de domaine : clin Nom de votre organisation : clin.local Mot de passe administrateur : tototata Faut-il autoriser le protocole LDAPv2 : Non Note importante : le mot de passe entré ici correspond à l'utilisateur cn=admin,dc=clininfo,dc=local (il s agit de la notation utilisé par OpenLDAP pour définir notre annuaire, dont la racine est local et la sous racine clin). Cet utilisateur (Administrateur de l arbre LDAP) est différent du super utilisateur (le compte root du serveur) qui sera déclaré plus tard. Cependant pour éviter les confusions, on veillera à prendre toujours le même mot de passe (donc le mot de passe du super utilisateur root du serveur Debian). Vérifions que la configuration de base a bien été prise en compte : root@ldap1:~#ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn #Commande : ldapsearch (effectue une recherche dans l arbre ldap) LLL (sans les informations inutiles) -Y EXTERNAL (sans authentification) H ldapi:/// (spécifiant l url ldap, ici en partant de la racine de l arbre) b cn=config dn (retournant les informations contenant cn=config et dn () Résultat renvoyé par la commande précédente, nous devons obtenir ceci : SASL/EXTERNAL authentication started SASL username: gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 dn: cn=config dn: cn=module{0},cn=config dn: cn=schema,cn=config dn: cn={0}core,cn=schema,cn=config dn: cn={1}cosine,cn=schema,cn=config dn: cn={2}nis,cn=schema,cn=config dn: cn={3}inetorgperson,cn=schema,cn=config 4

dn: olcbackend={0}hdb,cn=config dn: olcdatabase={-1}frontend,cn=config dn: olcdatabase={0}config,cn=config dn: olcdatabase={1}hdb,cn=config Afin de mieux comprendre, voici à quoi correspondent les attributs utilisé par le protocole LDAP : «dn» distinguished name. «cn» common name. «gn» given name c'est à dire le prénom. «sn» surname. «l» locality name. «st» state or province name. «ou» organisational unit. «dc» domain component. «o» organization name. Attention, nom de domaine et nom d organisation (arbre LDAP) sont 2 choses différentes, voici à quoi correspondra à la fin de la mise en place, notre arbre LDAP : dc=local dc=clin / / \ \ ou=computers ou=groups ou=idmap ou=users (C est pour cela que nous avons mis clin.local au dessus) 1.2.2. Configuration de base du serveur LDAP Nous allons maintenant, pour plus de sécurité, recréer le mot de passe de l administrateur de l arbre LDAP renseigné précédemment mais chiffré cette fois ci (car le mot de passe apparaitra en clair dans les fichiers de configurations) : root@ldap1:~#slappasswd New password : tototata Re-enter new password : tototata Nous obtenons notre mot de passe sous la forme suivante : {SSHA}Y4m58WY9h057RZ2UbcAbW1wsT0C84jG4 (Notons-le!) Nous modifions ensuite l arbre afin de lui indiquer notre nouveau mot de passe chiffré : root@ldap1:~#ldapmodify -Y EXTERNAL -H ldapi:/// #Commande : Sous LDAP, ldapmodify permet de modifier une entrée (ici à la racine comme tout à l heure) 5

Nous obtenons ceci : SASL/EXTERNAL authentication started SASL username: gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 Il suffit de rajouter à la suite (puis «Ctrl + D» pour quitter) : dn: olcdatabase={0}config,cn=config add: olcrootpw olcrootpw: {SSHA}Y4m58WY9h057RZ2UbcAbW1wsT0C84jG4 olcrootpw correspond à l administrateur de l arbre (dont nous avons pu créer un mot de passe chiffré précédemment grâce à la comment slappasswd). Nous allons ensuite créer un fichier.ldif (les fichiers avec l extension ldif permettent de modifier l arbre LDAP sans avoir à relancer le démon) afin d ajouter des restrictions d accès à l arbre. Créons donc le fichier config.ldif (que nous plaçons dans /etc/ldap (répertoire d OpenLDAP créé automatiquement à son installation) par exemple): root@ldap1:~# vi /etc/ldap/config.ldif Et ajouter dedans : dn: olcdatabase={1}hdb,cn=config changetype: modify replace: olcaccess olcaccess: to attrs=userpassword by dn="cn=admin,dc=clin,dc=local" write by anonymous auth by self write by * none olcaccess: to attrs=shadowlastchange by self write by * read olcaccess: to dn.base="" by * read olcaccess: to * by dn="cn=admin,dc=clin,dc=local" write by * read #Commande : dn: olcdatabase={1}hdb,cn=config : Nous voulons changer la configuration de base changetype: modify : On effectue une modification replace: olcaccess : On veut remplacer les «olcaccess» (restriction d accès ou encore appelé «ACL») olcaccess: to attrs=userpassword by dn="cn=admin,dc=clin,dc=local" write by anonymous auth by self write by * none olcaccess: to attrs=shadowlastchange by self write by * read olcaccess: to dn.base="" by * read olcaccess: to * by dn="cn=admin,dc=clin,dc=local" write by * read On indique ici que l administrateur de l arbre a tous les droits (lecture et écriture sur l arbre) et les que les autres utilisateurs ou anonymes n ont que le droit de lecture de l arbre. 6

Il faut maintenant rendre ce fichier config.ldif effectif : root@ldap1:~#ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/config.ldif Cette commande nous renvoie: SASL/EXTERNAL authentication started SASL username: gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcdatabase={1}hdb,cn=config" Apparemment ça a fonctionné : modifying entry "olcdatabase={1}hdb,cn=config" Nous vérifions quand même avec : root@ldap1:~#ldapsearch -xlll -b cn=config -D cn=admin,cn=config -W olcdatabase={1}hdb Résultat: dn: olcdatabase={1}hdb,cn=config objectclass: olcdatabaseconfig objectclass: olchdbconfig olcdatabase: {1}hdb olcdbdirectory: /var/lib/ldap olclastmod: TRUE olcrootpw: {SSHA}XXXXXXXXXXZZZZZZZZZZZZZZZ olcdbcheckpoint: 512 30 olcdbconfig: {0}set_cachesize 0 2097152 0 olcdbconfig: {1}set_lk_max_objects 1500 olcdbconfig: {2}set_lk_max_locks 1500 olcdbconfig: {3}set_lk_max_lockers 1500 olcdbindex: objectclass eq olcsuffix: dc=clin,dc=local olcrootdn: cn=admin,dc=clin,dc=local olcaccess: {0}to attrs=userpassword by dn="cn=admin,dc=clin,dc=local" write by anonymous auth by self write by * none olcaccess: {1}to attrs=shadowlastchange by self write by * read olcaccess: {2}to dn.base="" by * read olcaccess: {3}to * by dn="cn=admin,dc=clin,dc=local" write by * read Notre configuration est donc à jour! 1.3. Rendre OpenLDAP compatible à Samba Pour son fonctionnement, OpenLDAP utilise des schémas (définition d attributs comme ceux vu plus haut (dn, given name )), nous devons donc inclure le schéma de Samba (afin d inclure ses attributs à OpenLDAP). Obtenir le schéma de Samba : Installer le package de documentation de Samba (qui contient le schéma) : root@ldap1:~#apt-get install samba-doc 7

Copier ce qui nous intéresse (le schéma) dans le répertoire d OpenLDAP contenant les schémas: root@ldap1:~#cp /usr/share/doc/sambadoc/examples/ldap/samba.schema.gz /etc/ldap/schema/ Dé-zipper l archive : root@ldap1:~#gzip -d /etc/ldap/schema/samba.schema.gz Nous allons créer un fichier où nous allons inclure tous les schémas déjà présents sur OpenLDAP sans oublier de rajouter celui de Samba : root@ldap1:~#vi schema_convert.conf Copier dedans ce qui suit : include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema Grâce à la commande qui va suivre, nous allons prendre toutes les lignes du ficher schema_convert.conf afin de créer un fichier de configuration des attributs de Samba pour OpenLDAP : root@ldap1:~#mkdir /etc/ldap/ldif_output root@ldap1:~#slapcat -f schema_convert.conf -F /etc/ldap/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /etc/ldap/cn=samba.ldif Ceci nous a donc créé le fichier de configuration nommé cn=samba.ldif, nous devons effectuer tout de même quelques modifications : root@ldap1:~#vi /etc/ldap/cn=samba.ldif Dans les première lignes du fichier il faut effacer les «{12}» afin d obtenir ceci : dn: cn=samba,cn=schema,cn=config objectclass: olcschemaconfig cn: samba 8

Et supprimer les lignes suivantes placées tout en bas du fichier : structuralobjectclass: olcschemaconfig entryuuid: bd8a7a82-3cb8-102f-8d5f-070b4e5d16f8 creatorsname: cn=config createtimestamp: 20104714525953Z entrycsn: 20100815125153.192505Z#000000#000#000000 modifiersname: cn=config modifytimestamp: 20100815122153Z Il suffit maintenant de rendre ce fichier effectif : root@ldap1:~#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/cn=samba.ldif #Commande : ldapadd permet d ajouter une entrée à l arbre LDAP (tout à l heure nous modifions l entrée avec ldapmodify mais ici c est une nouvelle entrée (un nouveau schéma)). Résultat : SASL/EXTERNAL authentication started SASL username: gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=samba,cn=schema,cn=config" La définition du schéma étant faite, il ne reste plus qu à créer les indexes (ce sont des sortes d attributs que Samba utilise pour, par exemple, associer un utilisateur à un groupe) utilisés pas Samba. Pour ce faire, nous créons comme d habitude un fichier.ldif nommé samba_indexes.ldif : root@ldap1:~#vi /etc/ldap/samba_indexes.ldif On y copie dedans tous les indexes utilisés par Samba : dn: olcdatabase={1}hdb,cn=config changetype: modify add: olcdbindex olcdbindex: uidnumber eq olcdbindex: gidnumber eq olcdbindex: loginshell eq olcdbindex: uid eq,pres,sub olcdbindex: memberuid eq,pres,sub olcdbindex: uniquemember eq,pres olcdbindex: sambasid eq olcdbindex: sambaprimarygroupsid eq olcdbindex: sambagrouptype eq olcdbindex: sambasidlist eq olcdbindex: sambadomainname eq olcdbindex: default sub 9

Et on rend le fichier effectif : root@ldap1:~#ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif Résultat: SASL/EXTERNAL authentication started SASL username: gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcdatabase={1}hdb,cn=config" Afin d être sûr qu OpenLDAP a bien pris en considération toutes nos modifications (et malgré le faite que les fichiers.ldif sont la pour ça), nous redémarrons tout de même le démon : root@ldap1:~#/etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: slapd. À partir de la, je suis allé vérifier les logs afin de savoir si il y avait présence d erreurs. Pour se faire utiliser la commande suivante : root@ldap1:~#vi + /var/log/syslog #Commande : vi est un éditeur de texte, + permet d aller directement à la fin du fichier et /var/log/syslog est le chemin pour accéder aux logs d OpenLDAP (et de Samba). En scrutant le fichier, je me suis rendu compte qu il manquait des olcdbindex, nous allons donc les rajouter en utilisant une autre méthode que l injection de fichiers.ldif (moins conseillée car plus propice aux erreurs) afin de montrer cette autre possibilité (comme ce n est pas un fichier.ldif, il n y aura donc pas son avantage principal qui est la modification instantané de la configuration LDAP, il nous faudra donc arrêter le démon pour effectuer la modification). On commence par arrêter le démon OpenLDAP : root@ldap1:~#service slapd stop On ouvre le fichier de configuration de la base LDAP (ce fichier ce nomme olcdatabase\=\{1}hdb.ldif) qui est lui-même un fichier.ldif : root@ldap1:~#vi /etc/ldap/slapd.d/cn\=config/olcdatabase\=\{1}hdb.ldif On parcourt ensuite ce fichier jusqu à trouver les lignes débutants par olcdbindex (elles se trouvent sous les lignes olcdbconfig), il suffit de les supprimer et de copier les lignes cidessous (contenants tous les types d olcdbindex possibles dont nous pourrions avoir besoin) : olcdbindex: objectclass eq,pres olcdbindex: ou,cn,sn,mail,givenname eq,pres,sub olcdbindex: uidnumber,gidnumber,memberuid eq,pres olcdbindex: loginshell eq,pres olcdbindex: uniquemember eq,pres 10

olcdbindex: uid pres,sub,eq olcdbindex: displayname pres,sub,eq olcdbindex: sambasid eq olcdbindex: sambaprimarygroupsid eq olcdbindex: sambadomainname eq olcdbindex: sambagrouptype eq olcdbindex: sambasidlist eq olcdbindex: default sub Une fois fait, il suffit de sauvegarder et fermer le fichier et d exécuter la commande suivante afin que la nouvelle configuration soit mise à jours (rien n est dynamique avec les fichier.ldif, il faut toujours les rendre effectifs) : root@ldap1:~#slapindex Autre petite erreur que j ai pu faire ici : exécuter la commande slapindex avec le super utilisateur root. En effet, OpenLDAP fonctionne avec l utilisateur openldap qui fait parti du groupe openldap, or le fait d avoir exécuté cette commande avec root va changer les droits groupe et l utilisateur de certains fichiers qui passeront de openldap à root (OpenLDAP ne pourra donc plus les lire ou exécuter ce qui provoquera de nombreuse erreurs). Afin de réattribuer les bons droits utilisateur/groupe aux fichiers il suffit de ce placer dans les bons répertoires et d exécuter la commande ls l (qui liste les fichiers en affichant aussi les droits), puis de redonner les bon droits : root@ldap1:~#cd /var/lib/ldap root@ldap1:~#ls l root@ldap1:~#chown openldap:openldap * root@ldap1:~#cd /etc/ldap/slapd.d/cn\=config/ root@ldap1:~#ls -l root@ldap1:~#chown openldap:openldap * #Commande : cd pour se placer dans le répertoire, ls l pour lister et chown pour changer le groupe et l utilisateur du fichier. Tout est donc opérationnel pour passer à l installation de Samba! 1.4. Installation de Samba (version3.5.6) Nous allons configurer Samba de telle sorte qu il soit contrôleur de domaine, mais aussi en tant que serveur de fichiers (partage de fichiers ou sauvegarde de données via un disque réseau). Pour ce faire, nous allons installer Samba, puis nous créerons des zones de stockages privées et publiques. Commençons par installer les paquets : root@ldap1:~#aptitude -y install smbldap-tools samba smbclient smbfs 11

Répondre aux questions suivantes : Nom du domaine ou groupe de travail : clin Voulez vous chiffrer les mots de passe : Oui Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP : Non Comment voulez-vous lancer Samba : Démon Faut-il créer une base de données /var/lib/samba/passdb.tdb : Non (voir remarque ci-dessous) Remarque : si on répond «Oui» à la dernière question, le programme d'installation de Samba va importer tous les comptes. Ça inclut les comptes comme root, daemon, nobody, www-data, game, etc. Sur un serveur fraichement installé, il vaut mieux répondre «Non». On pourra les rajouter à la main plus tard en cas de besoin. Une fois l installation terminée, on arrête Samba afin de terminer sa configuration : root@ldap1:~#/etc/init.d/samba stop Il faut maintenant configurer Samba pour qu'il intègre LDAP et les outils SMBLDAP que l'on installera dans la foulée. Un fichier de configuration /etc/samba/smb.conf est déjà présent, nous modifions sont nom en smb.conf.back afin d avoir une sauvegarde la configuration originel au cas où : root@ldap1:~#mv /etc/samba/smb.conf /etc/samba/smb.conf.bak Nous allons maintenant aller chercher un exemple de configuration de smb.conf (ceci permet d avoir un fichier sans le grand nombre de commentaire qui le rende illisible), cet exemple de configuration est disponible dans les fichiers créés par l installation précédente du package smbldap-tools) : root@ldap1:~#cp /usr/share/doc/smbldap-tools/examples/smb.conf /etc/samba/smb.conf Il ne reste plus qu à le modifier afin d avoir la configuration souhaitée : root@ldap1:~#vi /etc/samba/smb.conf Nous obtenons le fichier de configuration suivant (explication en vert) : [global] workgroup = clin netbios name = ldap1 security = user server string = Samba Server %v encrypt passwords = Yes ldap passwd sync = yes #Définition des paramètres globaux du serveur #Nom du domaine (pour les clients Windows) #Nom du serveur LDAP qui l identifie sur le réseau #Force Samba à authentifier les connexions clients #Commentaire affiché dans le voisinage réseau (Samba transcrit «%v» par sa propre version) #Utilisation des mots de passe encryptés #Synchronise les mots de passe LDAP et Samba ###Commande qui permet de changer le mot de passe de l utilisateur (à faire sous Samba)### passwd program = /usr/sbin/smbldap-passwd -u "%u" passwd chat = "Changing *\nnew password*" %n\n "*Retype new password*" %n\n" 12

log level = 3 #Niveau de log Samba syslog = 3 #Niveau de log Samba + LDAP log file = /var/log/samba/log.%u #Répertoire des log de Samba max log size = 100000 #Taille maximal du fichier de log time server = Yes #Samba est aussi serveur de temps socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 #Optimization pour le protocol TCP/IP Dos charset = CP932 #Utilise l encodage CP932 sous Windows Unix charset = UTF-8 #Utilise l encodage UTF-8 sous Linux domain logons = Yes #Active le service de contrôleur de domaine domain master = Yes #Le serveur est le maitre du domaine local master = Yes #Le serveur est aussi maitre du réseau local logon home = \\ldap1\%u #Chemin du répertoire personnel de l utilisateur authentifié (voir [home] plus bas) logon path = \\ldap1\profiles\%u #Chemin qui indique aux clients Windows où stocker leurs profils itinérants logon script = logon.bat #Nom du script à exécuter à l ouverture d une session (voir [netlogon] plus bas) logon drive = H: #Lettre du lecteur réseau qui mène à l espace personnel de l utilisateur (voir [home] plus bas) os level = 65 #un «os level» de 65 permet au serveur Samba d être forcément le contrôleur de domaine face à un serveur Windows (dans le cas où 2 contrôleurs de domaine se trouvent sur le même réseau) preferred master = Yes #Indique que ce serveur sera choisi en cas d élection d un contrôleur de domaine (si 2 serveurs sont en «preferred master = yes» alors celui qui a le plus haut «os level» gagne l élection) dns proxy = no #Sans passer par un DNS pour résoudre le domaine wins support = yes #Samba devient aussi serveur Wins (résolution de nom Netbios) passdb backend = ldapsam:ldap://192.168.5.149/ #Indique à Samba que les comptes utilisateurs sont stockés sous LDAP ###Définition de l organisation de l arbre LDAP### ldap admin dn = cn=admin,dc=clin,dc=local ldap suffix = dc=clin,dc=local ldap group suffix = ou=groups ldap user suffix = ou=users ldap machine suffix = ou=computers ###Définition des scripts (voir plus bas dans la partie Smbldap-tools)### add user script = /usr/sbin/smbldap-useradd -m "%u" delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' 13

ldap ssl = no create mask = 0640 directory mask = 0750 guest account = nobody map to guest = Bad User #Indique que la communication avec OpenLDAP n est pas chiffrée #Tout fichiers créés dans les différents répertoires (sauf indication contraire (voir plus bas)) ont les droits 640 #Tout dossiers créés dans les différents répertoires (sauf indication contraire (voir plus bas)) ont les droits 750 #Les compte invité (utilisateurs qui parcours les dossiers publiques de Samba ont le droit de l utilisateur «nobody») ###Définition des partages### [homes] comment = Dossiers personnels browseable = no writable = yes guest ok = no valid users = %U, clin\%u [netlogon] path = /home/netlogon/%g browseable = No read only = yes guest ok = no #Répertoire personnel des utilisateurs #Commentaire #Invisible dans le voisinage réseau #Accessible en écriture #Les utilisateurs invité n y ont pas accès #Seul l utilisateur authentifié à droit de voir son répertoire personnel («%U» est l utilisateur authentifié) #Répertoire où sont stockés les scripts exécutés par Les clients Windows lors de leurs connexions #Chemin du répertoire (où «%G» est le groupe primaire de l utilisateur) #Invisible dans le voisinage réseau #Accessible en lecture seul #Les utilisateurs invité n y ont pas accès [profiles] #Répertoire où sont stocké les profiles itinérants comment = profils itinerants #Commentaire path = /home/profiles #Chemin du répertoire où stocker le profile itinérant browseable = no #Invisible dans le voisinage réseau writable = yes #Accessible en écriture guest ok = no #Les utilisateurs invité n y ont pas accès create mask = 0700 #Les fichiers dans profiles sont créés avec le droit 700 directory mask = 0700 #Les dossiers dans profiles sont créés avec le droit 700 valid users = %U, clin\%u #Seul l utilisateur authentifié à droit de voir son répertoire personnel («%U» est l utilisateur authentifié) [public] #Répertoire accessible à tout le monde comment = Dossier public #Commentaire path = /home/public #Chemin du répertoire writable = yes #Accessible en écriture public = yes #Accessible à tout le monde create mask = 0777 #Tout le monde à tous les droits sur les fichiers directory mask = 0777 Tout le monde à tous les droits sur les dossiers 14

Nous avons donc configuré le fichier de configuration de Samba et avons donné des chemins vers des répertoires (netlogon, public, profiles et home), il nous faut donc créer les dossiers (en leur attribuant les bon droits) au bon endroit afin que ces chemins pointent vers leur bonne destinations : root@ldap1:~#mkdir /home/netlogon root@ldap1:~#chmod 775 /home/netlogon root@ldap1:~#mkdir /home/profiles root@ldap1:~#chmod 773 /home/profiles root@ldap1:~#mkdir /home/public root@ldap1:~#chmod 777 /home/public Remarque : Nous n avons pas créé le répertoire «home» car il s agit d un répertoire automatiquement créé qui pointe vers le répertoire personnel de l utilisateur authentifié (ce répertoire est automatiquement créé à la création d un utilisateur). Nous redémarrons le démon Samba afin de prendre en compte notre configuration : root@ldap1:~#/etc/init.d/samba restart Stopping Samba daemons: nmbd smbd. Starting Samba daemons: nmbd smbd. Samba doit connaître le mot de passe administrateur du serveur OpenLDAP pour l administration LDAP. Ca lui donnera l'autorisation de créer, supprimer, modifier des entrées pour les comptes utilisateurs, groupes et machines. La commande suivante permet de le faire: root@ldap1:~#smbpasswd -W Setting stored password for "cn=admin,dc=clin,dc=local" in secrets.tdb New SMB password: tototata Retype new SMB password: tototata Ceci créer un fichier «secret.tdb» se trouvant dans le répertoire /var/lib/samba que seul le super utilisateur (root) peut lire. 1.5. Configuration de Smbldap-tools Ces outils sont des scripts perl 22 qui permettront de créer les utilisateurs Samba et LDAP de manière automatisée. Par exemple, nous pourrions dorénavant utiliser la commande smbldapuseradd (voir plus bas dans création d un utilisateur), qui grâce à ces outils permettra de créer en même temps, le compte de l utilisateur LDAP, Samba et Linux (avec création du répertoire personnel). Ceci nous facilite grandement la vie, car sans lui nous devrions créer un compte sur Samba (avec appartenance à un groupe etc etc ), le même sur OpenLDAP et le même sur Linux (avec création du répertoire privé). 15

Nous avions installé ces outils avec Samba afin de récupérer un exemple de fichier de configuration smb.conf, passons maintenant à leurs configurations : root@ldap1:~#gzip -d /usr/share/doc/smbldaptools/configure.pl.gz root@ldap1:~#perl /usr/share/doc/smbldap-tools/configure.pl Un écran s affiche et si le smb.conf est bien configuré (ce qui est notre cas), il suffit d appuyer sur la touche «ENTRER» car le script de configuration va pré-remplir les champs (par exemple le nom du domaine) grâce aux mêmes champs que sur le smb.conf. Attention toutefois à ne pas allé trop vite car il faudra tout de même saisir à la main le mot de passe de l administrateur LDAP («tototata») et le type d encryption des mots de passe des utilisateurs linux («l encryption of the unix password»), pour ce dernier taper «MD5». Toutes ces informations seront modifiables dans les fichiers smbldap.conf et smbldap_bind.conf situés dans le dossier /etc/smbldap-tools (notre smbldap.conf est disponible en annexe). 1.6. Création de l arbre LDAP Il est maintenant temps d initialiser la base de données LDAP de base pour Samba. On va le faire en utilisant la commande smbldap-populate : root@ldap1:~#smbldap-populate Vous devez saisir deux fois votre mot de passe root («tototata»). Cette commande créée: Les différentes OU (Organisation Unit) qui contiendront vos Machines, Users et Groups, Deux UID : root (super utilisateur) et nobody (utilisateur avec peu de droits que prenne les invités) qui seront dans OU = Users, Plusieurs CN (Common Name): Les groupes qui seront dans OU = Groups. 1.7. Gestion des profils itinérants en Français Il faut configurer ce qui suit afin de notre PDC puisse stocker les profiles itinérants en Français, sinon les utilisateurs auront leur dossiers en Anglais («Images» se transformera en «Pictures» par exemple), pour ce faire : root@ci_ldap1:~#apt-get install attr root@ci_ldap1:~#mount /home o remount,user_xattr Ajouter user_xattr à fstab afin que l option reste même après un redémarrage. 16

1.7.1. Création d un groupe Nous allons maintenant créer un groupe d utilisateurs (par exemple, ici le groupe «Atelier de saisie») et nous verrons par la suite comment l exploiter. Pour ce faire nous allons utiliser l une des commandes de la suite smbldap-tools : root@ldap1:~#smbldap-groupadd -a 'Groupe test' #Commande : -a permet l auto-mappage à la création du groupe (création de l identifiant de sécurité et de groupe (SID et GID)) 1.7.2. Création d un utilisateur Pour la création d un utilisateur (par exemple l utilisateur «Pierre Dupont» faisant partie du groupe «Atelier de saisie»), nous utiliserons également smbldap-tools : root@ldap1:~#smbldap-useradd -a -c "Pierre Dupont" -m -P -g "Groupe test" pdupont #Commande : -a désigne un utilisateur, -c pour donner le nom entier de l utilisateur (information Gecos), -m créer le répertoire personnel (sous Linux), -P demande la création du mot de passe et pdupont est l identifiant de l utilisateur (uid) Pour le supprimer, utiliser la commande smbldap-userdel pdupont. 1.7.2.1. Vérification de la bonne création Commande permettant de vérifier que l utilisateur à bien pris en compte les paramètres Samba (smb.conf) lors de sa création: root@ldap1:~#pdbedit v pdupont Attention : Durant un débogage et modification du fichier smb.conf (Samba), il se peut que les comptes utilisateurs prennent en compte le fichier smbldap.conf (Smbldap-tools), le modifier si nécessaire et bien penser à mettre à jours les comptes utilisateurs précédemment créés. Par exemple : si on modifie dans smbldap.conf les chemins pour le home directory et login path il faudra effectuer la commande : pdbedit p "" h "" u pdupont 17

1.7.3. Création des lecteurs réseaux Nous poursuivons par la définition des scripts qui permettront de créer les différents lecteurs réseaux des utilisateurs en fonction de leur groupe. Mais avant, nous allons nous intéresser à la logique de la configuration permettant la création des lecteurs réseaux en finalité. Dans notre smb.conf nous avions mis plusieurs informations très importantes : logon script = logon.bat #Nom du script à exécuter à l ouverture d une session (voir [netlogon] plus bas) [netlogon] path = /home/netlogon/%g browseable = No read only = yes guest ok = no #Répertoire où sont stockés les scripts exécutés par Les clients Windows lors de leurs connexions #Chemin du répertoire (où «%G» est le groupe primaire de l utilisateur) #Invisible dans le voisinage réseau #Accessible en lecture seul #Les utilisateurs invité n y ont pas accès D après les informations ci-dessus, on peut donc en déduire qu il faut créer un dossier portant le nom de chaque groupe d utilisateurs dans le dossier /home/netlogon. De plus, il faudra dans chacun de ces dossiers créer un script nommé logon.bat. (Attention de bien mettre les bon droits spécifiés plus haut, à la création du dossier /home/netlogon) Exemple de script logon.bat permettant d accéder au dossier public ([public] dans smb.conf) : net use p: \\ldap1\public Pour reprendre notre exemple de l utilisateur pdupont membre du groupe Atelier de saisie, il faut donc se placer dans /hom/netlogon et créer un dossier Atelier de saisie, puis dans ce dossier Atelier de saisie, il faudra créer le fichier logon.bat (en créant les bons scripts pour les lecteurs réseaux) : root@ldap1:~#cd /home/netlogon #Aller dans le dossier «/home/netlogon# root@ldap1:/home/netlogon#mkdir "Groupe test" #Créer le dossier «Groupe test» root@ldap1:/home/netlogon#cd Atelier de saisie #Aller dans le dossier «/home/netlogon/groupe test» root@ldap1:/home/netlogon/groupe test#vi logon.bat #Créer le fichier «logon.bat» #Copier dedans «net use p: \\ldap1\public» 18

1.8. Configuration des clients LDAP 1.8.1. Clients GNU/Linux L'idée est d'utiliser l annuaire LDAP pour authentifier les utilisateurs qui se connecteront sur la machine Linux. L'approche classique sur des systèmes Unix pour avoir une base centrale d'utilisateurs est d'utiliser NIS 23. Nous allons voir comment utiliser une base LDAP pour faire le même travail. Pour changer le processus d'authentification classique, il faut installer PAM (Pluggable Authentification Module). C'est une bibliothèque qui permet de remplacer la source d'authentification par à peu près n'importe quoi (LDAP, SQL, fichier à plat, NIS ), ceci sera couplé à NSS (Name Service Switch) qui permettra le changement du service à utiliser pour la connexion. Nous allons maintenant installer et configurer la librairie qui permet d utiliser l annuaire (libnss-ldap) et la librairie qui permet de s authentifier sous unix (libpam-ldap) : root@ldap1:~#apt-get install libnss-ldap libpam-ldap Lors de l installation un certain nombre de question seront posées : Identifiant uniforme de ressource («URI») du serveur LDAP : ldap ://192.168.5.149 Nom distinctif (DN) de la base de recherche : dc=clin,dc=local Version de LDAP utilisé : 3 Compte LDAP pour le superutilisateur («root») : cn=admin,dc=clin,dc=local Mot de passe du compte du superutilisateur LDAP : tototata Donner les priviéges de superutilisateur local au compte administrateur LDAP? oui La base LDAP demande-t-elle une identification : non Compte LDAP pour le superutilisateur («root») : cn=admin,dc=clin,dc=local Mot de passe du compte du superutilisateur LDAP : tototata Algorithme de chiffrement à utiliser localement pour les mots de passe : chiffré Maintenant que les librairies sont configurées, on doit activer la recherche LDAP en modifiant le fichier de configuration /etc/nsswitch.conf. Pour cela il faut simplement ajouter ldap à passwd, group et shadow : root@ldap1:~#vi /etc/nsswitch.conf # Modifier les lignes suivantes en rajoutant «ldap» passwd: compat ldap group: compat ldap shadow: compat ldap 19

Il faut aussi modifier le fichier /etc/pam.d/common-password qui permet de gérer le changement de mot de passe : root@ldap1:~#vi /etc/pam.d/common-password #Sur la ligne suivante, il faut retirer ('user_unknown=ignore') password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass Et pour finir, modifier le fichier /etc/pam.d/common-session qui gère l ouverture de la session de l utilisateur : root@ldap1:~#vi /etc/pam.d/common-session # ajouter tout à la fin du fichier (créer la directory dans /home automatiquement) session optional pam_mkhomedir.so skel=/etc/skel umask=077 On redémarre ensuite le serveur afin d être sur que toutes les configurations soient prises en compte : root@ldap1:~#reboot 1.8.2. Clients Windows Chez Windows la marche à suivre est différente, il ne suffit pas simplement de lui indiquer d aller s authentifier sur le serveur LDAP mais il faut le faire appartenir au domaine (notre domaine est clininfo). Il faut d abord ajouter le serveur Samba en tant que serveur WINS afin de pouvoir résoudre le nom de domaine, pour ce faire, il faut aller dans Panneau de configuration/réseau et Internet/Connexions réseaux et suivre ci-dessous : Procédure de déclaration du serveur WINS 20

Puis pour appartenir au domaine, appuyer sur les touches Windows+Pause et cliquer sur Modifier les paramètres puis suivre ci-dessous : Procédure d apartenance au domaine Après avoir cliqué sur «OK», il vous faudra renseigner le compte root (administrateur du domaine) afin de valider la jonction au domaine. Attention : il existe un bug, une fois le compte root saisit, il se peut que le pc ne soit pas ajouté au domaine. Dans ce cas, retenter la jonction au domaine, si échec relancer les services Samba et OpenLDAP (service samba restart et service slapd restart) et retenter. Une fois le client Windows sur le domaine, il suffit de le redémarrer l ordinateur, et, arrivé à l interface de connexion, cliquer sur «Autre utilisateur» et dans le champ «Identifiant», entrer l utilisateur de la façon suivante : domaine\utilisateur. Pour l exemple, avec l utilisateur pdupont, on entre clininfo\pdupont (puis le mot de passe de pdupont) et nous voila connecté au domaine. Sur le serveur Samba, dans le dossier /home/profiles sera automatiquement créé un dossier nommé pdupont.v2 contenant le profile (fond d écran, préférences, raccourcis ) de l utilisateur pdupont. Si jamais l utilisateur pdupont essai de se connecter sur un autre ordinateur, Samba ira voir dan le dossier /home/profiles si un dossier pdupont.v2 s y trouve, comme il s y trouve il exportera directement le profile sur le nouvel ordinateur (au lieu de créer le profile et d importer les préférences comme précédemment). 21