Default SSSD template for ccache file is /tmp/krb5cc_%U_XXXXXX, where XXXXXX is a suffix that will be interpreted by mkstemp(3) to create a unique file name, while the standard configuration of the libkrb5 library is `/tmp/krb5cc_%U`. To guarantee compatibility with the existing system, we force the use of the standard model in SSSD.
194 lines
6.7 KiB
Markdown
194 lines
6.7 KiB
Markdown
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`.
|
|
|
|
Activer SSSD dans GDM (password)
|
|
--------------------------------
|
|
|
|
Quatre opérations à faire:
|
|
|
|
- basculer l'alternative `gdm-smartcard` sur `gdm-smartcard-smartcard-or-password`
|
|
- desactiver l'authentification par smartcard dans `dconf` pour GDM
|
|
- démarrer le service `sssd`
|
|
- redémarrer le service `gdm3`
|
|
|
|
soit:
|
|
|
|
```
|
|
# update-alternatives --set gdm-smartcard /etc/pam.d/gdm-smartcard-sssd-or-password
|
|
# sed -Ei 's/(enable-smartcard-authentication)=.*/\1=false/' /etc/dconf/db/gdm.d/03-smartcard
|
|
# dconf update
|
|
# systemctl enable sssd.service sssd-pam.socket
|
|
# systemctl start sssd.service
|
|
# systemctl restart gdm3
|
|
```
|
|
|
|
Pour l'instant, on désactive gdm-smardcard dans la configuration GDM via `dconf`
|
|
parce que la gestion du PKCS#11 dans SSSD n'est pas encore configurée, et ce n'est
|
|
pas aussi facile qu'avec `pam_pkcs11` ...
|
|
|
|
SSSD et PKCS#11
|
|
---------------
|
|
|
|
Pas certain que SSSD puisse fonctionner avec SmartCard + utilisateur local,
|
|
la documentation mentionne explicitement LDAP comme sources d'identité,
|
|
donc il faudrait joindre le domaine AD, fonctionnerait seulement online
|
|
(sauf si cache).
|
|
|
|
Stockage du Credential Cache
|
|
----------------------------
|
|
|
|
Par défaut, SSSD stocke le credential cache dans un fichier dont le modèle
|
|
de nom est `/tmp/krb5cc_%U_XXXXXX`, avec `%U` qui est remplacé par le UID
|
|
de l'utilisateur, et `XXXXXX` est remplacé par `mkstemp(3)` pour obtenir
|
|
un nom de fichier unique. Pour le premier utilisateur humain, cela donne:
|
|
|
|
```
|
|
/tmp/krb5cc_1000_TiXG5v
|
|
```
|
|
|
|
_Important: il semble qu'il y a un fichier par session, quand on se connecte
|
|
à la machine en SSH, on voit apparaitre un nouveau fichier `krb5cc` avec un
|
|
suffixe différent. Ces fichiers ne sont pas nettoyés lorsque la connexion
|
|
SSH est coupée._
|
|
|
|
Ce modèle est différent de celui utilisé par la bibliothèque système
|
|
`libkrb5` et la configuration `/etc/krb5.conf`, qui utilise plutôt
|
|
`/tmp/krb5cc_%U`, ce qui donne par exemple:
|
|
|
|
```
|
|
/tmp/krb5_1000_TiXG5v
|
|
```
|
|
|
|
Pour conserver la compatibilité avec l'existant, on force dans la
|
|
configuration SSSD l'utilisation du modèle de nom classique, c'est peut être
|
|
moins sécurisé, mais ça fait moins de surprises dans les scripts existants
|
|
qui utilisent l'authentification Kerberos (cf `orange-yourdev-setup`).
|
|
Ce qui donne dans la configuration:
|
|
|
|
```
|
|
krb5_ccachedir = /tmp
|
|
krb5_ccname_template = FILE:%d/krb5cc_%U
|
|
```
|
|
|
|
Pour bien faire, il faudrait stocker le cache dans la mémoire du noyau, c'est
|
|
ce qui est le plus sécurisé, avec la propriété:
|
|
|
|
```
|
|
krb5_ccname_template = KEYRING:persistent:%U
|
|
```
|
|
|
|
et reporter la propriété équivalente dans `/etc/krb5.conf`.
|
|
Néanmoins, ce changement a des conséquences:
|
|
|
|
- il faut vérifier que tous nos scripts fonctionnent toujours
|
|
- il faut gérer la transition de `/etc/krb5.conf`
|
|
- l'applet `krb5-auth-dialog` ne gère pas le mode KEYRING
|
|
- dans GNOME, il faut tester le dialogue "comptes en lignes" pour Kerberos
|
|
|
|
TODO
|
|
----
|
|
|
|
Les choses à voir:
|
|
|
|
- `sss-certmap`
|
|
- `sss_cache`
|
|
- `p11-child`
|
|
|
|
Et la configuration PKCS#11 dans SSSD ...
|
|
|
|
Références
|
|
----------
|
|
|
|
- [SSSD - Introduction]
|
|
- [SSSD - Migrating from pam_krb5]
|
|
- [SSSD - Design / Require Smartcard authentication ]
|
|
- [RHEL-8 / MANAGING SMART CARD AUTHENTICATION]
|
|
- [GUI-Login with SSSD managed users fails]
|
|
|
|
|
|
[SSSD - Introduction]: https://sssd.io/docs/introduction.html
|
|
[SSSD - Migrating from pam_krb5]: https://sssd.io/docs/krb/krb-migration.html
|
|
[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
|
|
[GUI-Login with SSSD managed users fails]: https://ask.fedoraproject.org/t/gui-login-with-sssd-managed-users-fails/6606/2
|
|
[smartcard cert mapping offline (AD)]: https://lists.fedorahosted.org/archives/list/sssd-users@lists.fedorahosted.org/thread/STBGBEZI6D5A3MKMB26P2FNFLURML5DB/
|
|
|
|
|