Annuaire LDAP + Samba



Documents pareils
INSTALLATION ET CONFIGURATION DE OPENLDAP

Déploiement d'un serveur ENT

Authentification des utilisateurs avec OpenLDAP

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

Client Debian Squeeze et serveur SambaEdu3

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

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

Outils Logiciels Libres

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

LDAP et carnet d'adresses mail

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

Couplage openldap-samba

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

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

Authentification des utilisateurs avec OpenLDAP et Samba 3.0

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

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

Institut Universitaire de Technologie

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

OpenLDAP. Astuces pour en faire l'annuaire d'entreprise idéal THÈME TECHNIQUE - ADMINISTRATION SYSTÈME. Jonathan CLARKE - jcl@normation.

I. Présentation du serveur Samba

Utiliser Améliorer Prêcher. Introduction à LDAP

OpenLDAP au quotidien: trucs et astuces

Authentification des utilisateurs avec OpenLDAP et Samba 3.0

Architecture PKI en Java

Active Directory. Structure et usage

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

Configuration d'un annuaire LDAP

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

Projet Semestre2-1SISR

ZIMBRA Collaboration Suite SAMBA OPENVPN


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

Synchronisation d'annuaire Active Directory et de base LDAP

Exposé Nouvelles Technologies et Réseaux LDAP 22/01/ Exposé Nouvelle Technologies Réseaux - LDAP. Lightweight Directory Access Protocol

M2-ESECURE Rezo TP3: LDAP - Mail

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

LDAP : pour quels besoins?

Tutorial OpenLDAP. Installation et configuration (clients/serveurs) Migration NIS LDAP dans GRID5000 Sécurisation par SSL et optimisations

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

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

A. À propos des annuaires

Projet Administration Réseaux

Déploiement de (Open)LDAP

Introduction aux services Active Directory

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

LINUX REMPLAÇANT WINDOWS NT

FreeNAS Shere. Par THOREZ Nicolas

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Service d'authentification LDAP et SSO avec CAS

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

Réaliser un inventaire Documentation utilisateur

Ajout et Configuration d'un nouveau poste pour BackupPC

