From 6c7a4fd683ef8a51e1d56dfcb8bae9f2519c67e3 Mon Sep 17 00:00:00 2001 From: Michel Decima Date: Fri, 8 Oct 2021 12:02:08 +0200 Subject: [PATCH] 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) --- Notes.md | 3 ++ Notes_sssd.md | 95 ++++++++++++++++++++++++++++++++++++++++++++++ debian/control | 6 ++- debian/postinst | 25 ++++++++++-- etc/sssd/sssd.conf | 40 +++++++++++++++++++ 5 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 Notes_sssd.md create mode 100644 etc/sssd/sssd.conf diff --git a/Notes.md b/Notes.md index 828c7ad..9b65b0b 100644 --- a/Notes.md +++ b/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 diff --git a/Notes_sssd.md b/Notes_sssd.md new file mode 100644 index 0000000..c872cbb --- /dev/null +++ b/Notes_sssd.md @@ -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 + + + diff --git a/debian/control b/debian/control index 926705f..2195472 100644 --- a/debian/control +++ b/debian/control @@ -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, diff --git a/debian/postinst b/debian/postinst index 431832d..4fcd03f 100644 --- a/debian/postinst +++ b/debian/postinst @@ -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) diff --git a/etc/sssd/sssd.conf b/etc/sssd/sssd.conf new file mode 100644 index 0000000..1047f0d --- /dev/null +++ b/etc/sssd/sssd.conf @@ -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 +