doc: how not to change AD password
This commit is contained in:
114
Notes_pam.md
114
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.
|
en place un `trigger` ou mieux encore un `divert` ... ça reste du bricolage.
|
||||||
|
|
||||||
Autre solution, plus propre:
|
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`
|
- modifier sa propriété `Name` et augmenter la valeur de `Priority`
|
||||||
- rajouter une propriété `Conflicts: sss`
|
- 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: ne pas utiliser --force dans les scripts, seulement --package
|
||||||
Important: bien verifier uid >= 1000 et users interdits.
|
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
|
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,
|
: quand on lance `pam-auth-update` une première fois en mode interactif,
|
||||||
sans avoir exécuté la configuration automatique via le `postinst`, alors
|
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,
|
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.
|
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
|
Reste à faire
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Avec le module `pam_sss` en premier, on a le comportement attendu,
|
Il doit bien y avoir une raison explicite pour que `pam_sss`
|
||||||
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`
|
|
||||||
ne soit pas prioritaire dans la configuration par défaut Debian/Ubuntu,
|
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
|
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
|
que je n'aurais pas trouvé l'explication dans une documenation officielle
|
||||||
il restera un doute sur la méthode ci-dessus.
|
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
|
Références
|
||||||
----------
|
----------
|
||||||
@@ -185,6 +247,6 @@ Références
|
|||||||
[PAMConfigFrameworkSpec]: https://wiki.ubuntu.com/PAMConfigFrameworkSpec
|
[PAMConfigFrameworkSpec]: https://wiki.ubuntu.com/PAMConfigFrameworkSpec
|
||||||
[pam.conf(5)]: https://manpages.debian.org/bullseye/libpam-runtime/pam.conf.5.en.html
|
[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
|
[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/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user