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:
Michel Decima
2021-10-08 12:02:08 +02:00
parent d0cbb5093f
commit 6c7a4fd683
5 changed files with 164 additions and 5 deletions

95
Notes_sssd.md Normal file
View 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