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 start

Veuillez 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" -W

Migrer/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.ldif

Maintenant, 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.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldif

Vous pouvez essayer de rechercher des données :

ldapsearch uid=foouser

Configuration 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 foouser

Vous 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.so

Maintenant, 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.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.