Le protocole FTP (File Transfert Protocol,

Architecture de la plateforme SBC

WGW PBX. Guide de démarrage rapide

Gestion d identités PSL Installation IdP Authentic

Description de la maquette fonctionnelle. Nombre de pages :

Les différentes méthodes pour se connecter

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

PARAMETRER SAMBA 2.2

WDpStats Procédure d installation

La double authentification dans SharePoint 2007

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

Tutoriel compte-rendu Mission 1

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Administration et Architectures des Systèmes

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

Kerberos/AD/LDAP/Synchro

Installation et configuration de Vulture Lundi 2 février 2009

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

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Déploiement de SAS Foundation

Annuaire LDAP, SSO-CAS, ESUP Portail...

Serveur d impression CUPS

Stage SambaÉdu Module B. Jour 9 Outils complémentaires et problèmes récurrents divers

Module 7 : Configuration du serveur WEB Apache

LP Henri Becquerel - Tours

TELECOM- ANNEE 2003/2004

Introduction. Pourquoi LTSP? Comment fonctionne-t-il? CIP Kevin LTSP BTS SIO

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

Sauvegardes par Internet avec Rsync

Lieberman Software Corporation

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

sshgate Patrick Guiran Chef de projet support

Serveur proxy Squid3 et SquidGuard

Mise en place d un proxy Squid avec authentification Active Directory

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

Table des matières Hakim Benameurlaine 1

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Mise en place Active Directory, DNS Mise en place Active directory, DNS sous Windows Serveur 2008 R2

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

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

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

Installation du client Cisco VPN 5 (Windows)

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

Mise en œuvre de Rembo Toolkit

Transcription:

Annuaire LDAP + Samba Ce document est de donner les bases nécessaires pour la création d'un annuaire LDAP qui sera utilisé pour l'authentification de comptes UNIX et Samba sur un serveur distant. L'objectif est de peupler l'annuaire LDAP avec les comptes du serveur de courriers électroniques du laboratoire pour une authentification unique pour chaque service. Ce document,rédigé au fil des test, décrit étape par étape les problèmes rencontrés et ne constitue qu'un point de départ pour l'utilisation complète de LDAP avec Samba, car il ne traite que de l'authentification des utilisateurs, pas de la gestion de groupes. Installation du serveur LDAP avec gestion des comptes Samba serveur:~ apt-get install slapd ldap-utils phpldapadmin Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Les paquets supplémentaires suivants seront installés : libiodbc2 libldap-2.3-0 libslp1 php5-ldap Paquets suggérés : slpd openslp-doc Les NOUVEAUX paquets suivants seront installés : ldap-utils libiodbc2 libldap-2.3-0 libslp1 php5-ldap phpldapadmin slapd 0 mis à jour, 7 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 2588ko dans les archives. Après dépaquetage, 8901ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n]? Remarque : le mot de passe pour l'administration de la base est demandé deux fois. Pour la configuration automatique, le logiciel utilise les paramètres renvoyés par la commande hostname -f Dans notre cas: serveur.cem2.univ-montp2.fr Le fichier de configuration du serveur LDAP est /etc/ldap/slapd.conf. The base of your directory in database 1 suffix "dc=cem2,dc=univ-montp2,dc=fr" rootdn directive for specifying a superuser on the database. This is needed for syncrepl. rootdn "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" Where the database file are physically stored for database 1 directory "/var/lib/ldap"

Le nom du domaine est cem2.univ-montp2.fr La base de l'annuaire est dc=cem2,dc=univ-montp2,dc=fr L'administrateur de la base est admin. Configuration de LDAP pour l'utilisation de Samba L'utilisation de Samba nécessite l'utilisation de classes d'objets supplémentaires. apt-get install samba-doc cp /usr/share/doc/samba-doc/examples/ldap/samba.schema.gz /etc/ldap/schema/ gunzip /etc/ldap/schema/samba.schema.gz Avec ces commandes, les fichiers décrivant les classes d'objets sont récupérés puis installés dans le répertoire /etc/ldap/schema qui contient tous les schémas pour la description des attributs et des classes d'objets. Ajouter dans le fichier /etc/ldap/slapd.conf la ligne suivante : include /etc/ldap/schema/samba.schema Schema and objectclass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema /etc/init.d/slapd restart pour prendre en compte les modifications. Les nouvelles classes d'objets relatives à Samba ont été installées et déclarées dans le fichier de configuration de LDAP. Le serveur LDAP est prêt à être utilisé. Pour visualiser le contenu actuel de la base il suffit de taper : slapcat less Pour tester le fichier de configuration, taper : slaptest -f /etc/ldap/slapd.conf config file testing succeeded Remarque : Lors de l'installation sur un nouveau serveur avec recopie d'une ancienne base, vérifier que les bases LDAP (répertoire /var/lib/ldap) appartiennent bien à l'utilisateur openldap. Dans le cas contraire, le serveur ldap se lance sans aucun message d'erreur mais le port 389 n'est pas ouvert en écoute, donc impossible de gérer ou de s'authentifier sur la base. Remarque : Si un serveur «web» est installé, il est possible d'administrer l'annuaire avec phpldapadmin (apt-get install phpldapadmin). Il suffit d'ajouter phpldapadmin au nom du serveur : le nom de connexion est le nom complet de l'administrateur. http://nom_serveur/phpldapadmin/ cn=admin,dc=cem2,dc=univ-montp2,dc=fr

Peupler l'annuaire Il existe différentes manières d'administrer le serveur LDAP : Les commandes slap utilisables directement sur le serveur Les commandes slap accèdent directement à la base. Il est donc nécessaire d'arrêter le serveur LDAP avant de les utiliser pour éviter qu'un accès concurrent ne corrompe la base. Slapcat, très utile, permet de faire un «dump» de la base et donc de faire une sauvegarde régulière. Elle affiche le contenu de la base au format LDIF. slapcat > sauvegarde.ldif Slapadd permet de peupler l'annuaire, typiquement utilisé pour restaurer une sauvegarde effectuée par slapcat. slapadd < entree.ldif Dans l'état actuel, slapcat nous renvoie : dn: dc=cem2,dc=univ-montp2,dc=fr objectclass: top objectclass: dcobject objectclass: organization o: cem2.univ-montp2.fr dc: cem2 structuralobjectclass: organization entryuuid: 0c10d87a-c29b-102d-8f39-dda6c2d14388 creatorsname: modifiersname: createtimestamp: 20090421083500Z modifytimestamp: 20090421083500Z entrycsn: 20090421083500Z00000000000000 dn: cn=admin,dc=cem2,dc=univ-montp2,dc=fr objectclass: simplesecurityobject objectclass: organizationalrole cn: admin description: LDAP administrator userpassword:: e2nyexb0fxdoddbxam1idjh0t1k= structuralobjectclass: organizationalrole entryuuid: 0d5ff6ca-c29b-102d-8f3a-dda6c2d14388 creatorsname: modifiersname: createtimestamp: 20090421083502Z modifytimestamp: 20090421083502Z entrycsn: 20090421083502Z00000000000000 La base contient les objets de dn (Distinguished Name) dn: dc=cem2,dc=univmontp2,dc=fr et dn: cn=admin,dc=cem2,dc=univ-montp2,dc=fr Remarque : pour la suite, tous les comptes appartiendront à une classe d'objet iesusers.

La gestion de la base par ces outils est très limitée, effacement, modification sont impossibles. De plus, lors d'un ajout il n'y a pas de vérification de cohérence des données. Les commandes ldap utilisables depuis un client ou un serveur Le paramétrage du fichier /etc/ldap/ldap.conf est effectué à l'installation des paquets pour éviter de fournir à chaque entrée d'une commande les paramètres (options) comme le nom de la base de données, le nom du serveur. Ces outils sont contenus dans le paquet ldap-utils. Tout ce qui suit peut être fait indifféremment d'un serveur ou d'un client LDAP!!!! apt-get install ldap-utils installe les commandes ldap de gestion de l'annuaire. Quelques commandes ldap ldapadd Lien vers ldapmodify, permet d'ajouter un nouvel objet dans la base. ldapcompare Comparaison avec un autre serveur ldap. ldapdelete Supprime un objet. ldapdelete -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe "uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr" ldapmodify Permet de modifier un objet, elle est aussi utilisée pour créer un objet avec l'option -a. Voici un exemple de l'utilisation de la commande ldapmodify, les attributs à modifier sont séparés par une ligne «-» dans le fichier ldif. L'exemple suivant modifie tous les mots de passe de l'utilisateur. La commande suivante associée au fichier tempo.ldif permet de modifier les mots de passe utilisateurs pour Samba : ldapmodify -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f tempo.ldif dn: uid=tempo6,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr changetype: modify replace: userpassword userpassword: {crypt}duknctpdxakgq - replace: sambalmpassword sambalmpassword: BBCB4942DD9DA506C482C03F54CDB5D9 - replace: SambaNTPassword SambaNTPassword: 1B35029A05581E17F66382EB8A6BC026 - ldapmodrdn Permet de renommer une entrée. Modification du RDN.

ldappasswd Permet de définir les mots de passe des utilisateurs LDAP. Cela ne concerne pas les attributs sambalmpassword et sambantpassword. ldapsearch Recherche dans l'annuaire. Configuration du fichier /etc/ldap/ldap.conf $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $ LDAP Defaults See ldap.conf(5) for details This file should be world readable but not world writable. BASE dc=example, dc=com URI ldap://ldap.example.com ldap://ldap-master.example.com:666 BASE dc=cem2, dc=univ-montp2.fr, dc=fr URI ldap://162.38.134.18:389 SIZELIMIT 12 TIMELIMIT 15 DEREF never Le premier test de remplissage de l'annuaire peut être fait avec la commande ldapadd. Le but est de créer l'objet iesusers qui sera la racine de tous les comptes. Je rappelle qu'avec les commandes ldap, ce remplissage peut se faire indifféremment du serveur ou d'un client sur lesquels le paquet ldap-utils a été installé. Dans ma configuration, le paquet ldap-utils a été installé sur le client et le serveur, je peuple l'annuaire par le biais du serveur avec la commande ldapadd et je verifie sur mon client que la commande ldapsearch est aussi opérationnelle, donc que mon annuaire est accessible. ldapadd -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f iesusers.ldif Brièvement pour les options : -x utilise l'authentification simple à la place de SASL. -D binddn pour se lier à l'annuaire. -W pour avoir une invite pour entrer le mot de passe. -w pour spécifier le mot de passe à la suite. -f pour spécifier le fichier au format LDIF. Création de l'entrée iesusers ldapadd -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f iesusers.ldif adding new entry "ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr" Le fichier iesusers.ldif contient:

dn: ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr ObjectClass: top objectclass: organizationalunit ou: iesusers Entrée des utilisateurs existants dans l'annuaire LDAP : Pour entrer un utilisateur dans l'annuaire, j'utilise un script shell recup qui récupère les données «obligatoires» de la classe posixaccount. Ce script balaye les fichiers /etc/passwd pour récupérer les paramètres concernant l'utilisateur, et /etc/shadow pour le mot de passe crypté. Le script est lancé via la commande /travail/ldap/recup arnal. Le fichier récupéré à la sortie du script : dn: uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr objectclass: top objectclass: account objectclass: posixaccount cn: Stephane ARNAL uid: arnal uidnumber: 40198 gidnumber: 40200 homedirectory: /home/arnal userpassword: {crypt}$1$z2uny1nt$ftxsbxuubj1em6qpufxqx1 Attention : sur ce fichier exemple il manque la ligne concernant le shell utilisé : loginshell: /bin/bash Cet oubli n'était pas volontaire, l'erreur est laissée ici mais sera corrigée par la suite avec la commande ldapmodify. ldapadd -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f arnal.ldif adding new entry "uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr" L'utilisateur arnal vient d'être rentré. Il est possible de le vérifier par: serveur:~ ldapsearch -x -b "dc=cem2,dc=univ-montp2,dc=fr" "(uid=arn*)" extended LDIF LDAPv3 base <dc=cem2,dc=univ-montp2,dc=fr> with scope subtree filter: (uid=arn*) requesting: ALL arnal, iesusers, cem2.univ-montp2.fr dn: uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr objectclass: top objectclass: account

objectclass: posixaccount cn: Stephane ARNAL uid: arnal uidnumber: 40198 gidnumber: 40200 homedirectory: /home/arnal search result search: 2 result: 0 Success numresponses: 2 numentries: 1 Commande ldapmodify Arrivé à cette étape, il peut être nécessaire de modifier les données entrées dans l'annuaire. La commande ldapmodify est utilisée à cet effet. Elle est un peu plus compliquée que ldapadd. Elle utilise aussi le format ldif avec l'ajout d'un attribut changetype. C'est une commande très complète. Pour modifier une entrée, l'attribut de changetype est modify. Il faut ajouter ensuite dans le fichier ldif la ligne add : nom_attribut. Dans le cas présent, je veux ajouter l'attribut loginshell: /bin/bash pour l'utilisateur arnal. Le fichier arnal_modif.ldif a la forme suivante: dn: uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr changetype: modify add: loginshell loginshell: /bin/bash ldapmodify -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f arnal_modif.ldif La commande ldapsearch -x -b "dc=cem2,dc=univ-montp2,dc=fr" "(uid=arn*)" nous indique bien que l'attribut a été rajouté. Remarque : Pour supprimer cette entrée il est possible d'utiliser la commande ldapdelete: ldapdelete -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe "uid=arnal,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr" Configuration d'un client pour authentification Les premiers utilisateurs sont créés.dans un premier temps, il est nécessaire de vérifier que notre annuaire peut être utilisé afin d'authentifier des utilisateurs sur une machine cliente. Pour l'authentification, il est nécessaire d'installer des paquets supplémentaires pour pam. apt-get install libpam-ldap libnss-ldap

Voici les paramètres fournis lors de l'installation des paquets, pour les options les choix par défaut sont laissés : ldap://162.38.134.12:389 dc=cem2,dc=univ-montp2,dc=fr Version de LDAP à utiliser 3 Compte LDAP superutilisateur : cn=admin,dc=cem2,dc=univ-montp2,dc=fr Mot de passe de l'administrateur : mot_de_passe Configuration de NSS pour LDAP Le fichier de configuration de libnss-ldap est /etc/libnss-ldap.conf, il a été rempli lors de l'installation des paquets. Si ce n'est pas le cas il est possible de le faire avec la commande dpkg-reconfigure libnss-ldap. Il faut maintenant indiquer à NSS d'utiliser LDAP pour obtenir des informations. Le fichier /etc/nsswitch.conf n'a pas été modifié, modifier les lignes suivantes pour l'authentification : passwd: group: shadow: files ldap files ldap files ldap Cela signifie que pour ces trois entrées c'est le serveur LDAP qui sera interrogé en dernier par NSS pour valider un utilisateur, en cas d 'échec c'est ldap qui se chargera de l'authentification. En tapant maintenant getent passwd utilisateur (utilisateur contenu dans l'annuaire LDAP précédemment créé), nous devrions avoir les informations sur celui-ci. getent passwd donne la liste des comptes utilisateurs dans laquelle apparaissent les comptes créés dans l'annuaire. Si je tape getent passwd arnal j'obtiens : arnal:$1$z2uny1nt$ftxsbxuubj1em6qpufxqx1:40198:40200:stephane ARNAL:/home/arnal: Configuration de PAM pour LDAP PAM va permettre d'authentifier les utilisateurs via LDAP. Comme pour libnss-ldap les questions posées à l'installation ont permis de remplir le fichier /etc/pam_ldap.conf. ATTENTION Une erreur dans la modification des fichiers de configuration de PAM peut entraîner l impossibilité de se connecter, même avec root. Avant de modifier la configuration, il est fortement recommandé de se connecter sous une autre console en root pour pouvoir corriger le problème. Les fichiers de configuration d'authentification de PAM se trouvent dans /etc/pam.d. Il y a un fichier par service. Heureusement ces services incluent dans leur fichier de configuration des fichiers «communs» qui sont /etc/pam.d/common-auth, /etc/pam.d/common-account, /etc/pam.d/common-session et /etc/pam.d/common-passwd. L'ordre d'apparition des lignes est important, required indique que si le résultat est

