Couplage openldap-samba Groupe de travail SARI Animateur du groupe : Bernard MAIRE-AMIOT (CRTBT) Participants Françoise BERTHOUD (LPMMC) François BOUHET (MSH-ALPES) Guy BOURREL (TIMC) Xavier CHAUD (CRETA) Ghislain ESCORNE (LGIT) Regis GRAS (LEDSS) Chantal MULLER (TIMC) Jean-Luc PAROUTY (IBS) Christophe TROPHIME (LCMI) Martial TUR (LGIT)
Sommaire Introduction / contexte / choix Mise en place des services et outils (serveurs) Configuration des clients Quelques mots sur les aspects sécurité Conclusion / références
Contexte d un laboratoire Service de qualité Système d information (qui le renseigne?) Besoins d accéder à ce système d information à différents niveaux parc informatique hétérogène (serveurs / clients, Unix, Windows, MacOSX) authentification, partage de ressources? Interfaçage avec les CRIs Comment fait on aujourd hui?
Et demain? Solutions libres pour Gérer le système d information du laboratoire (essentiellement personnel) Utiliser ce SI pour authentifier les personnels (postes client libre service, serveurs (ssh, ftp, mail, vpn(radius), https, sauvegardes, etc.), utiliser ce SI pour rechercher les coodonnées du personnel Offrir une visibilité de l espace de travail à l utilisateur dans un périmètre défini du réseau du laboratoire
Couplage openldap-samba Groupe de travail, choix technologiques Système : linux (fedora) Authentification : annuaire ldap (openldap) Gestionnaire de PDC (windows) : samba Partage de ressources : samba Couplage et administration : lam
Rappel : LDAP (Lightweight Directory Acces Protocol) LDAP c est : Un protocole standard TCP/IP pour l accès au contenu qui impose une structuration hiérarchique des données Un modèle d information organisées Un modèle de diffusion de données Un modele de nommage permettant une unicité d appellation des entrées à un niveau mondial, ce qui permet une répartition cohérente des informations sur plusieurs serveurs Ce protocole est particulièrement adapté : Pour la diffusion à grande échelle de données simples Pour les mises à jour dynamiques Pour la sécurisation et la personnalisation des données
Rappel : LDAP (Lightweight Directory Acces Protocol) LDAP organise les entrées dans une structure logique hiérarchique. ou «D.I.T. Directory Information Tree» L identification d une entrée se fait à l aide du Distinguished Name (DN) uid=pdupont,ou=people,dc=labo,dc=cnrs,dc=fr Il n y a pas de distinction entre noeuds et feuilles de l arbre Toutes les «intersections» sont des «entrées»
Rappel : LDAP (Lightweight Directory Acces Protocol) LDAP est un modèle d information sur la base d un «schéma» c est à dire la collection des types d entrées ou classes d objets que l on peut rencontrer. Chaque entrée fait référence à une classe d objets, définie par un nom et une liste d attributs (obligatoires ou optionnels) les attributs sont définis par un nom d attribut, une syntaxe et des règles de comparaison. openldap = daemon + fichiers de conf + schémas + commandes + données
Authentification et partage de ressources : couplage LDAP SAMBA Architecture Fonctionnelle Authentification Compte : clients (ldap) Accès Web Administration Compte :root-ldap Macintosh Auth. ldap v3 Linux /etc/ldap.conf /etc/nsswitch /etc/pam.d/system-auth Administration : Compte root-ldap /etc/openldap/sldap.conf /etc/openldap/ldap.conf /etc/init.d/ldap Accès Web Configuration Compte :root LAM : LDAP Account Manager /var/www/html/lam/config/config.cfg /var/www/html/lam/config/sari.conf Windows Intégrer au domaine microsoft Compte : admin (ldap) Administration : Compte admin (ldap) Gestionnaire de domaine /etc/samba/smb.conf /etc/init.d/smb SWAT: Samba Web Admin Tool /etc/xinetd.d/swat Macintosh Linux Windows Accès aux ressources Compte : clients (ldap) Serveur de ressources : Samba, Netatalk, NFS, CUPS, Radius, /etc/samba/smb.conf /etc/atalk/afpd.conf, /etc/atalk/applevolume.default,
Configuration Configuration annuaire LDAP Configuration de LAM (LDAP Account Manager) Configuration de SAMBA par SWAT Configuration de SAMBA Couplage samba-ldap Création des comptes
Configuration annuaire LDAP /etc/openldap/ldap.conf Fichier de configuration permettant de fournir les informations nécessaires au commandes shell de type ldapsearch, ldapmodify, etc. /etc/openldap/slapd.conf Fichier de configuration du démon /etc/init.d/ldap (slapd et slurpd) include database suffix rootdn rootpw directory /usr/share/doc/samba-3.0.10/ldap/samba.schema bdb "dc=cnrs,dc=fr" "uid=root-ldap,ou=people,dc=cnrs,dc=fr" {SSHA}FnF0YonpkbjyeVgoKtMOYYTsrpKvISjG /var/lib/ldap Le mot de passe crypté est fabriqué par la commande : slappasswd s sari
Configuration de LAM (LDAP Account Manager) Package sur le site http://lam.soureforge.net Administration par web http://localhost/lam/ Fichiers de configurations /var/www/html/lam/config/config.cfg /var/www/html/lam/config/sari.cfg ServerURL: ldap://localhost:389 Admins: uid=root-ldap,ou=people,dc=cnrs,dc=fr # password to change these preferences via webfrontend Passwd: sari usersuffix: ou=people,dc=cnrs,dc=fr groupsuffix: ou=groups,dc=cnrs,dc=fr hostsuffix: ou=machines,dc=cnrs,dc=fr domainsuffix: ou=domains,dc=cnrs,dc=fr
Configuration de LAM (LDAP Account Manager)
Configuration de SAMBA par SWAT Administration par serveur Web http://localhost:901 Pour administrer samba par swat : login / mot de passe root Le fichier /etc/samba/smb.conf est modifier en conséquence Lancement du démon /etc/xinetd.d/swat au démarrage de la machine Il ne faut pas oublier de sauvegarder le mot de passe de l'admin dn (root-ldap) dans le fichier secrets.tdb afin que Samba puisse accéder en écriture au serveur LDAP : smbpasswd -w <motdepasse>.
/etc/samba/smb.conf Configuration de SAMBA workgroup = SARI-LDAP netbios name = SERVEUR-LDAP server string = Samba Server SARI logon path = domain logons = Yes os level = 99 domain master = Yes ldap admin dn = uid=root-ldap,ou=people,dc=cnrs,dc=fr ldap group suffix = ou=groups ldap machine suffix = ou=machines ldap passwd sync = Yes ldap suffix = dc=cnrs,dc=fr ldap user suffix = ou=people admin users = admin
Couplage samba-ldap Le couplage samba-ldap pour l administration des données (utilisateurs et machines) se fait grâce à l interface LAM Le couplage samba-ldap au niveau authentification, et interfaçage des processus se trouve directement dans le fichier de configuration /etc/samba/smb.conf Le mot de passe d administration de l annuaire LDAP est renseigné dans samba par la commande Smbpasswd w «mot de passe» et stocké dans secret.tdb [global] passdb backend = ldapsam:ldap://127.0.0.1 ldap passwd sync = Yes Le SID du domaine est renseignée dans l annuaire LDAP Tous les utilisateurs, groupes et machines enregistrées dans l annuaire LDAP intègre le SID du domaine (ex : S-1-5-21-2430906375-2510035027-2760884646 )
Création des comptes Création du répertoire home et gestion des quotas par script lam Un script est déjà prêt, il permet aussi de gérer les quotas à partir de LAM. Le fichier s appelle «/usr/share/ldap-account-manager/lib/lamdaemon.pl» Création du répertoire home par skel (skeleton) Squelette des scripts de configuration 'users':.inputrc,.bash_profile..., recopiés dans le homedir d'un 'new user' à la première authentification. ( module pam_mkhomedir) Création du répertoire home et gestion des quotas par script externe Script unix avec des commandes tels que Mkdir, chown, chgrp, setquota,
Utilisation de l annuaire LDAP Lancement les processus Les différents groupes et utilisateurs Importation de comptes existants Sauvegarde base au format ldif ou dump Accès à l annuaire ldap Outils : jxplorer, phpldapadmin, smbldap-tools
Lancement des processus Processus openldap Processus samba (microsoft) Processus netatalk (appletalk) Processus swat Processus httpd (swat et lam) /etc/init.d/ldap (slapd, slurpd) /etc/init.d/smb (nmbd, smbd /etc/init.d/atalk (afpd, papd) /etc/xientd.d/swat /etc/init.d/httpd
Les différents groupes et utilisateurs Administrateur du serveur root, Il se trouve dans /etc/passwd Administrateur de l annuaire ldap root-ldap, Il se trouve dans : /etc/openldap/slapd.conf (login et password) /etc/samba/smb.conf (login) /etc/samba/secret.tdb (password) Super administrateur super-root dans la base LDAP Administrateur réseau UNIX et domaine Microsoft Groupe admin du domaine «Domain-Admins» Groupe utilisateur du domaine «Domain-Users» Groupe invité du domaine «Domain-Guests» Groupe «Machines» (uid=0 et gid=0) (gid=512, uid>10000) (gid=513, uid>10000) (gid=514, uid>10000) (gid=553, uid>25000) Ces numéros sont des Identificateurs de sécurité (SID)connus dans les systèmes d'exploitation Windows. http://support.microsoft.com/?scid=kb%3bfr%3b243330&x=12&y=10
Importation de comptes existants Importation directement à partir du menu de LAM (LDAP Account Manger) On utilise un script utilisant la commande AWK pour générer un fichier au format CSV Ce fichier peut alors être importer directement dans LAM sauf le mot de passe et le SSID du domaine, mais ceci peut être modifier Directement par une commande ldapmodify. à l'imag et à l'ujf on gère les comptes à partir du fichier nommé membres.fait qui contient déjà toutes les info dont on a besoin. Upload.csv = awk -F: '{printf"%s,%s,%s,%s,,%s.%s@imag.fr,,,,,,,,\n", $4,$5,$1,$3,$4,$5}' membres.fait ex. (membres.fait) bourrel:3750:1402:guy:bourrel:mail-timc (upload.csv) Guy,Bourrel,bourrel,1402,,Guy.Bourrel@imag.fr,,,,,,,,
Sauvegarde base au format ldif (dump) Dump de la base ldap au format ldif : Arret de ldap (/etc/init.d/ldap stop) Copie des données de ldap dans le fichier /tmp/dump_ldap.ldif /usr/sbin/slapcat -l /tmp/dump_ldap.ldif -f /etc/openldap/sldap.conf -b "dc=cnrs, dc=fr" Restoration de la base ldap : Arret de ldap (/etc/init.d/ldap stop) cd /var/lib/ldap rm -f * Ajout des donnéees dans la base /usr/sbin/slapadd -l /tmp/dump_ldap.ldif -f /etc/openldap/sldap.conf -b "dc=cnrs, dc=fr"=
Accès à l annuaire ldap Vous allez utiliser les commandes ldapsearch, ldapadd, ldapmodify ldapsearch -x 'objectclass=*' # On veut tous les objets ldapsearch -x 'uid=mlx' mail # On veut le mail de la personnes d'uid mlx Ajout d'un objet (mode interactif) avec ldapadd. Il faut créer un fichier au format LDIF pour chaque objet que l'on souhaite ajouter. $ ldapadd -x -D "uid=root,ou=people, dc=cnrs,dc=fr" -W -f le_fichier_ldiff utilisation de la commande ldappasswd : Pour réinitialiser le mot de passe de l'utilisateur user ldappasswd -x -D "uid=root,ou=people,dc=cnrs,dc=fr" -W "uid=user,ou=people,dc=cnrs,dc=fr " Pour réinitialiser le mot de passe de user a un mot de passe déterminé : ajouter l'option -S (prompt) ou -s motdepasse
Outils : jxplorer, phpldapadmin On peut désormais utiliser un browser LDAP pour avoir un affichage de la structure de l annuaire et des entrées de celui-ci. http://www.jxplorer.org/ Serveur WEB LDAP browser pour administrer un annuaire LDAP
L D A P Client machine Windows Linux Client logiciel de messagerie Client utilisateur Authentification Changement de mot de passe Sécurité access control sauvegarde cryptage Conclusions
Client Windows 1/3 Entrer le PC dans ldap avec lam Hosts : New Host Entrer le nom NetBIOS suivi du signe $ L'UID est affecté automatiquement à partir de 25000
Client Windows 2/3 Sur le PC : Ouvrir une session administrateur Panneau de Configuration, Système, onglet Nom de l'ordinateur
Client Windows 3/3 Après redémarrage l'utilisateur a le choix d'ouvrir une session sur le PC local (compte local Windows) ou dans le domaine TIMC-LDAP (compte ldap)
Client Linux Lancer authconfig Cocher Use LDAP Use LDAP Authentication Entrer le nom du (ou des) serveurs et la Base DN
Client Linux Fichiers modifiés : (On peut les modifier à la main mais ils seront écrasés si on ré-exécute authconfig) /etc/nsswitch.conf passwd: files ldap shadow: files ldap group: files ldap /etc/ldap.conf /etc/openldap/ldap.conf HOST ldap-timc.imag.fr replicat-timc.imag.fr BASE dc=timc,dc=fr /etc/pam.d/system-auth
Client Mac OS X 1/2
Client Mac OS X 2/2
Address Book Menu File : New ldap directory Clients de Messagerie Thunderbird
Clients Messagerie EUDORA
Client Messagerie Windows Carnet d'adresse (Accessoires Windows)
ACCESS CONTROL 1/2 Restrictions d'accès fichier slapd.conf access to <what> by <who> <access-to-grant> <what> : sous forme de dn, de filtres et ou d'attributs to dn.children= ou=people,o=suffix to filter=(objectclass=person) to attrs=userpassword <who> : * anonymous users self ou dn <access-to-grant> : none auth compare search read write Les directives sont interprétées dans l'ordre d'apparition et slapd s'arrête à la première qui est satisfaite.
ACCESS CONTROL 2/2 En l'absence de directives la base est en readonly Pour que les utilisateurs puissent changer eux-même leur mot de passe voici les lignes à ajouter: access to attr=userpassword by anonymous auth by self write by * none access to attr=sambalmpassword by anonymous auth by self write by * none access to attr=sambantpassword by anonymous auth by self write by * none access to * by * read
Authentification LDAP Changement de mot de passe par l'utilisateur Sous Windows (sur un PC appartenant au domaine) - Soit dans la boîte de dialogue de connexion - Soit en cours de session en ouvrant la boîte de dialogue Control/Alt/Suppr Sous Linux : Ne PAS utiliser la commande passwd car la synchronisation des mots de passe samba et ldap ne se fait que dans le sens samba->ldap! Solution - Soit se servir d'un PC sous Windows pour changer son mot de passe samba - Soit utiliser une interface web en https sur le serveur ldap qui utilise un script cgi lançant la commande smbpasswd (changepass.cgi) L'administrateur, lui, peut changer le mot de passe de l'utilisateur soit par l'interface lam soit par la commande smbpasswd <login> sur le serveur.
Backup Arrêter le service ldap slapcat -l /tmp/save-ldap.ldif LDAP Sauvegarde de la base Restauration cd /var/lib/ldap ; rm * slapadd -l /tmp/save-ldap.ldif chown -R ldap:ldap /var/lib/ldap Relancer le service ldap Autre méthode : Arrêter le service ldap cd /var/lib tar cf /tmp/ldap.tar ldap
REPLICATION (slurp) Standalone LDAP Update Replication Daemon Sur le serveur principal (maître) Arrêter le service ldap. Faire une copie conforme de la base du serveur dans le serveur esclave (cf backup au format tar) ainsi que des fichiers de configuation ajouter ces lignes au fichier slapd.conf : # Replicas of this database replogfile /var/lib/ldap/openldap-master-replog replica uri=ldap://bergson.imag.fr:389 binddn="cn=replica,dc=timc,dc=fr" bindmethod=simple credentials=sx6zw!9? Sur le serveur secondaire (esclave) updatedn "cn=replicator dc=timc,dc=fr" updateref=152.77.201.26 Relancer le service ldap sur le serveur maître puis sur le serveur secondaire service ldap start Checking configuration files for : config file testing succeeded Starting slapd: [ OK ] Starting slurpd: [ OK ]
Aspects sécurité Cryptage SASL : Simple Authentication and Sécurity Layer TLS : Transport Layer Security A faire
Références Références http://www.openldap.org http://www.samba.org en particulier : http://www.samba.org/samba/docs/man/samba-howto-collection http://samba.idealx.org/smbldap-howto.en.html Normes, RFC http://www.mozilla.org/directory/standards.html Tutoriaux, outils, docs diverses http://www.int-evry.fr/mci/user/procacci/ldap/ http://www.linagora.org http://www.padl.com/ (migration tools) Interfaces d'administration http://sourceforge.net/projects/lam http://phpldapadmin.sourceforge.net http://sourceforge.net/projects/jxplorer/
La suite... Liste de diffusion sari-ldap@listes.grenoble.cnrs.fr Abonnement : mailto:sympa@listes.grenoble.cnrs.fr?subject=subscribe%20sari-ldap> Archives : http://listes.grenoble.cnrs.fr/wws/arc/sari-ldap Organisation d un atelier consacré à l installation de ces outils : le 14 juin, à partir de 13h30. Inscription : envoyez un mail à l adresse suivante : atelier-sari@grenoble.cnrs.fr http://sari.inpg.fr/ http://sari.grenoble.cnrs.fr