====== Authentification UNIX via SSSd ======
===== Installation =====
apt install sssd sssd-ldap sssd-tools libpam-sss libnss-sss
===== Configuration =====
* Créer le fichier ///etc/sssd/sssd.conf// : [sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
domains = example
debug_level = 2
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
fallback_homedir = /tmp
shell_fallback = /bin/bash
debug_level = 2
[pam]
reconnection_retries = 3
debug_level = 2
[domain/example]
timeout = 5
min_id = 100
max_id = 0
use_fully_qualified_names = false
enumerate = true
cache_credentials = true
sudo_provider = none
id_provider = ldap
access_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://ldap.example.com:636
ldap_tls_reqcert = demand
ldap_search_base = o=example
ldap_default_bind_dn = uid=sssd,ou=sysaccounts,o=example
ldap_default_authtok_type = password
ldap_default_authtok = secret_pwd
ldap_schema = rfc2307
ldap_deref = always
ldap_user_object_class = posixAccount
ldap_user_search_base = ou=people,o=example
ldap_access_filter = (myEnabled=TRUE)
ldap_group_object_class = posixGroup
ldap_group_search_base = ou=groups,o=example
* Ajuster les droits de ce nouveau fichier : chown root:root /etc/sssd/sssd.conf
chmod 0600 /etc/sssd/sssd.conf
* Redémarrer le service pour prise en compte : service sssd restart
Il est possible de valider la configuration avec la commande suivante : sssctl config-check
==== Configuration NSS ====
Activer //sss// pour les diverses services déclarer dans le fichier ///etc/nsswitch.conf//. Par exemple :
passwd: files systemd sss
group: files systemd sss
shadow: files sss
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
automount: sss
Pour vérifier que les informations des utilisateurs remontent bien, plusieurs solutions :
* ''getent passwd''
* ''id [username]''
* ''sssctl user-checks [username]''
==== Création automatique des dossiers personnels des utilisateurs lors de leur première connexion ====
* en tant que ''root'', lancer la commande ''pam-auth-update''
* dans l'interface, cocher ''Create home directory on login''
* valider sur ''''
==== Configuration de SSH ====
Il est possible de faire en sorte que les clés SSH publiques autorisées des utilisateurs soient récupérées dans l'annuaire LDAP (si elles y sont stockées).
Pour cela :
* Éditez le fichier ///etc/sssd/sssd.conf// :
* Dans la section de votre //domain//, ajouter : ldap_user_ssh_public_key = mySshPubKey
* Redémarrer le service pour prise en compte : service sssd restart
* Dans le fichier ///etc/ssh/sshd_config//, ajouter : AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
* Stopper puis redémarrer le service //ssh// pour prise en compte : service ssh stop
service ssh start
Il est possible de vérifier que cela fonctionne correctement en lançant la commande ''sss_ssh_authorizedkeys'' avec en paramètre le nom d'un utilisateur ayant saisi sa clé publique SSH dans l'annuaire : La commande doit alors normalement retourner la clé de l'utilisateur.
**Remarque :** il est pas indispensable que l'utilisateur soit autorisé à se connecter à cette machine (=passe le test du paramètre //ldap_access_filter//) pour que ce test fonctionne.
L'activation du paramètre ''AuthorizedKeysCommandUser'' ne désactive pas pour autant le fichier spécifié via le paramètre ''AuthorizedKeysFile''. Dans les faits, ''sshd'' va d'abord tenter de trouver une clé correspondante dans le fichier spécifié via le paramètre ''AuthorizedKeysFile'' et n'exécutera la commande du paramètre ''AuthorizedKeysCommandUser'' que si aucune correspondance n'a été trouvée.