From 20ec88944ca4b5d0c3ae2d1cf8a066c31152739e Mon Sep 17 00:00:00 2001 From: Michel Decima Date: Wed, 13 Apr 2022 15:24:17 +0200 Subject: [PATCH] feat: use standard template for ccache file 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. --- Notes_sssd.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++ etc/sssd/sssd.conf | 2 ++ 2 files changed, 53 insertions(+) diff --git a/Notes_sssd.md b/Notes_sssd.md index 17a869a..e37745b 100644 --- a/Notes_sssd.md +++ b/Notes_sssd.md @@ -111,6 +111,57 @@ 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 ---- diff --git a/etc/sssd/sssd.conf b/etc/sssd/sssd.conf index 4efa46b..04636a7 100644 --- a/etc/sssd/sssd.conf +++ b/etc/sssd/sssd.conf @@ -36,6 +36,8 @@ krb5_renewable_lifetime = 7d krb5_renew_interval = 30m krb5_use_kdcinfo = true krb5_kdcinfo_lookahead = 5:2 +krb5_ccachedir = /tmp +krb5_ccname_template = FILE:%d/krb5cc_%U dns_discovery_domain = S-FT-FR-EBU._sites.ad.francetelecom.fr # chpass_provider = none