====== Authentification Linux avec le LDAP de Zimbra du site ====== ===== le besoin ===== * l'accès aux serveurs de calcul sous Linux est géré par un annuaire LDAP local. * projet : utiliser la base zimbra pour gérér les accès aux services du laboratoire * adresse valide permet d'ouvrir les accès / compte fermé bloque les accès (wiki/intranet, vpn, ssh/calcul) * en cas de problème temporaire : masquer dans la liste GAL * ===== LDAP zimbra ===== * serveur: ldaps://xxxxxx.grenoble.cnrs.fr * arbre des utilisateurs : ou=people,dc=laboxxx,dc=cnrs,dc=fr * filtre utilisateurs : (uid=%{user}) ou user=prenom.nom * identifiant de connexion LDAP : uid=xxxxxx,ou=people,dc=grenoble,dc=cnrs,dc=fr + mot de passe ===== LDAP sur Debian ===== * installer les paquets : ldap-utils, libldap-common, libnss-ldapd, libpam-ldapd, nslcd, nslcd-utils apt install ldap-utils libldap-common libnss-ldapd libpam-ldapd nslcd nslcd-utils * paramétrer le serveur LDAP. * tester : ça ne marche pas $ su - prenom.nom su: l'utilisateur prenom.nom n'existe pas ou l'entrée de l'utilisateur ne contient pas tous les champs requis ===== «Débogage» et configuration ===== * arrêt de nslcd et redémarrage en mode debug nslcd -ddd 2>&1 | tee /tmp/nslcd.log su - prenom.nom * recherche des éléments demandés à l'annuaire dans le log grep ldap_build_search_req /tmp/nslcd.log ldap_build_search_req ATTRS: uidNumber cn gecos uid objectClass homeDirectory gidNumber loginShell * recherche des champs disponibles dans l'annuaire Zimbra et chercher des correspondances ldapsearch -x -H ldaps://XXXXXXX.grenoble.cnrs.fr/ -D uid=XXXXXXX,ou=people,dc=grenoble,dc=cnrs,dc=fr -w 'XXXXXXX' "uid=prenom.nom" cn: Ok displayName: => gecos objectClass: posixAccount n'existe pas => filter sur (objectClass=zimbraAccount) pager: => uidNumber uid: Ok * Il manque donc gidNumber homeDirectory loginShell * Ajout du paramétrage des filtres et du mappage de champs à la fin de /etc/nslcd.conffilter passwd (objectClass=zimbraAccount) map passwd uidNumber pager map passwd gecos displayName ##group 100 : users map passwd gidNumber "100" map passwd homeDirectory "/home/$uid" map passwd loginShell "/bin/bash" * et on obtient adlpmmc@BWmini32:~$ su - jean-daniel.dubois Mot de passe : jean-daniel.dubois@BWmini32:~$ pwd /home/jean-daniel.dubois jean-daniel.dubois@BWmini32:~$Login Ok et création du home * il reste à deployer/tester sur notre infra de calcul : * problème de l'accès ldap/zimbra depuis le datacentre IMAG. * le plus simple : utilisation de simpleproxy sur un serveur interne root@proxy:~# simpleproxy -L 636 -R XXXX.grenoble.cnrs.fr:636 -v simpleproxy[3818541]:Waiting for connections. simpleproxy[3818550]:Connect from xxx.xxx.xxx.xxxx (ANY:636->XXXX.grenoble.cnrs.fr:636) simpleproxy[3818551]:Connect from xxx.xxx.xxx.xxxx (ANY:636->XXXX.grenoble.cnrs.fr:636) simpleproxy[3818551]:Connect from xxx.xxx.xxx.xxxx (ANY:636->XXXX.grenoble.cnrs.fr:636) closed simpleproxy[3818552]:Connect from xxx.xxx.xxx.xxxx (ANY:636->XXXX.grenoble.cnrs.fr:636) * ouvrir l'accès de notre sous-réseau datacentre IMAG vers LDAP Zimbra (?) * installer openLdap en proxy. complexe... * utiliser sssd sur les serveurs permettrait un cache moyen terme qui éviterait les problèmes liés à des déconnexions temporaires au LDAP mais le mappage des attributs LDAP sur des constantes ou variables comme avec nslcd ne semble pas possible.