positif les autres modules seront quand mêmes analysés avant de prendre une décision, sufficient indique qu'un résultat positif est suffisant pour valider la vérification. Configuration de common-session /etc/pam.d/common-session - session-related modules common to all services This file is included from other service-specific PAM config files, and should contain a list of modules that define tasks to be performed at the start and end of sessions of *any* kind (both interactive and non-interactive). The default is pam_unix. session required pam_unix.so session required pam_limits.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel La ligne contenant pam_mkhomedir.so indique que lors de l'ouverture de la session le répertoire de l'utilisateur sera créé s'il n'existe pas. Pour cela il est nécessaire d'installer le paquet libpam-mkhomedir si celui-ci n'a pas été installé. apt-get install libpam-mkhomedir Remarque : le répertoire /etc/skel (répertoire modèle pour la création des répertoires) contient les fichiers de configuration tels que.bashrc,.bash-profile, et.bash-logout. Ce sont des copies des fichiers contenus dans le répertoire «courant» de l'utilisateur. Configuration de common-password Il suffit de rajouter la ligne suivante au «début du fichier» password sufficient pam_ldap.so /etc/pam.d/common-password - password-related modules common to all services This file is included from other service-specific PAM config files, and should contain a list of modules that define the services to be used to change user passwords. The default is pam_unix The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in login.defs. Also the "min" and "max" options enforce the length of the new password. password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 md5

