doc: update notes
This commit is contained in:
6
Notes.md
6
Notes.md
@@ -70,7 +70,7 @@ de configuration ?
|
||||
|
||||
Voir les liens:
|
||||
|
||||
- [PAM-PKCS#11 Login Tools]
|
||||
- [PAM-PKCS11 Login Tools]
|
||||
- [PAM-PKCS11 User Manual]
|
||||
- [PAM-PKCS11 Mappers API]
|
||||
|
||||
@@ -124,8 +124,8 @@ On introduit les fonctionnalités pas à pas:
|
||||
- configuration PKCS#11 avec `pam_sss`
|
||||
- suppression de `pam_krb5` et `pam_pkcs11`
|
||||
|
||||
Void [Notes_gdm.md](Notes_gdm.md) pour le fonctionnement de GDM avec PAM.
|
||||
Voir [Notes_pkcs11.md](Notes_pkcs11.md) pour la configuration `pam_pkcs11`.
|
||||
|
||||
Voir [Notes_sssd.md](Notes_sssd.md) pour la configuration `pam_sss`.
|
||||
|
||||
|
||||
@@ -135,6 +135,6 @@ Voir [Notes_sssd.md](Notes_sssd.md) pour la configuration `pam_sss`.
|
||||
[GNOME - Disallow login using a fingerprint]: https://help.gnome.org/admin/system-admin-guide/stable/login-fingerprint.html.en
|
||||
[SSSD - Introduction]: https://sssd.io/docs/introduction.html
|
||||
[SSSD - Migrating from pam_krb5]: https://sssd.io/docs/krb/krb-migration.html
|
||||
[PAM-PKCS#11 Login Tools]: https://github.com/OpenSC/pam_pkcs11
|
||||
[PAM-PKCS11 Login Tools]: https://github.com/OpenSC/pam_pkcs11
|
||||
[PAM-PKCS11 User Manual]: http://opensc.github.io/pam_pkcs11/doc/pam_pkcs11.html
|
||||
[PAM-PKCS11 Mappers API]: http://opensc.github.io/pam_pkcs11/doc/mappers_api.html
|
||||
|
||||
152
Notes_gdm.md
152
Notes_gdm.md
@@ -1,3 +1,113 @@
|
||||
GDM et PAM
|
||||
----------
|
||||
|
||||
GDM utilise PAM pour l'authentification. Il s'appuie sur une configuration
|
||||
dédiée dans `/etc/pam.d`, cf les fichiers de profil `gdm-password`,
|
||||
`gdm-smartcard` et `gdm-fingerprint`.
|
||||
|
||||
Le reste du système (login console, SSH) utilise aussi PAM, via une autre
|
||||
configuration nommée `/etc/pam.d/common-auth`. Le contenu de ce fichier
|
||||
est généré automatiquement par `pam-auth-update` pour tous les modules PAM
|
||||
qui livrent une définition dans `/usr/share/pam-configs`.
|
||||
|
||||
Sur Hirstute, dans la configuration par défaut, GDM choisit automatiquement
|
||||
le profil qu'il va utiliser : si un token PKCS#11 qui possède le drapeau
|
||||
"amovible" est présent (typiquement le dongle Aladdin), alors il utilisera
|
||||
le profil `gdm-smartcard`, sinon il utilisera le profil `gdm-password`.
|
||||
|
||||
Il est possible de changer cette sélection avec une propriété `dconf`,
|
||||
comme ceci:
|
||||
```
|
||||
[org/gnome/login-screen]
|
||||
enable-smartcard-authentication=false
|
||||
```
|
||||
et alors GDM utilise le profil `gdm-password`, même si un dongle PKI est
|
||||
connecté à la machine lors de la connexion.
|
||||
|
||||
Le profil `gdm-password` est grosso-modo une façade pour `common-auth`
|
||||
(il fait l'inclusion de ce fichier), donc tous les modules PAM qui y sont
|
||||
déclarés sont utilisables (unix, ccreds, krb5, sss, etc.)
|
||||
|
||||
Le profil `gdm-smartcard` est un lien symbolique, géré par `update-alternatives`,
|
||||
qui peut pointer vers l'un des trois profils qui gèrent effectivement les
|
||||
tokens PKCS#11:
|
||||
|
||||
- `gdm-smartcard-pkcs11-exclusive` qui utilise le module `pam_pkcs11`
|
||||
- `gdm-smartcard-sssd-exclusive` qui utilise le module `pam_sss`
|
||||
avec l'option `require_cert_auth`
|
||||
- `gdm-smartcard-sssd-or-password` qui utilise le module `pam_sss`
|
||||
avec l'option `try_cert_auth` et passe la main au profil `common-auth`
|
||||
en solution de secours si le premier module a échoué.
|
||||
|
||||
Ces trois profils nécessitent une configuration dédiée pour PKCS#11
|
||||
dans le module PAM correspondant, si pas configuré, ça ne marche pas :
|
||||
GDM va demander l'identifiant de l'utilisateur (username), puis le PIN, et
|
||||
ensuite l'authentification échoue, retour au point de départ, en boucle.
|
||||
|
||||
La valeur par défaut sur Ubuntu est `gdm-smartcard-sssd-exclusive`.
|
||||
|
||||
Selection d'un profil gdm-smartcard
|
||||
-----------------------------------
|
||||
|
||||
En mode interactif:
|
||||
```
|
||||
$ sudo update-alternatives --config gdm-smartcard
|
||||
|
||||
There are 3 choices for the alternative gdm-smartcard (providing /etc/pam.d/gdm-smartcard).
|
||||
Selection Path Priority Status
|
||||
|
||||
0 /etc/pam.d/gdm-smartcard-sssd-exclusive 50 auto mode [*]
|
||||
1 /etc/pam.d/gdm-smartcard-pkcs11-exclusive 30 manual mode
|
||||
2 /etc/pam.d/gdm-smartcard-sssd-exclusive 50 manual mode
|
||||
3 /etc/pam.d/gdm-smartcard-sssd-or-password 40 manual mode
|
||||
|
||||
Press to keep the current choice[*], or type selection number: 3
|
||||
```
|
||||
|
||||
En mode inattendu:
|
||||
```
|
||||
$ sudo update-alternatives --set gdm-smartcard /etc/pam.d/gdm-smartcard-sssd-or-password
|
||||
```
|
||||
|
||||
Il n'est pas nécessaire de redémarrer le service `gdm3` après
|
||||
modification.
|
||||
|
||||
Saisie de l'identifiant utilisateur en mode smartcard
|
||||
-----------------------------------------------------
|
||||
|
||||
En mode par défaut (gdm-password), l'écran d'accueil GDM présente la
|
||||
liste des utilisateurs humains (>=1000) déclarés sur la machine, ou bien un
|
||||
unique utilisateur pré-sélectionné s'il n'existe qu'un seul utilisateur
|
||||
humain sur la machine. Il est possible de désactiver l'affichage de cette
|
||||
liste avec une propriété `dconf`, cf [GNOME - Disable the user list], et
|
||||
alors l'écran d'accueil demande la saisie de l'identifiant de l'utilisateur.
|
||||
|
||||
En mode PKI (gdm-smartcard), l'écran d'accueil GDM propose directement
|
||||
la saisie de l'identifiant de l'utilisateur, il ne propose pas la liste
|
||||
des utilisateurs existants, et la propriété `disable-user-list` n'est
|
||||
pas prise en compte.
|
||||
|
||||
Les modules PAM qui exploitent PKCS#11 savent extraire l'identifiant
|
||||
de l'utilisateur à partir des données présente dans un certificat
|
||||
d'authentification, une fois le mapper configuré. Cette information
|
||||
est utilisée principalement pour déterminer où est le compte de
|
||||
l'utilisateur sur le disque, elle n'est pas forcément utilisée pour
|
||||
identifier l'utilisateur lui-même.
|
||||
|
||||
Pour `pam_pkcs11`, il est possible de configurer le module pour qu'il
|
||||
identifie directement l'utilisateur depuis le certificat, sans aucune
|
||||
saisie clavier, cf le "alternate way of working" décrit dans le README.
|
||||
(voir [Notes_pkcs11.md](Notes_pkcs11.md) pour plus de détails).
|
||||
|
||||
Néanmoins, GDM est incapable d'exploiter cette information de cette
|
||||
manière, il ne sait pas sélectionner l'utilisateur à partir d'un
|
||||
certificat, il affiche systématiquement le champ de saisie de
|
||||
l'identifiant en mode smartcard.
|
||||
|
||||
|
||||
Configuration dconf
|
||||
-------------------
|
||||
|
||||
Pour désactiver le login avec smartcard, je me suis inspiré de la
|
||||
documentation [GNOME - Disallow login using a fingerprint] propose de
|
||||
créer un profil `user` pour `dconf`, hélas, ça ne fonctionne pas !
|
||||
@@ -7,7 +117,49 @@ le dongle PKI est présent dans le port USB, c'est bien un login/password
|
||||
qui est demandé par GDM.
|
||||
Documentation pas à jour ?
|
||||
|
||||
Important: après avoir modifié une valeur dans `/etc/dconf/db/gdm.d/*`,
|
||||
il faut faire prendre en compte cette modification par `dconf`, puis
|
||||
redémarrer le service `gdm3`:
|
||||
|
||||
```
|
||||
$ sudo dconf update
|
||||
$ sudo restart gdm3.service
|
||||
```
|
||||
|
||||
Les modes de fonctionnement choisis
|
||||
-----------------------------------
|
||||
|
||||
Pour l'instant, deux modes de fonctionnement:
|
||||
|
||||
1. `gdm-password` + `pam_sss` + `common-auth`
|
||||
2. `gdm-smartcard` + `pam_pkcs11`
|
||||
|
||||
Dans le premier mode, le smartcard est explicitement désactivé dans
|
||||
`dconf`, GDM ne reconnait pas le token PKCS#11 à la connexion, il
|
||||
ne demande pas le username, c'est la connexion classique à laquelle
|
||||
l'utilisateur est habitué, pas de régression. Le module `pam_sss`
|
||||
est configuré pour authentifier via Kerberos, et le `common-auth`
|
||||
permet les solutions de secours (`pam_unix` et `pam_ccreds`).
|
||||
|
||||
Dans le deuxième mode, le token PKCS#11 est utilisé à la connexion
|
||||
si présent, sinon authentification classique avec mot de passe local
|
||||
(`pam_unix`). Dans un cas comme dans l'autre, pas d'authentification
|
||||
Kerberos, donc pas de TGT à la connexion.
|
||||
|
||||
A l'étude, un troisième mode de fonctionnement avec PKCS#11 dans SSSD.
|
||||
|
||||
Références
|
||||
----------
|
||||
|
||||
- [GNOME - Add a greeter logo to the login screen]
|
||||
- [GNOME - Display a text banner on the login screen]
|
||||
- [GNOME - Disallow login using a fingerprint]
|
||||
- [GNOME - Disable the user list]
|
||||
|
||||
|
||||
[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
|
||||
[GNOME - Disallow login using a fingerprint]: https://help.gnome.org/admin/system-admin-guide/stable/login-fingerprint.html.en
|
||||
[GNOME - Disable the user list]: https://help.gnome.org/admin/system-admin-guide/stable/login-userlist-disable.html.en
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Configuration pam-pkcs11
|
||||
========================
|
||||
------------------------
|
||||
|
||||
Thierry Tallagrand à la rescousse !
|
||||
|
||||
@@ -69,7 +69,7 @@ DEBUG:pklogin_finder.c:151: Certificate is valid and maps to user tmzf5455
|
||||
Le module pam-pkcs11 est maintenant configuré, il reste à le faire
|
||||
prendre en compte par GDM:
|
||||
```
|
||||
$ update-alternatives --config gdm-smartcard
|
||||
# update-alternatives --config gdm-smartcard
|
||||
|
||||
There are 3 choices for the alternative gdm-smartcard (providing /etc/pam.d/gdm-smartcard).
|
||||
Selection Path Priority Status
|
||||
@@ -91,7 +91,7 @@ https://yourdev.tech.orange/linux-article/login-with-pki/) avec screenshots.
|
||||
|
||||
|
||||
Saisie du compte avec GDM
|
||||
=========================
|
||||
-------------------------
|
||||
|
||||
Avec la première tentative de configuration issue directement de
|
||||
`pam_pkcs11.conf.example`, on constate lorsque le dongle PKI est inséré
|
||||
@@ -146,7 +146,7 @@ sur Hirsute ... Bug dans GDM ? Fonctionnalité non prise en compte ?
|
||||
|
||||
|
||||
Activer PKCS#11 dans GDM
|
||||
========================
|
||||
------------------------
|
||||
|
||||
Trois opérations à faire:
|
||||
|
||||
@@ -166,7 +166,7 @@ soit:
|
||||
Il faudrait un script pour automatiser cela ...
|
||||
|
||||
Limitations
|
||||
===========
|
||||
-----------
|
||||
|
||||
Le paquet `libpam-pkcs11` ne fournit pas de configuration pour `pam-auth-update`
|
||||
dans `/usr/share/pam-configs`, donc l'authentification PKCS#11 ne peut pas
|
||||
@@ -184,3 +184,18 @@ de faire cela avec SSSD.
|
||||
Contrairement à ce que `pkcs11-exclusive` laisse entendre, si le dongle n'est
|
||||
pas présent dans le port USB, on peut toujours se connecter par login/password
|
||||
(mais Kerberos foonctionnera-t'il si `pam_krb5.so` est présent ?)
|
||||
|
||||
Références
|
||||
----------
|
||||
|
||||
- [PAM-PKCS11 Login Tools]
|
||||
- [PAM-PKCS11 User Manual]
|
||||
- [PAM-PKCS11 Mappers API]
|
||||
- [Local PAM-PKCS11 documentation]
|
||||
|
||||
|
||||
[PAM-PKCS11 Login Tools]: https://github.com/OpenSC/pam_pkcs11
|
||||
[PAM-PKCS11 User Manual]: http://opensc.github.io/pam_pkcs11/doc/pam_pkcs11.html
|
||||
[PAM-PKCS11 Mappers API]: http://opensc.github.io/pam_pkcs11/doc/mappers_api.html
|
||||
[Local PAM-PKCS11 documentation]: file:///usr/share/doc/libpam-pkcs11
|
||||
|
||||
|
||||
@@ -78,18 +78,65 @@ 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).
|
||||
|
||||
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]
|
||||
|
||||
|
||||
|
||||
#TODO sss-certmap
|
||||
#TODO sss_cache
|
||||
#TODO p11-child
|
||||
|
||||
|
||||
https://ask.fedoraproject.org/t/gui-login-with-sssd-managed-users-fails/6606/2
|
||||
|
||||
[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/)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user