feat: give higher priority to pam_sss module
With default priority (128), pam-auth-update put module pam_sss after module pam_unix in /etc/pam.d/common-auth, and then a user with a local account and local password synchronized with AD password will never be granted a Kerberos TGT on session opening.
This commit is contained in:
54
Notes_pam.md
Normal file
54
Notes_pam.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
D'apres [PAMConfigFrameworkSpec], `pam_sss` devrait avoir une priorité
|
||||||
|
>= 512, puisqu'il s'agit d'un profil qui "authenticates against a central
|
||||||
|
network service, with rules to exclude administrative/system accounts". Or sa
|
||||||
|
priorité définie dans `/usr/share/pam-configs/sss` est 128 ... pourquoi ?
|
||||||
|
|
||||||
|
=> chercher dans le bugtracker ?
|
||||||
|
|
||||||
|
On dirait vraiment que `pam_sss` est conçu et configuré pour des
|
||||||
|
utilisateurs qui sont enregistrés dans un LDAP et pas en local (dans ce
|
||||||
|
cas ça marche direct). Moi je veux bien, c'est parfait pour un poste
|
||||||
|
fixe qui est toujours connecté au réseau, mais que se passe-t'il avec
|
||||||
|
un laptop déconnecté, si on n'a pas de mot de passe local ?
|
||||||
|
|
||||||
|
On pourrait envisager de désactiver le profil `pam_unix`, comme cela il
|
||||||
|
ne reste que `pam_sss` et le problème disparait, mais je soupçonne qu'il
|
||||||
|
va y avoir des effets de bord ;-)
|
||||||
|
|
||||||
|
Pour passer `pam_sss` en premier, il faut augmenter sa priorité. On peut
|
||||||
|
faire cela en modifiant le fichier `/usr/share/pam-configs/sss` à la
|
||||||
|
volée depuis le `postinst` avec `sed`, mais c'est très moche, et cela ne
|
||||||
|
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-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-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-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
|
||||||
|
les deux profils sont sélectionnés dans le dialogue `debconf`. Si on
|
||||||
|
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.
|
||||||
|
|
||||||
|
Références
|
||||||
|
----------
|
||||||
|
|
||||||
|
- [pam.conf(5)]
|
||||||
|
- [pam-auth-update(8)]
|
||||||
|
- [PAMConfigFrameworkSpec]
|
||||||
|
|
||||||
|
[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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
30
debian/postinst
vendored
30
debian/postinst
vendored
@@ -3,7 +3,7 @@ set -e
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
configure)
|
configure)
|
||||||
# enable GDM customization
|
# Enable GDM customization
|
||||||
if command -v /usr/bin/dconf >/dev/null ; then
|
if command -v /usr/bin/dconf >/dev/null ; then
|
||||||
dconf update
|
dconf update
|
||||||
fi
|
fi
|
||||||
@@ -18,7 +18,7 @@ case "$1" in
|
|||||||
cat /usr/share/ca-certificates/orange/*.crt \
|
cat /usr/share/ca-certificates/orange/*.crt \
|
||||||
> /etc/sssd/pki/sssd_auth_ca_db.pem
|
> /etc/sssd/pki/sssd_auth_ca_db.pem
|
||||||
|
|
||||||
# configure pam-pkcs11
|
# Configure pam-pkcs11
|
||||||
if [ -d /etc/pam_pkcs11 ] ; then
|
if [ -d /etc/pam_pkcs11 ] ; then
|
||||||
# add Orange certificates
|
# add Orange certificates
|
||||||
mkdir -p /etc/pam_pkcs11/cacerts
|
mkdir -p /etc/pam_pkcs11/cacerts
|
||||||
@@ -31,28 +31,14 @@ case "$1" in
|
|||||||
# a config file in dir /usr/share/pam-configs.
|
# a config file in dir /usr/share/pam-configs.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Configure PAM for credential cache
|
# Configure PAM
|
||||||
apt-mark manual libpam-ccreds >/dev/null || true
|
pam-auth-update --package \
|
||||||
if [ -e /usr/share/pam-configs/ccreds-check ] ; then
|
--remove sss krb5 \
|
||||||
pam-auth-update --package --enable ccreds-check ccreds-save || true
|
--enable yourdev ccreds-check ccreds-save || true
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure PAM for Kerberos
|
# Fix sssd configuration permissions
|
||||||
if [ -e /usr/share/pam-configs/sss ] ; then
|
|
||||||
# Use pam-sss if present and disable pam-krb5
|
|
||||||
echo "Using pam-sss ..."
|
|
||||||
pam-auth-update --package --enable sss || true
|
|
||||||
pam-auth-update --package --remove krb5 || true
|
|
||||||
elif [ -e /usr/share/pam-configs/krb5 ] ; then
|
|
||||||
echo "Using pam-krb5 ..."
|
|
||||||
pam-auth-update --package --enable krb5 || true
|
|
||||||
else
|
|
||||||
echo "Warning: no PAM config for Kerberos found!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# fix sssd configuration permissions
|
|
||||||
chmod 600 /etc/sssd/sssd.conf || true
|
chmod 600 /etc/sssd/sssd.conf || true
|
||||||
# restart services
|
# Restart services
|
||||||
deb-systemd-invoke restart sssd.service || true
|
deb-systemd-invoke restart sssd.service || true
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
1
debian/postrm
vendored
1
debian/postrm
vendored
@@ -8,6 +8,7 @@ case "$1" in
|
|||||||
dconf update
|
dconf update
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
24
debian/prerm
vendored
Normal file
24
debian/prerm
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
remove)
|
||||||
|
pam-auth-update --package --remove yourdev || true
|
||||||
|
;;
|
||||||
|
|
||||||
|
upgrade|deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
failed-upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "prerm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
23
usr/share/pam-configs/yourdev
Normal file
23
usr/share/pam-configs/yourdev
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Name: Yourdev authentication (SSSD)
|
||||||
|
Default: no
|
||||||
|
Priority: 512
|
||||||
|
Conflicts: sss
|
||||||
|
|
||||||
|
Auth-Type: Primary
|
||||||
|
Auth:
|
||||||
|
[success=end default=ignore] pam_sss.so use_first_pass
|
||||||
|
Auth-Initial:
|
||||||
|
[success=end default=ignore] pam_sss.so forward_pass
|
||||||
|
Account-Type: Additional
|
||||||
|
Account:
|
||||||
|
sufficient pam_localuser.so
|
||||||
|
[default=bad success=ok user_unknown=ignore] pam_sss.so
|
||||||
|
Session-Type: Additional
|
||||||
|
Session-Interactive-Only: yes
|
||||||
|
Session:
|
||||||
|
optional pam_sss.so
|
||||||
|
Password-Type: Primary
|
||||||
|
Password:
|
||||||
|
sufficient pam_sss.so use_authtok
|
||||||
|
Password-Initial:
|
||||||
|
sufficient pam_sss.so
|
||||||
Reference in New Issue
Block a user