Configuration de common-account Presque la même opération, ajouter la ligne suivante au «début du fichier»: account sufficient pam_ldap.so /etc/pam.d/common-account - authorization settings common to all services This file is included from other service-specific PAM config files, and should contain a list of the authorization modules that define the central access policy for use on the system. The default is to only deny service to users whose accounts are expired in /etc/shadow. account sufficient pam_ldap.so account required pam_unix.so Configuration de common-auth Ajouter la ligne suivante au «début de fichier». auth sufficient pam_ldap.so /etc/pam.d/common-auth - authentication settings common to all services This file is included from other service-specific PAM config files, and should contain a list of the authentication modules that define the central authentication scheme for use on the system (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the traditional Unix authentication mechanisms. auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure Il est maintenant possible de se connecter via ssh ou en local sur le client avec le compte arnal qui a été ajouté dans l'annuaire ldap. On constate que la création du répertoire personnel est faite automatiquement sur le client lors de la première connexion. Préparation des comptes Samba La partie configuration Samba avec LDAP est relativement simple et assez rapide. La difficulté est de générer les mots de passe pour chaque utilisateur. J'ai opté pour un script perl (perl doit être installé sur le serveur avec la librairie libcrypt-smbhashperl, Sup perl). Dans le cas présent, les mots de passe UNIX et Samba pour les comptes déjà existants seront différents puisque je n'ai aucun moyen de récupérer cette information. Mais par la suite, le même script Perl sera utilisé pour générer les nouveaux mots de passe ou pour modifier ceux existants. Les deux chaînes $nt et $lm sont récupérées pour obtenir les valeurs de

sambalmpassword et sambantpassword (voir plus loin). Exemple de création des mots de passe samba avec Perl, script mots.pl!/usr/bin/perl -w use strict; use Crypt::SmbHash; my $lm; my $nt; my $mot="mot_de_passe"; ntlmgen $mot, $lm, $nt; ( $lm, $nt ) = ntlmgen $mot; $nt = nthash(mot); $lm = lmhash(mot); print "${lm} : ${nt}\n"; Lancement du scipt: perl -w mots.pl qui donne pour notre mot de passe: 476944521C17CE5836077A718CCDF409 : 9B7C14D2110FD451980963B585BB267A Récupération d'un SID Remarque : Samba doit être opérationnel. Un SID de domaine est nécessaire pour Samba. Dans ce cas, le serveur que je dois remplacer existe déjà et je récupère son SID avec : net getlocalsid 1. SID for domain BACKUP2 is: S-1-5-21-1835574758-856875503-2789082536 Pour le calcul du dernier numéro du SID d'un utilisateur il est possible d'utiliser la formule: (2 x uidnumber) + 1000. Dans un premier temps, et pour les tests, seuls les paramètres obligatoires ont été utilisés, pour les connaître il est nécessaire de visualiser le contenu du fichier de description de la classe sambasamaccount /etc/ldap/schema/samba.schema. objectclass ( 1.3.6.1.4.1.7165.2.2.6 NAME 'sambasamaccount' SUP top AUXILIARY DESC 'Samba 3.0 Auxilary SAM Account' MUST ( uid $ sambasid ) MAY ( cn $ sambalmpassword $ sambantpassword $ sambapwdlastset $ sambalogontime $ sambalogofftime $ sambakickofftime $ sambapwdcanchange $ sambapwdmustchange $ sambaacctflags $ displayname $ sambahomepath $ sambahomedrive $ sambalogonscript $ sambaprofilepath $ description $ sambauserworkstations $ sambaprimarygroupsid $ sambadomainname $ sambamungeddial $ sambabadpasswordcount $ sambabadpasswordtime $ sambapasswordhistory $ sambalogonhours))

Configuration du serveur Samba qui va s'authentifier sur l'annuaire Le fichier /etc/pam.d/samba contient les lignes suivantes. Il n'y a donc rien à configurer de ce coté là, ces fichiers ont déjà été modifiés précédemment. @include common-auth @include common-account @include common-session Après l'installation de samba, il est nécessaire d'effectuer quelques modifications dans le fichier /etc/samba/smb.conf, comme transformer la ligne passdb backend = tdbsam en passdb backend = ldapsam:ldap://162.38.134.18/ et rajouter les lignes suivantes pour indiquer à Samba que l'authentification se fait par LDAP. Modifier le fichier /etc/samba/smb.conf comme suit: passdb backend = tdbsam passdb backend = ldapsam:ldap://162.38.134.18/ ldap admin dn = cn=admin,dc=cem2,dc=univ-montp2,dc=fr ldap suffix = dc=cem2,dc=univ-montp2,dc=fr ldap group suffix = ou=groups ldap user suffix = ou=iesusers ldap machine suffix = ou=machines Ne pas oublier de rendre les répertoires accessibles en écriture: [homes] comment = Home Directories browseable = no browseable = yes By default, the home directories are exported read-only. Change next parameter to 'yes' if you want to be able to write to them. writable = no writable = yes Il est nécessaire de rentrer ensuite le mot de passe de l'administrateur de la base LDAP pour Samba dans /var/lib/samba/secrets.db, puis de redémarrer samba: smbpasswd -w mot_de_passe /etc/init.d/samba restart Inconvénient, le répertoire n'est pas directement créé par samba, il suffit de créer un script qui s'exécutera à la connexion de chaque utilisateur. Création automatique des répertoires Dans la section [homes] de /etc/samba/smb.conf on ajoute:

root preexec = /travail/samba/creation.sh %U [homes] comment = Home Directories path = /home/%u root preexec = /travail/samba/creation.sh %U browseable = yes writeable= yes Ensuite on créé le fichier /travail/samba/creation.sh!/bin/bash!/bin/bash On donne ensuite les if [! -e /home/$1 ]; then mkdir /home/$1 chown $1 /home/$1 chmod 700 /home/$1 fi exit 0 chmod +x /travail/samba/creation.sh droits: Création des comptes finaux sur le serveur Pour tester le fonctionnement, il suffit de créer un utilisateur complètement «virtuel» dans l'annuaire et d'essayer de se connecter à partir d'une machine sous Windows sur le serveur. Création de l'utilisateur avec le fichier test.ldif sur le serveur qui reprend l'ancien utilisateur arnal et les mots de passe générés par le script mots.pl. test.ldif dn: uid=sambatest,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr objectclass: top objectclass: account objectclass: posixaccount objectclass: sambasamaccount cn: Stephane ARNAL uid: sambatest uidnumber: 2000 gidnumber: 2000 homedirectory: /home/sambatest userpassword: {crypt}$1$z2uny1nt$ftxsbxuubj1em6qpufxqx1 loginshell: /bin/bash sambasid: S-1-5-21-1835574758-856875503-2789082536-5000 sambalmpassword: S-1-5-21-1835574758-856875503-2789082536 sambantpassword: 9B7C14D2110FD451980963B585BB267A

La commande suivante créé l'utilisateur: ldapadd -x -D "cn=admin,dc=cem2,dc=univ-montp2,dc=fr" -w mot_de_passe -f test.ldif adding new entry "uid=sambatest,ou=iesusers,dc=cem2,dc=univ-montp2,dc=fr" Finalisation sur le serveur Génération des mots de passe cryptés pour samba pour un utilisateur à l'aide d'un script perl dont la sortie est récupérée par un script shell.!/usr/bin/perl -w use strict; use Crypt::SmbHash; my $lm; my $nt; ( $lm, $nt ) = ntlmgen $ARGV[1]; print "$ARGV[0]:${lm}:${nt}\n"; La variable $ARGV[0] contient le nom de l'utilisateur et $ARGV[1] son mot de passe en clair. La sortie se fait sur l'écran, le programme sera appelé par un script shell qui redirigera la sortie vers un fichier pour traitement et création du fichier LDIF../crypte.pl arnal mot_de_passe Remarque : Perl doit être installé sur le serveur avec la librairie libcrypt-smbhash-perl (Sup perl). Les bases pour l'utilisation de LDAP avec Samba sont maintenant posées et le mécanisme principalement décortiqué. Il est possible d'étendre l'utilisation aux groupes et aux «machines» ce qui n'était pas l'objectif premier. Ci-dessous, la procédure qui permet d'installer un autre serveur Samba utilisant l'annuaire mis en place. Installation d'un autre client Installation de Samba apt-get install samba Vérifier que le serveur est opérationnel avec les comptes locaux. Installation authentification LDAP apt-get install libpam-ldap libnss-ldap Voici les paramètres fournis lors de l'installation des paquets, pour les options les choix

par défaut sont laissés : ldap://162.38.134.12:389 dc=cem2,dc=univ-montp2,dc=fr Version de LDAP à utiliser 3 Compte LDAP superutilisateur: cn=admin,dc=cem2,dc=univ-montp2,dc=fr Mot de passe de l'administrateur : mot_de_passe Configuration de NSS pour LDAP Le fichier de configuration de libnss-ldap est /etc/libnss-ldap.conf, il a été rempli lors de l'installation des paquets ou avec la commande dpkg-reconfigure libnss-ldap. Il faut maintenant indiquer à NSS d'utiliser LDAP pour obtenir des informations. Le fichier /etc/nsswitch.conf n'a pas été modifié, changer les lignes suivantes pour l'authentification: passwd: group: shadow: files ldap files ldap files ldap /etc/init.d/nscd start si l'installation ne l'a pas lancé, sans cela il ne sera pas possible par la suite à un utilisateur contenu dans l'annuaire de s'identifier.. En tapant maintenant getent passwd utilisateur (utilisateur contenu dans l'annuaire LDAP précédemment créé), nous devrions avoir les informations sur celui-ci. getent passwd donne la liste des comptes utilisateurs dans laquelle apparaissent les comptes créés dans l'annuaire. Si je tape getent passwd arnal j'obtiens: arnal:$1$z2uny1nt$ftxsbxuubj1em6qpufxqx1:40198:40200:stephane ARNAL:/home/arnal: Configuration de PAM pour LDAP PAM va permettre d'authentifier les utilisateurs via LDAP. Comme pour libnss-ldap, les questions posées à l'installation ont permis de remplir le fichier /etc/pam_ldap.conf. ATTENTION Une erreur dans la modification des fichiers de configuration de PAM peut entraîner l impossibilité de se connecter, même sous root. Avant de modifier la configuration, il est fortement recommandé de se connecter sous une autre console en root pour pouvoir corriger le problème. Les fichiers de configuration d'authentification de PAM se trouvent dans /etc/pam.d. Il y a un fichier par service. Heureusement ces services incluent dans leur fichier de configuration des fichiers «communs» qui sont /etc/pam.d/common-auth, /etc/pam.d/common-account, /etc/pam.d/common-session et /etc/pam.d/common-passwd. L'ordre d'apparition des lignes est important, required indique que si le résultat est positif les autres modules seront quand mêmes analysés avant de prendre une décision, sufficient indique qu'un résultat positif est suffisant pour valider la vérification.

Configuration de common-session /etc/pam.d/common-session - session-related modules common to all services This file is included from other service-specific PAM config files, and should contain a list of modules that define tasks to be performed at the start and end of sessions of *any* kind (both interactive and non-interactive). The default is pam_unix. session required pam_unix.so session required pam_limits.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel La ligne contenant pam_mkhomedir.so indique que lors de l'ouverture de la session le répertoire de l'utilisateur sera créé s'il n'existe pas. Pour cela il est nécessaire d'installer le paquet libpam-mkhomedir, si celui-ci n'a pas été installé. apt-get install libpam-mkhomedir Remarque : le répertoire /etc/skel (répertoire modèle pour la création des répertoires) contient les fichiers de configuration tels que.bashrc,.bash-profile, et.bash-logout. Ce sont des copies des fichiers contenus dans le répertoire «courant» de l'utilisateur. Configuration de common-password Il suffit de rajouter la ligne suivante au «début du fichier» password sufficient pam_ldap.so /etc/pam.d/common-password - password-related modules common to all services This file is included from other service-specific PAM config files, and should contain a list of modules that define the services to be used to change user passwords. The default is pam_unix The "nullok" option allows users to change an empty password, else empty passwords are treated as locked accounts. (Add `md5' after the module name to enable MD5 passwords) The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in login.defs. Also the "min" and "max" options enforce the length of the new password. password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 md5 Configuration de common-account Presque la même opération, ajouter la ligne suivante au «début du fichier»:

