Traduction(s) : English

(!) ?Discussion


Configuration de l'authentification LDAP

Cette page décrit les étapes nécessaires à la gestion des informations telles que les noms d'utilisateurs, groupes et autres (généralement stockées dans des fichiers situés dans /etc ou gérées par NIS) à l'aide un serveur LDAP. Ces informations sont fournies grâce à NSS (Name Service Switch) dont la configuration se fait dans /etc/nsswitch.conf.

Un serveur LDAP peut gérer les bases de données suivantes : aliases (alias de messagerie, ignoré par la plupart des démons de courrier), ethers (adresses Ethernet), group (groupes d'utilisateurs), hosts (noms et adresses d'hôte), netgroup (groupes d'hôtes et d'utilisateurs pour le contrôle d'accès), networks (informations concernant le réseau), passwd (comptes des utilisateurs), protocols (protocoles réseau), rpc (base de données des numéros de programmes rpc), services (liste des services réseau Internet) et shadow (informations sécurisées sur les comptes utilisateurs).

Il existe actuellement deux paquets disponibles pour configurer les requêtes NSS via LDAP : libnss-ldap et libnss-ldapd. Le choix entre les deux dépend de vos besoins. En général, libnss-ldapd est plus simple mais plus récent et libnss-ldap est plus mature, mais plus complexe. D'autre part, libnss-ldap a quelques problèmes connus au démarrage qui devraient être traités dans libnss-ldapd.

À propos de l'utilisation de nscd

Pour le débogage, il est recommandé de ne pas lancer nscd (le démon de Name Service Caching) parce que nscd peut masquer les problèmes en fournissant des entrées de son cache. Donc, n'installez pas le paquet nscd jusqu'à ce qu'il soit clair que tout fonctionne ou arrêtez nscd ainsi

  # /etc/init.d/nscd stop

Toutefois, l'utilisation de nscd est nécessaire avec libnss-ldap et si les permissions du fichier/etc/libnss-ldap.conf ne permettent pas aux utilisateurs normaux de le lire le (par exemple, lorsque vous utilisez l'option bindpw). Certaines versions de libnss-ldap peuvent définir des permissions restrictives sur ce fichier. Notez que toutes les requêtes NSS ne passent pas par nscd (seulement passwd, group et {host), si bien qu'il est possible que cela ne fonctionne pas dans toutes les situations.

Pour un usage en production, il est recommandé de lancer nscd, car il permet de limiter les requêtes au serveur LDAP. Vous pouvez régler le cache en modifiant les valeurs -time-to-live dans le fichier /etc/nscd.conf si vous devez suivre des modifications apportées au répertoire LDAP rapidement (bien que les valeurs par défaut soient très bien dans la plupart des cas).

Configuration de NSS avec libnss-ldap

Installez le paquet:

  # apt-get install libnss-ldap

Prenez soin de lire la documentation installée dans /usr/share/doc/libnss-ldap/

Si vous envisagez de faire des requêtes de noms d'hôtes via le protocole LDAP, vous devriez ajouter le nom d'hôte de votre serveur LDAP dans /etc/hosts (même si vous utilisez une adresse IP pour configurer la connexion au serveur). Sans cela, attendez-vous à quelques soucis au démarrage pour les processus tentant d'utiliser LDAP qui va tourner en rond à la recherche de son nom d'hôte.

Modifier le fichier /etc/libnss-ldap.conf pour inclure au moins les éléments suivants (remplacer les valeurs des options qui sont spécifiques à votre environnement):

  # Votre serveur LDAP. Sa résolution de nom doit être possible sans LDAP.
  uri ldap://10.0.0.1

  # The distinguished name of the search base.
  base dc=<your>,dc=<domain>

Si vous avez spécifié rootbinddn, vous devez mettre le mot de passe de l'administrateur LDAP dans le fichier /etc/ldap.secret en mode 600 (rw-------).

Modifier le fichier /etc/nsswitch.conf pour ajouter LDAP aux services que vous souhaitez activer (prenez soin de mettre LDAP après "files").

  passwd:         files ldap
  group:          files ldap
  shadow:         files ldap

  hosts:          files dns ldap
  networks:       files ldap

  protocols:      db files
  services:       db files
  ethers:         db files
  rpc:            db files

  netgroup:       nis

Configuration de NSS avec libnss-ldapd

Une alternative consiste à utiliser libnss-ldapd. Ce logiciel a été développé pour corriger certaines lacunes de libnss-ldap, voir la page de nss-ldapd (en anglais) pour plus de détails.

Installez le paquet avec:

  # apt-get install libnss-ldapd

L'essentiel de la configuration pour les situations communes se fait pendant l'installation. Les questions suivantes sont généralement posées:

libnss-ldapd fournit des valeurs par défaut raisonnables pour la plupart des cas (en se référant à l'environnement et à d'éventuelles configurations existantes). Cela devrait être suffisant pour permettre les requêtes NSS via LDAP dans les cas les plus courants.

Si vous avez une configuration moins commune ou que vous avez besoin de plus de configuration (par exemple des certificats SSL/TLS, une configuration de SASL/Kerberos, etc.) consultez la page de manuel nss-ldapd.conf et la documentation dans /usr/share/doc/libnss-ldapd.

nslcd doit être redémarré si des modifications sont apportées au fichier /etc/nss-ldapd.conf.

Verifiez que NSS est opérationel

Vérifiez que NSS voit bien ce que fournit LDAP à l'aide getent:

  # getent passwd

Ceci devrait vous montrer les comptes de LDAP qui ne sont pas dans le fichier /etc/passwd. Des tests similaires peuvent être faits avec group, shadow et d'autres bases de données configurées dans /etc/nsswitch.conf}.

Veillez à faire également quelques essais en tant qu'utilisateurs non-root. Essayez également de redémarrer pour voir si les requêtes NSS sont effectuées correctement pendant le démarrage.

Notez que getent shadow ne devrait retourner des données que pour les utilisateurs root. D'autre part, les mots de passe ne sont généralement pas retournés à moins que le serveur LDAP ait été configuré pour renvoyer ces données et dans un format pris en charge. Si pam_ldap est utilisé (voir fr/LDAP/PAM), il n'est pas nécessaire de gérer les mots de passe à l'aide du serveur LDAP.

En utilisant le paquet libnss-ldapd, du débogage peut être fait en lançant nslcd (le démon de connexion) en mode débogage (n'oubliez pas d'arrêter nscd lors du débogage):

  # /etc/init.d/nscd stop
  # /etc/init.d/nslcd stop
  # nslcd -d

Des opérations de débogage supplémentaires peuvent être réalisées à l'aide de l'utilitaire ldapsearch du paquet ldap-utils. Vous pouvez rechercher toutes les informations qui sont disponibles pour un utilisateur :

  % ldapsearch -h <ldapserver> -b dc=<your>,dc=<domain> -x uid=<username>

Spécifiez les options -D et -W pour vous connecter si les options binddn ou rootbinddn sont utilisées.