feat: add pam-pkcs11 configuration
Recommends sssd, sssd-tools, libpam-sss Add SSSD configuration (sssd.conf) Configure certificates for SSSD (postinst) Restart SSSD service (postinst)
This commit is contained in:
3
Notes.md
3
Notes.md
@@ -126,6 +126,9 @@ On introduit les fonctionnalités pas à pas:
|
||||
|
||||
Voir [Notes_pkcs11.md](Notes_pkcs11.md) pour la configuration `pam_pkcs11`.
|
||||
|
||||
Voir [Notes_sssd.md](Notes_sssd.md) pour la configuration `pam_sss`.
|
||||
|
||||
|
||||
[GNOME Configuration - Simple Greeter Configuration]: https://help.gnome.org/admin/gdm/stable/configuration.html.en#greeterconfiguration
|
||||
[GNOME - Add a greeter logo to the login screen]: https://help.gnome.org/admin/system-admin-guide/stable/login-logo.html.en
|
||||
[GNOME - Display a text banner on the login screen]: https://help.gnome.org/admin/system-admin-guide/stable/login-banner.html.en
|
||||
|
||||
95
Notes_sssd.md
Normal file
95
Notes_sssd.md
Normal file
@@ -0,0 +1,95 @@
|
||||
SSSD, premier contact.
|
||||
----------------------
|
||||
|
||||
SSSD sait faire de l'authentification LDAP et Kerberos et plein d'autres.
|
||||
On peut se limiter à Kerberos, on n'est pas obligé d'utiliser toutes les
|
||||
fonctionnalités.
|
||||
|
||||
Le fichier `sssd.conf` contient un paramétrage Kerberos (realm, etc). Les
|
||||
possibilités de configuration ne sont pas aussi évoluées que celles qu'on
|
||||
trouve dans '/etc/krb5.conf'. Il est possible d'en mettre un minimum dans
|
||||
`sssd.conf`, et laisser le principal dans `krb5.conf`, ça tombe bien.
|
||||
|
||||
Depuis que j'ai installé et configuré SSSD, l'authentification de sudo
|
||||
sait non seulement utiliser mon mot de passe local, mais aussi mon mot
|
||||
de passe AD ! Et cerise sur le gateau : ça renouvelle automatiquement
|
||||
mon ticket Kerberos !
|
||||
|
||||
Debug SSSD
|
||||
----------
|
||||
|
||||
D'après sssd.conf(5), on active le debug avec la propriété `debug_level` à
|
||||
valeur de 0 à 10, à placer dans toutes les sections de la configuration,
|
||||
pas seulement dans [sssd]. On pourra utiliser un fichier de configuration
|
||||
drop-in pour faciliter la mise en place.
|
||||
|
||||
Pour observer les logs:
|
||||
|
||||
```
|
||||
# journalctl -f -g pam
|
||||
# journalctl -f -u sssd.service -u sssd-pam.socket -u sssd-pam.service
|
||||
# tail -f /var/log/auth.log
|
||||
```
|
||||
|
||||
La commande `sssctl` du paquet `sssd-tools` donne plein d'infos utiles sur
|
||||
l'état du service sssd, en particulier pour vérifier la configuration:
|
||||
```
|
||||
$ sudo sssctl config-check
|
||||
```
|
||||
Voir `sssctl --help` pour toutes les options (le man est quasi vide).
|
||||
|
||||
Service PAM pour SSSD
|
||||
---------------------
|
||||
|
||||
La documentation en ligne indique qu'il faut configurer les "services"
|
||||
de SSSD comme ceci:
|
||||
|
||||
```
|
||||
$ head -2 /etc/sssd/sssd.conf
|
||||
[sssd]
|
||||
services = nss,pam
|
||||
```
|
||||
|
||||
Mais à l'usage, on s'aperçoit que SSSD n'est pas utilisé dans le
|
||||
processus de login, et dans les logs on voit ceci:
|
||||
|
||||
```
|
||||
$ journactl -u sssd-pam.socket
|
||||
systemd[1]: Starting SSSD PAM Service responder socket.
|
||||
sssd_check_socket_activated_responders[17888]:
|
||||
Misconfiguration found for the pam responder.
|
||||
The pam responder has been configured to be socket-activated but it's
|
||||
still mentioned in the services' line in /etc/sssd/sssd.conf.
|
||||
Please, consider either adjusting your services' line in
|
||||
/etc/sssd/sssd.conf or disabling the pam's socket by calling:
|
||||
"systemctl disable sssd-pam.socket"
|
||||
systemd[1]: Dependency failed for SSSD PAM Service responder socket.
|
||||
```
|
||||
|
||||
Donc on a deux choix possibles:
|
||||
|
||||
1) soit on laisse le fichier `sssd.conf` en l'état, et on désactive
|
||||
la socket `sssd-pam.socket`.
|
||||
|
||||
2) soit on active la socket `sssd-pam.socket` et on supprime `pam`
|
||||
de la liste des services dans `sssd.conf`.
|
||||
|
||||
Sachant que par défaut la socket est activée à l'installation du paquet
|
||||
`sssd`, le choix le plus facile c'est le n°2, on modifie la configuration
|
||||
dans le fichier `sssd.conf`.
|
||||
|
||||
|
||||
|
||||
|
||||
#TODO sss-certmap
|
||||
#TODO sss_cache
|
||||
#TODO p11-child
|
||||
|
||||
|
||||
https://ask.fedoraproject.org/t/gui-login-with-sssd-managed-users-fails/6606/2
|
||||
|
||||
[SSSD - Design / Require Smartcard authentication ]: https://docs.pagure.org/sssd.sssd/design_pages/smartcard_authentication_require.html
|
||||
[RHEL-8 / MANAGING SMART CARD AUTHENTICATION]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/managing_smart_card_authentication/index
|
||||
|
||||
|
||||
|
||||
6
debian/control
vendored
6
debian/control
vendored
@@ -14,14 +14,16 @@ Multi-Arch: foreign
|
||||
Breaks: orange-yourdev-kerberos
|
||||
Replaces: orange-yourdev-kerberos
|
||||
Depends: ${misc:Depends},
|
||||
libpam-krb5,
|
||||
sssd (>= 2.4.0),
|
||||
libpam-sss,
|
||||
libpam-pkcs11,
|
||||
libpam-ccreds,
|
||||
orange-certs,
|
||||
orange-krb5,
|
||||
orange-dongle-aladdin
|
||||
Recommends:
|
||||
krb5-auth-dialog,
|
||||
libpam-pkcs11
|
||||
sssd-tools
|
||||
Suggests:
|
||||
orange-yourdev-ldap,
|
||||
orange-yourdev-setup,
|
||||
|
||||
25
debian/postinst
vendored
25
debian/postinst
vendored
@@ -8,9 +8,15 @@ case "$1" in
|
||||
dconf update
|
||||
fi
|
||||
|
||||
# Configure NSS for pam-pkcs11
|
||||
# Configure NSS for pam-pkcs11 and pam-sss
|
||||
mkdir -p /etc/pki/nssdb
|
||||
orange-certupdate /etc/pki/nssdb || true
|
||||
orange-certupdate /etc/pki/nssdb >/dev/null || true
|
||||
orange-dongle-aladdin --force update /etc/pki/nssdb || true
|
||||
|
||||
# Configure certificates for SSSD (OpenSSL)
|
||||
mkdir -p /etc/sssd/pki
|
||||
cat /usr/share/ca-certificates/orange/*.crt \
|
||||
> /etc/sssd/pki/sssd_auth_ca_db.pem
|
||||
|
||||
# configure pam-pkcs11
|
||||
if [ -d /etc/pam_pkcs11 ] ; then
|
||||
@@ -33,9 +39,22 @@ case "$1" in
|
||||
fi
|
||||
|
||||
# Configure PAM for Kerberos
|
||||
if [ -e /usr/share/pam-configs/krb5 ] ; then
|
||||
if [ -e /usr/share/pam-configs/sss ] ; then
|
||||
# Use pam-sss if present and disable pam-krb5
|
||||
echo "Using pam-sss ..."
|
||||
pam-auth-update --force --package --enable sss || true
|
||||
pam-auth-update --force --package --remove krb5 || true
|
||||
elif [ -e /usr/share/pam-configs/krb5 ] ; then
|
||||
echo "Using pam-krb5 ..."
|
||||
pam-auth-update --force --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
|
||||
# restart services
|
||||
deb-systemd-invoke restart sssd.service || true
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
||||
40
etc/sssd/sssd.conf
Normal file
40
etc/sssd/sssd.conf
Normal file
@@ -0,0 +1,40 @@
|
||||
# SSSD configuration for Kerberos in Orange network
|
||||
#
|
||||
[sssd]
|
||||
config_file_version = 2
|
||||
domains = ad.francetelecom.fr
|
||||
certificate_verification = no_ocsp
|
||||
services = nss
|
||||
debug_level = 9
|
||||
|
||||
[nss]
|
||||
filter_users = root
|
||||
filter_groups = root
|
||||
debug_level = 9
|
||||
|
||||
[pam]
|
||||
pam_verbosity = 3
|
||||
pam_account_expired_message = Account expired, please contact help desk.
|
||||
pam_account_locked_message = Account locked, please contact help desk
|
||||
pam_public_domains = ad.francetelecom.fr
|
||||
pam_cert_auth = false
|
||||
p11_child_timeout = 60
|
||||
offline_credentials_expiration = 0
|
||||
debug_level = 9
|
||||
|
||||
[domain/ad.francetelecom.fr]
|
||||
min_id = 1000
|
||||
id_provider = files
|
||||
auth_provider = krb5
|
||||
cache_credentials = true
|
||||
use_fully_qualified_names = false
|
||||
krb5_realm = AD.FRANCETELECOM.FR
|
||||
krb5_auth_timeout = 10
|
||||
krb5_store_password_if_offline = true
|
||||
krb5_lifetime = 24h
|
||||
krb5_renewable_lifetime = 7d
|
||||
krb5_renew_interval = 30m
|
||||
# see /etc/krb5.conf
|
||||
krb5_use_kdcinfo = false
|
||||
debug_level = 9
|
||||
|
||||
Reference in New Issue
Block a user