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 commandepam-auth-update
- dans l'interface, cocher
Create home directory on login
- valider sur
<Ok>
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.