LDAP Authentication · 5 min read · Dec 13, 2025
Authentification LDAP sous Linux

Ce guide vous montrera comment stocker vos utilisateurs dans LDAP et authentifier certains services contre celui-ci. Je ne montrerai pas comment installer des paquets particuliers, car cela dépend de la distribution/système. Je me concentrerai sur la configuration “pure” de tous les composants nécessaires pour avoir l’authentification/stocker des utilisateurs dans LDAP. Le guide suppose d’une certaine manière que vous migrez d’une authentification régulière passwd/shadow, mais il convient également aux personnes qui le font depuis le début.
Exigences
- OpenLDAP
- pam_ldap
- nss_ldap
- Outils de migration PADL
Introduction
Ce que nous voulons réaliser, c’est avoir nos utilisateurs stockés dans LDAP, authentifiés contre LDAP (direct ou pam) et avoir un outil pour gérer cela de manière compréhensible pour l’homme.
De cette façon, nous pouvons utiliser tous les logiciels qui ont un support LDAP ou revenir au module PAM LDAP, qui agira comme une passerelle PAM->LDAP.
Plus d’informations sur l’idée LDAP peuvent être trouvées sur Wikipedia : LDAP wikipedia
Configuration d’OpenLDAP
OpenLDAP se compose des démons slapd et slurpd. Ce guide couvre un serveur LDAP sans réplication, donc nous nous concentrerons uniquement sur slapd. Je suppose également que vous avez installé et initialisé votre installation OpenLDAP (cela dépend du système/de la distribution). Si c’est le cas, passons à la partie configuration.
Sur mon système (Gentoo), la configuration d’OpenLDAP est stockée dans /etc/openldap, nous sommes intéressés par le fichier /etc/openldap/slapd.conf. Mais d’abord, nous devons générer un mot de passe pour l’administrateur LDAP, afin de le mettre dans le fichier de configuration :
slappasswd -h {md5}La configuration ressemble à ceci :
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/lib/openldap/openldap
access to attrs=userPassword
by dn="uid=root,ou=People,dc=domain,dc=com" write
by dn="cn=Manager,dc=domain,dc=com" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=Manager,dc=domain,dc=com" write
by * read
database bdb
suffix "dc=domain,dc=com"
rootdn "cn=Manager,dc=domain,dc=com"
rootpw {MD5}Tk1sMytv5ipjr+Vhcf03JQ==
directory /var/lib/openldap-data
index objectClass eq
N’oubliez pas de changer le suffixe et les chemins selon vos besoins.
Ce sont des options de base avec quelques ACL de base nécessaires pour changer les mots de passe par utilisateur. Si vous voulez plus de fonctionnalités, veuillez lire le manuel sur OpenLDAP. Maintenant que nous avons une configuration correcte pour slapd, nous pouvons démarrer le démon :
service slapd startVeuillez vous rappeler d’avoir quelque chose comme ça dans le fichier de configuration responsable des arguments passés au slapd (le chemin doit pointer vers le slapd.sock) :
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"Maintenant, nous pouvons tester si openldap fonctionne et fonctionne correctement. Nous n’avons pas encore de données dans le répertoire, mais nous pouvons essayer de nous lier en tant que cn=Manager,dc=domain,dc=com. Lorsque vous êtes invité à entrer le mot de passe, vous devez utiliser celui que vous avez généré (bien sûr, la version en texte clair de celui-ci :) :
ldapsearch -D "cn=Manager,dc=domain,dc=com" -WMigrer/Ajouter des données au répertoire
Maintenant que nous avons un serveur LDAP en cours d’exécution, nous devons le remplir de données, soit créer soit migrer des entrées. Je vais vous montrer comment migrer des entrées existantes à partir de /etc/passwd, /etc/shadow, /etc/groups
La première étape consiste à configurer les outils de migration selon vos besoins. Le fichier de configuration sur Gentoo est situé dans /usr/share/migrationtools/migrate_common.ph.
En général, vous devez changer seulement ceci :
$DEFAULT_BASE = "dc=domain,dc=com";
$EXTENDED_SCHEMA = 1;
Maintenant, vous êtes prêt à migrer les données (en fait, cela fonctionne même sans la commande d’exportation) :
export ETC_SHADOW=/etc/shadow
./migrate_base.pl > /tmp/base.ldif
./migrate_group.pl /etc/group /tmp/group.ldif
./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif
./migrate_passwd.pl /etc/passwd /tmp/passwd.ldifMaintenant, nous avons les données dans le format compris par le serveur LDAP. Veuillez ouvrir l’un des fichiers avec un éditeur de texte pour vous habituer à la syntaxe. Après cela, nous pouvons ajouter les données des ldifs.
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/base.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldifVous pouvez essayer de rechercher des données :
ldapsearch uid=foouserConfiguration du client
Par client, je veux dire la machine qui se connecte au serveur LDAP pour obtenir des utilisateurs et autoriser. Cela peut également être la machine sur laquelle le serveur LDAP fonctionne. Dans les deux cas, nous devons modifier trois fichiers : /etc/ldap.conf, /etc/nsswitch.conf et /etc/pam.d/system-auth
Commençons par ldap.conf, le client LDAP :
BASE dc=domain, dc=com
scope sub
suffix "dc=domain,dc=com"
## lorsque vous souhaitez changer le mot de passe d'un utilisateur par root
rootbinddn cn=Manager,dc=domain,dc=com
## il y a besoin lorsque votre ldap meurt
timelimit 5
bind_timelimit 5
uri ldap://ldap.domain.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=Computers,dc=cognifide,dc=pl
nss_base_passwd ou=People,dc=cognifide,dc=pl
nss_base_shadow ou=People,dc=cognifide,dc=pl
nss_base_group ou=Group,dc=cognifide,dc=pl
nss_base_hosts ou=Hosts,dc=cognifide,dc=pl
Maintenant, il est temps de s’occuper de nsswitch.conf et pam
Ajoutez ceci à nsswitch.conf :
passwd: files ldap
shadow: files ldap
group: files ldap
Et changez le system-auth (ou tout ce que vous avez comme login, sshd, etc.) en :
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_ldap.so
password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password sufficient pam_unix.so nullok md5 shadow use_authtok
password sufficient pam_ldap.so use_first_pass
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
session optional pam_ldap.so
Il est temps de le tester. Le meilleur outil pour cela est un bon vieux getent. Choisissez un utilisateur de votre système et émettez :
getent passwd | grep foouserVous devriez obtenir le résultat deux fois, si c’est le cas, le nss_ldap fonctionne bien. La partie pam peut être testée en supprimant un utilisateur du /etc/passwd et en essayant de se connecter via ssh.
Apache mod_auth_ldap
Pour avoir l’autorisation LDAP dans apache, vous devez charger le module mod_auth_ldap
LoadModule mm_auth_ldap_module modules/mod_auth_ldap.soMaintenant, il suffit de créer un .htaccess comme ça :
AuthName "Restreint"
AuthType Basic
AuthLDAPURL ldap://ldap.domain.com:389/ou=People,dc=domain,dc=com?uid
AuthLDAPBindDN "cn=Manager,dc=domain,dc=com"
AuthLDAPBindPassword "votre_mot_de_passe_secret_à_l'administrateur_ldap"
require valid-user
Notez que cette méthode peut également être utilisée pour l’autorisation WebDAV subversion
Outils d’administration pour LDAP
Il existe quelques outils que je recommande d’utiliser pour administrer le serveur OpenLDAP
- phpldapadmin - outil basé sur le web
- ldapvi - navigation vim
- Outils de migration PADL - outils de migration
- Outils sambaldap IDEALX - outils LDAP samba
Autres applications conscientes de LDAP
- Postfix
- Courier IMAP
- jabberd
- eGroupware
Résumé
Si quelqu’un a quelque chose à ajouter, veuillez le faire. Je sais que la configuration peut ne pas être parfaite.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.