informatique:reseau:ldap:authentification_unix_via_sssd

Authentification UNIX via SSSd

apt install sssd sssd-ldap sssd-tools libpam-sss libnss-sss
  • 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

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]
  • en tant que root, lancer la commande pam-auth-update
  • dans l'interface, cocher Create home directory on login
  • valider sur <Ok>

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.
  • informatique/reseau/ldap/authentification_unix_via_sssd.txt
  • Dernière modification : 2022/01/20 18:48
  • de bn8