====== 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.