account sufficient pam_ldap.so /etc/pam.d/common-account - authorization settings common to all services This file is included from other service-specific PAM config files, and should contain a list of the authorization modules that define the central access policy for use on the system. The default is to only deny service to users whose accounts are expired in /etc/shadow. account sufficient pam_ldap.so account required pam_unix.so Configuration de common-auth Ajouter la ligne suivante au «début de fichier». auth sufficient pam_ldap.so /etc/pam.d/common-auth - authentication settings common to all services This file is included from other service-specific PAM config files, and should contain a list of the authentication modules that define the central authentication scheme for use on the system (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the traditional Unix authentication mechanisms. auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure Il est maintenant possible de se connecter via ssh ou en local sur le client avec le compte arnal qui a été ajouté dans l'annuaire ldap avec le même mot de passe que celui utilisé sur le serveur. On constate aussi que la création du répertoire personnel est faite automatiquement sur le client lors de la première connexion (avec ssh, et non Samba!). Configuration de Samba Le fichier /etc/pam.d/samba contient les lignes suivantes. Il n'y a donc rien à configurer de ce coté là, ces fichiers ont déjà été modifiés précédemment. @include common-auth @include common-account @include common-session Après l'installation de samba il est nécessaire d'effectuer quelques modifications dans le fichier /etc/samba/smb.conf, comme transformer la ligne passdb backend = tdbsam en passdb backend = ldapsam:ldap://162.38.134.18/ et rajouter les lignes suivantes pour indiquer à Samba d'accéder à la base LDAP. Modifier le fichier /etc/samba/smb.conf comme suit:

passdb backend = tdbsam passdb backend = ldapsam:ldap://162.38.134.18/ ldap admin dn = cn=admin,dc=cem2,dc=univ-montp2,dc=fr ldap suffix = dc=cem2,dc=univ-montp2,dc=fr ldap group suffix = ou=groups ldap user suffix = ou=iesusers ldap machine suffix = ou=machines Ne pas oublier de rendre les répertoires accessibles en écriture: [homes] comment = Home Directories browseable = no browseable = yes By default, the home directories are exported read-only. Change next parameter to 'yes' if you want to be able to write to them. writable = no writable = yes Il est nécessaire de rentrer ensuite le mot de passe de l'administrateur de la base LDAP pour Samba dans /var/lib/samba/secrets.db, puis de redémarrer samba: smbpasswd -w mot_de_passe /etc/init.d/samba restart Inconvénient, le répertoire n'est pas directement créé par samba, il suffit donc de créer un script qui s'exécutera à la connexion de chaque utilisateur. Création automatique des répertoires Dans la section [homes] de /etc/samba/smb.conf, ajouter : root preexec = /travail/samba/creation.sh %U [homes] comment = Home Directories path = /home/%u root preexec = /travail/samba/creation.sh %U browseable = yes writeable= yes Ensuite créer le fichier /travail/samba/creation.sh!/bin/bash!/bin/bash if [! -e /home/$1 ]; then mkdir /home/$1 chown $1 /home/$1 chmod 700 /home/$1 fi exit 0

Donner ensuite les droits d'exécution chmod +x /travail/samba/creation.sh Il ne reste plus qu'à essayer de copier des fichiers sur le serveur samba dont les comptes sont entièrement gérés par des scripts remplissant l'annuaire ldap. Restauration du serveur LDAP avec gestion des comptes Samba Les répertoires indispensables au fonctionnement d'openldap sont : /etc/ldap et /var/lib/ldap. Mais la solution idéale est de faire une sauvegarde régulière du fichier /etc/ldap/slapd.conf et de l'annuaire par la commande slapcat, pour une procédure plus simple en cas de restauration. Faire une sauvegarde de l'annuaire : slapcat > sauvegarde.ldif Installer les différents paquets si ce n'est déjà fait : apt-get install slapd ldap-utils samba-doc cp /usr/share/doc/samba-doc/examples/ldap/samba.schema.gz /etc/ldap/schema/ gunzip /etc/ldap/schema/samba.schema.gz Avec ces commandes, les fichiers décrivant les classes d'objets sont récupérés puis installés dans le répertoire /etc/ldap/schema qui contient tous les schémas pour la description des attributs et des classes d'objets. Ajouter dans le fichier /etc/ldap/slapd.conf la ligne suivante : include /etc/ldap/schema/samba.schema Schema and objectclass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema Il est possible de copier tel quel le fichier si les versions d'openldap sont les mêmes. En cas de problèmes utiliser la commande dpkg-reconfigure slapd en faisant attention au type de base : hdb ou bdb. /etc/init.d/slapd stop pour arrêter le service. Editer le fichier sauvegarde.ldif pour supprimer toutes les premières entrées principales liées à la configuration de l'annuaire. Garder toutes les informations relatives aux branches que vous avez créées. Restaurer votre annuaire avec la commande slapadd < sauvegarde.ldif

/etc/init.d/slapd restart pour prendre en compte les modifications. La commande slapcat permet de vérifier que la base de l'annuaire est valide et bien remplie avec les anciennes valeurs. Remarque : Une copie brute du répertoire entier /var/lib/ldap peut entraîner un mauvais fonctionnement de LDAP et générer de nombreuses erreurs qui apparaissent dans le fichier /var/log/syslog. La commande slapcat permet de vérifier que la base de l'annuaire est valide et remplie avec les anciennes valeurs. Test de l'installation La gestion de l'annuaire peut se faire par phpldapadmin si un serveur «web» est installé. apt-get install phpldapadmin Dans un navigateur taper http://adresse_ip_serveur/phpldapadmin Entrer le nom complet de l'administrateur, ici cn=admin,dc=cem2,dc=univmontp2,dc=fr Puis entrer le mot de passe. Si la connexion réussit et l'annuaire apparaît, l'installation est complète et fonctionnelle. Vérifier malgré tout, cela dans le fichier /var/log/syslog après redémarrage de slapd. Remarques importantes * Dans le fichier /etc/smb.conf ne pas oublier dans la partie domains l'option domain logons = yes Dans le cas contraire des problèmes de SID se poseront. * Attention : Les nouvelles versions de Samba contôlent maintenant le champ sambaacctflags qui indiquent le comportement du compte. Il est donc nécessaire de rajouter ce champ dans notre base annuaire pour ces versions là! SambaAcctFlags: [UX] (X indique que le mot de passe n'expire jamais). Stephane.Arnal@ies.univ-montp2.fr