Association Générale des Utilisateurs de logiciels libres en Côte-d'Or
Rubriques
Notre ami Tux en rodéo sur l'escargot de Bourgogne :-) |
Contrôleur de domaine avec Samba et LDAP sous Debian ETCH
Rubrique :
Réseaux
Le : samedi 1er septembre 2007 Par : Tony Visites : 45249 Tags : acl, Débian, Etch, Konqueror, OpenLDAP, phpldapadmin, Samba, smbldap-tools But de ce documentCe document me sert de mémo pour mettre en place un contrôleur de domaine avec Samba et une authentification des comptes Linux/Samba avec LDAP. J’ai testé ce mémo sur une Debian ETCH. Installation d’OpenLDAP
Questions posées lors de l’installation de slapd
Lors de l’installation du paquet slapd, le domaine à gérer (ex : mondomaine.net) et le mot de passe de l’administrateur sont demandés. Ce dernier est stocké directement dans la base LDAP. Remarque : Après la configuration du paquet slapd, la base de données sera initialisée dans « /var/lib/ldap ». Si vous souhaitez changer la racine de votre arbre ldap, il est conseillé d’arrêter le serveur ldap, supprimer le dossier « /var/lib/ldap » et de re-configurer le paquet avec la commande :
Ensuite, il faut ajouter la ligne suivante dans « /etc/ldap/slapd.conf » :
Remarque : Le paquet suivant permet de récupérer le schéma ldap pour samba : # aptitude install samba-docPour finir, il faut démarrer ou re-démarrer le serveur :
Une fois le serveur ldap initialisé et démarré la base doit contenir les deux entrées suivantes :
Attention : si ce n’est pas le cas, il faut recommencer l’installation et purger la base avant de continuer. Vous pouvez le vérifier avec cette commande ou en passant par phpldapadmin :
Installation de phpldapadmin pour consulter et modifier l’annuaire LDAPLe paquet « phpldapadmin » permet de consulter et de modifier la base de données LDAP en mode Web. Cette installation n’est pas obligatoire, mais phpldapadmin permet de consulter la base ldap et de vérifier que tout se passe correctement :
Ensuite, l’accès se fait à cette adresse depuis un navigateur :
Installation de Samba
Voici un exemple de fichier de configuration de Samba « /etc/samba/smb.conf » avec l’authentification LDAP et un simple partage : Connecter Samba et LDAPLa commande suivante permet d’indiquer le mot de passe de l’admin de l’annuaire LDAP Ã Samba :
En cas de modification de mot de passe, vous pouvez le changer avec cette commande : etch:/home/tony# smbpasswdUne fois que Samba connaît le mot de passe de l’admin LDAP, le redémarrage de Samba doit être instantané :
Lors du démarrage, la clé « sambaDomainName=VotreDomaineSamba » est automatiquement créée dans l’annuaire LDAP. Pour information, ce mot de passe est stocké dans « /var/lib/samba/secrets.tdb » Installation et configuration de smbldap-toolsInstallation :
Le paquet « smbldap-tools » n’étant pas directement opérationnel, il faut le configurer comme c’est indiqué dans le « README.Debian » : $ zless /usr/share/doc/smbldap-tools/README.Debian.gzRécupération du SID du serveur Samba actif : # net getlocalsidRemarque 1 : Aucun message d’erreur ne doit apparaître avec la commande précédente. Configuration des fichiers suivants dans « /etc/smbldap-tools/smbldap.conf » : Remarque 2 : Le paquet « smbldap-tools » est approprié pour récupérer les comptes d’un serveur Windows pour les intégrer dans LDAP. De son coté, le paquet « migrationtools » est approprié pour récupérer les comptes d’une machine Linux (ex : un serveur NIS) pour les intégrer dans LDAP. Configuration de smbldap_bind.confIndiquer dans le fichier « /etc/smbldap-tools/smbldap_bind.conf » le nom et le mot de passe de l’administrateur ldap. ATTENTION : Dans ce fichier, le mot de passe est indiqué en clair. Il faut donc changer les droits de celui-ci par mesure de sécurité :
Configuration de smbldap.confDans le fichier « /etc/smbldap-tools/smbldap.conf », il faut indiquer le bon domaine sur les lignes concernées et il faut également indiquer le SID trouvé précédemment : SID="S-1-5-21-1823372447-3251260116-3214873863"Initialisation de la base de données LDAPLa commande suivante permet d’initialiser la base de données LDAP :
Attention : aucune erreur ne doit apparaître. En cas d’erreur, il est possible de corriger le problème de configuration et de relancer cette commande. Créer un nouvel utilisateurLa commande suivante permet de créer un nouvel utilisateur (sur Testing) :
Sous Sarge, le paramètre « -c » n’est pas reconnu :
Remarque : Après la création du compte et pour éviter que le mot de passe expire au bout de 3 semaines, il faut supprimer manuellement l’attribut « SambaPwdMustChange » avec par exemple « phpldapadmin ». La commande suivante permet de vérifier que cet utilisateur arrive bien à se connecter aux partages samba :
La commande suivante permet de supprimer un utilisateur :
Remarque 1 : Vous trouverez plus d’informations sur les commandes précédentes dans les pages de man. Remarque 2 : Pour modifier les valeurs par défaut, il faut modifier le fichier « /etc/smbldap-tools/smbldap.conf ». Personnellement, j’ai commenté dans ce fichier, les lignes « userSmbHome », « userProfile » et « userHomeDrive » et j’ai modifié la ligne « userScript="%U.cmd" » en « userScript="logon.bat" » Remarque 3 : Pour ajouter un nouvel attribut à l’utilisateur (adresse mail, numéro de téléphone,..) il faut passer par « phpldapadmin » Changer le mot de passe d’un utilisateurLa commande suivante permet de changer en même temps les différents mots de passe stockés dans la base LDAP :
Remarque : Il est possible de changer les mots de passe de manière individuelle avec « phpldapadmin » Interroger la base de données LDAPLa commande suivante permet d’interroger la base de données LDAP :
Mais le plus simple est encore de passer par « phpldapadmin » Configuration du système NSS (Name Service Switch)NSS (ou nssiwtch) permet aux applications de savoir où sont stockées les bases de données systèmes pour pouvoir exploiter les informations qu’elles contiennent (Mot de passe, nom de la personne ou de l’ordinateur,..) Paquet à installer :
Remarque : Le paquet « libnss-ldap » permet de faire le lien entre le système « nssiwtch » et le système LDAP. Pour cela il utilise le fichier de configuration « /etc/libnss-ldap » et il stocke le mot de passe du serveur ldap dans le fichier « /etc/libnss-ldap.secret ». Pour des raisons de sécurité, il est possible de ne pas stocker le mot de passe (en clair) dans « libnss-ldap.secret », mais dans ce cas, l’utilisateur root local ne pourra pas changer de mot de passe dans la base LDAP. Lors de l’installation de ces paquets, il est nécessaire d’indiquer le domaine géré et le mot de passe administrateur de la base LDAP.
Ensuite, dans le fichier « /etc/nsswitch.conf », il faut ajouter « ldap » sur 3 lignes, ce qui donne : passwd: compat ldapRemarque : Certains mémo placent « ldap » avant « compat » pour que la base ldap soit interrogée avant la base locale, mais cela ne change pas grand chose. La commande suivante permet de vérifier que les utilisateurs de la base LDAP sont correctement ajoutés aux utilisateurs locaux : # getent passwdLa commande suivante permet de vérifier qu’un utilisateur de la base LDAP est bien reconnu :
Un bon test consiste également à affecter un utilisateur de la base LDAP sur un fichier # touch testRemarque : Certains mémos indiquent que la configuration de nsswitch est suffisante pour gérer l’authentification et qu’il n’est pas nécessaire de passer par PAM. Personnellement, je n’ai pas compris comment. De plus, ces mémos indiquent que la commande suivante doit retourner le mot de passe crypté, mais dans mon cas, ça ne marche pas ce qui explique peut-être pourquoi l’authentification uniquement avec nsswitch ne fonctionne pas dans mon cas :
Configuration de PAMATTENTION : PAM permet de configurer l’authentification sous Linux. Il n’y a rien à redémarrer après avoir modifié un fichier de configuration de PAM, mais toute erreur peut rendre impossible toute connexion même sous root. Il est donc fortement conseillé d’ouvrir une deuxième session sous root (ex : ALT+F1) avant de toucher à la configuration de PAM et de bien vérifier que les les connexions fonctionnent avant de se déconnecter. Paquet à installer :
Nous allons retrouver les mêmes questions que lors de l’installation du paquet « libnss-ldap »
ATTENTION : Le mot de passe indiqué précédemment est stocké dans le fichier « pam_ldap.conf » mais ce fichier est lisible par tout le monde. Il faut donc changer ses droits pour des raisons de sécurité :
Dans le dossier « /etc/pam.d »,’on retrouve un fichier de configuration pour chaque service (programme) ayant besoin d’une authentification. Il y a également des fichiers commençants par « common-* » qui sont inclus dans les autres fichiers à l’aide de la directive « @include-* ». Voici un exemple de contenu valable pour « /etc/pam.d/ssh » ou « /etc/pam.d/kdm » auth required pam_env.soRemarque : Concernant la configuration de PAM avec LDAP, des exemples de configuration sont fournis par le paquet « libpam-ldap » dans le dossier « /usr/share/doc/libpam-ldap/examples/pam.d » Installation d’un cache local avec NSCD pour accélérer les requêtesPour éviter que le poste client interroge le serveur LDAP en permanence, il est conseillé d’installer un cache local. Paquet à installer :
Remarque : Le ficher de configuration est « /etc/nscd.conf » ATTENTION : Sans l’installation de NSCD, je n’ai pas pu faire fonctionner Thunderbird et OpenOffice.org (cf chapitre « Problèmes rencontrés ») Comment ajouter un nouvel utilisateur à un groupeAvec phpldapadmin :
Autoriser un utilisateur du LDAP à ajouter des ordinateurs au domainePar défaut, aucun utilisateur du LDAP n’est autorisé a ajouter ou supprimer des ordinateurs du domaine. En effet, il ne suffit pas d’ajouter un utilisateur au groupe « Administrateur » ou « Administrateur du domaine pour que ça fonctionne. Pour donner ces droits spéciaux à un utilisateur, il faut utiliser cette commande :
Commentaires :
Sécurisation du système LDAPPour sécuriser les échanges de mots de passe sur un réseau géré par LDAP, il faut activer le support de SSL dans LDAP. Pour le moment, je n’ai pas encore testé et activé ce système. Script ouverture de sessionVoici comment mettre en place les scripts d’ouvertures de sessions pour les clients Windows se connectant au contrôleur de domaine « Samba » : Il faut commencer par créer le dossier devant contenir les scripts d’ouvertures de sessions :
Il faut créer le fichier « logon.bat » et le placer dans le dossier « /home/netlogon ». Voici un exemple : net time \\cielinux1 /set /yesProblèmes rencontrésProblème avec Thunderbird et OpenOffice.orgSans l’installation de NSCD, je n’ai pas plus faire fonctionner Thunderbird, car j’obtenais systématiquement une erreur de segmentation. Alors qu’il fonctionnait très bien avec un utilisateur local non créé dans la base LDAP : $ /opt/thunderbird/thunderbirdJ’obtenais également un blocage de OpenOffice.org dés que celui-ci avait besoin de Java. Alors qu’il fonctionnait très bien avec un utilisateur local non créé dans la base LDAP. Il est donc important d’installer le cache local « nscd » pour faire fonctionner OpenOffice.org et Thunderbird Problème de connexion en root quand le serveur LDAP n’est pas joignableQuand le serveur LDAP n’est pas joignable, et avec une configuration par défaut, il faut attendre environ 5mn (exactement (1+2+4+8+16+32+64)x2=254s) pour que le mot de passe root soit accepté. En effet, le système recherche le mot de passe sur le serveur LDAP et au bout de nombreuses tentatives finit par rechercher en local. Pour info, voici un extrait des messages de « /var/log/auth.log » : Jul 10 12:25:04 pgtest su[5052]: nss_ldap: could not connect to any LDAP server asPour éviter cette attente, et pour un ordinateur portable, il est conseillé de modifier la ligne suivante dans « /etc/libnss-ldap.conf » :
Problème de déverrouillage avec des comptes LDAPAvec les utilisateurs LDAP, il était impossible de les déconnecter. J’avais le message d’erreur suivant : Jul 10 17:01:13 pgtest kcheckpass: (pam_unix) authentication failure; logname= uid=1000 euid=0J’ai essayé de paramétrer sans succès le fichier « /etc/pam.d/kcheckpass ». Mais contrairement à ce que le message laisse penser, il ne faut pas paramétrer le fichier « /etc/pam.d/kcheckpass », mais le fichier « /etc/pam.d/kscreensaver ». Problème avec les ACL et KonquerorSi les ACL sont activées, elles fonctionnement parfaitement même avec les utilisateurs de la base LDAP . Cependant, j’ai rencontré le bug suivant en modifiant les ACL avec Konqueror :
Problème avec les profils itinérantsPar défaut le système samba-ldap est configuré pour gérer les profils itinérants. Si vous voulez désactiver cette fonctionnalité pour les utilisateurs, il faut supprimer l’entrée « sambaProfilePath » en utilisant par exemple « phpldapadmin » Problème avec les profils itinérantsPar défaut, samba tente de fournir aux clients Windows un profil itinérant. Pour éviter ce problème, il faut mettre ces deux lignes dans « smb.conf » logon path =Problème avec le script de démarrageLors de la création d’un nouvel utilisateur, je n’arrive pas à forcer par défaut le nom du script de démarrage. J’aimerais mettre par défaut « logon.bat » sur l’attribut « sambaLogonScript » Problème pour rejoindre le domaineJe n’arrivais pas à rejoindre le domaine, car le pare feu sur le serveur était mal configuré. Problème pour rejoindre le domaine à cause du cache WinsAprès avoir changé l’adresse IP du serveur, j’ai eu un problème dans le fonctionnement de Wins avec NMBD. Il continuait à vouloir utiliser l’ancienne adresse « 192.0.0.209 » alors qu’il fallait utiliser la nouvelle « 10.2.2.2 » A cause de ce problème, je n’arrivais plus à configurer des postes sous Win 2000 ou Won NT pour les faire rejoindre le domaine. [2006/06/20 11:59:17, 0] nmbd/nmbd_browsesync.c:domain_master_node_status_fail(250)Pour régler ce problème, j’ai supprimé le fichier « /var/lib/samba/wins.dat » qui contenait en cache l’ancienne adresse IP. Problème de gestion de profils suite à la mise en place du nouveau domainePour chaque ordinateur et chaque profil devant se connecter au nouveau domaine, j’ai du recopier les profils. Voici les opérations à faire :
Création manuelle des ordinateurs pour Windows NTPour les postes sous Windows NT, il est nécessaire de créer manuellement les ordinateurs dans LDAP pour pouvoir les joindre au domaine Le compte expire au bout de 3 semainesLors de la création d’un nouveau compte avec la commande « smbldap-useradd », l’attribut « SambaPwdMustChange » est ajouté au compte. Cet attribut indique qu’il faut changer le mot de passe avant le temps indiqué (3 semaines). J’ai donc supprimé cet attribut manuellement avec « phpldapadmin » pour ne pas être obligé de changer de mot de passe. Les droits des fichiers par défaut sont fixés à 755 au lieu de 770 avec ssh/FreeNXAvec un accès Windows / Samba, le masque de création est fixé dans le fichier de configuration de Samba, mais avec un accès SSH/Freenx, il est fixé dans le dossier « /etc/profile ». Il faut donc mettre « umask 007 » au lieu de « umask 022 » dans « /etc/profile » Autres sources de documentations :Ces documents m’ont beaucoup aidés pour installer mon premier serveur :
Historique des modifications
Article précédent : Connexion automatique à différents réseaux avec Network-Manager
Article suivant : Installation et configuration d’un driver ODBC, pour connecter OpenOffice.org à MySQL
Forum
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||