diff --git a/Notes_pam.md b/Notes_pam.md index a42c4e5..b1ef903 100644 --- a/Notes_pam.md +++ b/Notes_pam.md @@ -127,15 +127,15 @@ résiste pas à une mise à jour du paquet `libpam-sss`, il faudrait mettre en place un `trigger` ou mieux encore un `divert` ... ça reste du bricolage. Autre solution, plus propre: - - ajouter un fichier `/usr/share/pam-configs/sss-first`, copie de `sss` + - ajouter un fichier `/usr/share/pam-configs/yourdev`, copie de `sss` - modifier sa propriété `Name` et augmenter la valeur de `Priority` - rajouter une propriété `Conflicts: sss` - - dans le `postinst`, activer `sss-first` et désactiver `sss` + - dans le `postinst`, activer `yourdev` et désactiver `sss` Important: ne pas utiliser --force dans les scripts, seulement --package Important: bien verifier uid >= 1000 et users interdits. -Note: les deux profils `sss` et `sss-first` sont en conflit, mais leur +Note: les deux profils `sss` et `yourdev` sont en conflit, mais leur propriété `Default` vaut `yes`, ce qui a une conséquence particulière : quand on lance `pam-auth-update` une première fois en mode interactif, sans avoir exécuté la configuration automatique via le `postinst`, alors @@ -144,36 +144,98 @@ valide à ce moment, le dialogue se plaint qu'il y a conflit, et refuse de valider la sélection. Il faut modifier et choisir l'un ou l'autre. Ensuite, le dialogue se souvient du choix qui a été fait. + +Changement de mot de passe +-------------------------- + +Avec le module `pam_sss` en premier, on a le comportement attendu, c'est +SSSD qui fait l'authentification et fournit un TGT Kerberos à l'ouverture +de session. Mais c'est aussi SSSD qui gère le changement de mot de passe, +avec des conséquences imprévues: + + - c'est le mot de passe réseau qui est changé via la commande `passwd`, + pas le mot de passe local, et celui-ci est pénible à modifier, voir + plus bas. + + - sur le réseau, le mot de passe AD est changé, mais pas le mot de passe + du Gassi, les deux bases ne sont pas synchronisées, changer l'une ne + modifie pas l'autre, le nouveau mot de passe sera requis pour Kerberos, + IMAP, SMTP, SMB, etc. mais ne fonctionnera pas pour tous les sites en + SSO derrière le Gassi qui utilise toujours l'ancien ... + +Commandes pour modifier le mot de passe local alors que SSSD est utilisé: +``` +$ sudo pam-auth-update --remove yourdev +$ passwd +$ sudo pam-auth-update --enable yourdev +``` + +Tout ceci est très pénible... une méthode simple de résoudre le problème +serait d'empêcher la modification du mot de passe réseau depuis l'hôte, +puisque de toute façon cela ne fonctionne pas complètement (cf la +synchronisation AD/Gassi). + +Pour désactiver la fonctionnalité "changement de mot de passe" pour le +module `pam_sss` depuis `pam-configs`, il suffit d'éditer la configuration, +puis supprimer toute la section concernée (propriétés `Password-Type`, +`Password` et `Password-Initial`), et relancer la commande `pam-auth-update`. + +La section à supprimer dans `/usr/share/pam-configs/yourdev`: +``` +Password-Type: Primary +Password: + sufficient pam_sss.so use_authtok +Password-Initial: + sufficient pam_sss.so +``` + +Après génération, on constate qu'il n'y a plus aucune mention du module +`pam_sss` dans le profil `/etc/pam.d/common-passwd`. + +A partir de là, pour changer le mot de passe local, il suffit d'utiliser +la commande classique `passwd` comme ceci: +``` +$ passwd +Changement du mot de passe pour pipo1234. +Mot de passe actuel : +Nouveau mot de passe : +Retapez le nouveau mot de passe : +passwd : le mot de passe a été mis à jour avec succès +``` +Le "mot de passe actuel" est bien entendu le mot de passe _local_ courant, +puisque la commande ne pourra invoquer que le module `pam_unix`. + +Il est toujours possible de changer le mot de passe réseau avec la +commande `kpasswd` du paquet `krb5-user` qui discute en direct avec le +serveur Kerberos, sans passer par la configuration PAM ou le démon SSSD, +mais cela n'est pas conseillé. + +Pour plus de "sécurité", afin d'éviter les fausses manoeuvres et +une desynchronisation accidentelle des mots de passes AD et Gassi, on +peut désactiver le changement de mot de passe par SSSD en rajoutant la +propriété `chpass_provider = none` pour chaque domaine dans `sssd.conf`. +Une fois ce réglage en place, les tentatives de modification du mot +de passe réseau par SSSD vont échouer systématiquement avec une +"erreur système" lors de l'authentification préalable. + +On conseille de synchroniser le mot de passe local avec le mot de passe +réseau, pour éviter les surprises lorsque le serveur d'authentification +n'est pas joignable. +Pour changer le mot de passe, la procédure se décompose en deux étapes: + + 1. changer le mot de passe réseau sur [Mot de passe attitude] + 2. changer le mot de passe local avec `passwd` + + Reste à faire ------------- -Avec le module `pam_sss` en premier, on a le comportement attendu, -le problème de l'obtention du TGT Kerberos à l'ouverture de session -est résolu. - -Néanmoins, il doit bien y avoir une raison explicite pour que `pam_sss` +Il doit bien y avoir une raison explicite pour que `pam_sss` ne soit pas prioritaire dans la configuration par défaut Debian/Ubuntu, la "réponse possible" ci-dessus n'est qu'une supposition de ma part, tant que je n'aurais pas trouvé l'explication dans une documenation officielle il restera un doute sur la méthode ci-dessus. -Question subsidiaire a résoudre: comment changer le mot de passe local ? -Précédemment, avec `pam_krb5`, la méthode consistait à d'abord désactiver -Kerberos via `pam-auth-update`, changer le mot de passe avec `passwd`, puis -rétablir Kerberos. On peut faire la même chose maintenant, mais c'est plus -délicat, on a deux entrées dans le menu curses : "SSSD (first)" et "SSSD", -c'est la première qu'il faut rétablir, pas la deuxième... -A creuser: - - - un script pour automatiser les différentes étapes du changement de - mot de passe local - - désactiver le changement de mot de passe AD dans la configuration PAM, - via la définition de `sss-first`, puisque de toute façon ce n'est pas - une bonne méthode (desynchro AD/Gassi), il faut passer par le site - "Mot de passe attitude". - -Pour éviter les confusions, il faudrait renommer la définition `sss-first` -en `yourdev`, ça serait plus explicite. Références ---------- @@ -185,6 +247,6 @@ Références [PAMConfigFrameworkSpec]: https://wiki.ubuntu.com/PAMConfigFrameworkSpec [pam.conf(5)]: https://manpages.debian.org/bullseye/libpam-runtime/pam.conf.5.en.html [pam-auth-update(8)]: https://manpages.debian.org/bullseye/libpam-runtime/pam-auth-update.8.en.html - +[Mot de passe attitude]: https://mpa.itn.ftgroup/QPM/User/