Voici un petit tuto très succint pour mettre en place rapidement une authentification LDAP. Je ne m’attarderai pas sur la sécurité, la réplication etc…
On part d’un serveur vierge, avec le réseau configuré. Si votre domaine DNS c’est toto.local, le DIT LDAP sera dc=toto,dc=local. Pour moi ce sera dc=morot,dc=fr C’est parti :
apt-get install slapd ldap-utils
On met en place nos OU qui contiendront les utilisateurs et les groupes (faire un control+D à la fin de la saisie) :
ldapadd -x -W -D cn=admin,dc=morot,dc=fr dn: ou=People,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: People dn: ou=Groups,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: Groups
On ajoute une première entrée :
ldapadd -x -W -D cn=admin,dc=morot,dc=fr
Enter LDAP Password:
dn: cn=Julien Morot,ou=People,dc=morot,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
userPassword: {SSHA}SECRET
givenName: Julien
sn: Morot
cn: Julien Morot
displayName: Julien Morot
uidNumber: 1026
gidNumber: 100
uid: julien
mail: julien@morot.fr
gecos: Julien Morot
loginShell: /bin/bash
homeDirectory: /home/julien
adding new entry "cn=Julien Morot,ou=People,dc=morot,dc=fr"
Le mot de passe SSHA est généré par la commande slappasswd.
On passe au client :
root# apt-get install libnss-ldap libpam-ldap nscd
Debconf pose un certain nombre de questions à adapter par rapport à votre DIT :
- URI : ldapi:/// ldap:///localhost:389 ldap:///nom.domaine:389
- Base de recherche : dc=morot,dc=fr
- LDAP Version : 3
- Make local root Database admin : yes
- Does the LDAP database require login : No
- LDAP account for root : cn=admin,dc=morot,dc=fr
- LDAP root account password : celui indiqué à l’installation du package slapd
Maintenant que les packages sont configurés, il faut indiquer à NSS et PAM de les utiliser :
/etc/nsswitch.conf :
passwd: compat ldap group: compat ldap shadow: compat ldap
Vérification :
root# getent passwd |grep julien julien:x:1026:100:Julien Morot:/home/julien:/bin/bash
Dans le fichier /etc/pam.d/common-session, on ajoute un module PAM qui se charge de créer le répertoire personnel de l’utilisateur s’il n’est pas présent :
root# grep -v '^#' /etc/pam.d/common-session session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session optional pam_umask.so session required pam_unix.so session optional pam_ldap.so session required pam_mkhomedir.so skel=/etc/skel umask=0022
C’est terminé!

Salut,
Juste une petite observation, dans le fichier /etc/nsswitch.conf, il faut éviter de mettre «ldap» en 1er.
C’est toujours les comptes locaux dans /etc/passwd qui doivent être lu en 1er car il contient les comptes systèmes et en cas de plantage du ldap, pas besoin d’attendre le timeout pour passer sur les comptes locaux.
Sinon bon article 🙂
Manu
Merci à toi! Tu as raison effectivement. Dans le cas présent, j’ai toujours le root actif donc je peux toujours rapidement bypasser l’authentification LDAP sans me logger en simple user et passer sudoers en cas d’incident.
SSSD (http://fedorahosted.org/sssd) est plus intéressant à mon sens, j’en parlerai peut être à l’occasion. Cela permet de faire de l’authentification mise en cache mais tu connais sans doute 🙂
J irai même plus loin si je place « ldap » avant « compat » le boot d’une ubuntu 12.04 avec SSD passe de 2 secondes a + d’ 1 minute ! Donc il FAUT mettre « ldap » après « compat » (je viens de passer un moment a chercher le problème donc si ça peut aider certains ;))
a+