Authentification LDAP échoue

Bonsoir,

J’essaie de mettre en place un annuaire LDAP qui me permettra d’authentifier des utilisateurs Debian. Une fois les différentes configurations effectuées, l’authentification échoue. Je pense qu’il ne trouve pas les utilisateurs dans l’annuaire LDAP car lorsque j’entre un compte local il me demande le mot de passe + le mot de passe LDAP, alors que si je rentre un compte de l’annuaire, il me dit directement login incorrect.

Pour résoudre ce problème j’ai vérifié avec attention que le serveur à contacter est bien celui sur lequel se trouve l’annuaire. Voici les différentes configurations :

Configuration serveur
1. Installation des paquets ldap-utils libldap-2.4-2 libldap-2.4-2-dbg slapd slapd-dbg

2. Dans le fichier /etc/ldap/ldap.conf :
BASE dc=exemple,dc=com
URI ldap://192.168.1.254/

3. dpkg-reconfigure slapd
J’entre les informations correspondant au domaine exemple.com : dc=exemple,dc=com, etc.

4. ldapsearch -x correspond bien à la configuration du point précédent.

5. Je créé les fichiers .ldif pour créer mon annuaire et ajouter mes utilisateurs.

structure.ldif contient : [code]dn: ou=utilisateurs,dc=exemple,dc=com
objectClass: organizationalUnit
ou: utilisateurs
description: Unite d’organisation contenant les utilisateurs du domaine

dn: ou=ordinateurs,dc=exemple,dc=com
objectClass: organizationalUnit
ou: ordinateurs
description: Unite d’organisation contenant les ordinateurs du domaine

dn: ou=vente,ou=utilisateurs,dc=exemple,dc=com
objectClass: organizationalUnit
ou: vente
description: Unite d’organisation representantle service vente

dn: ou=direction,ou=utilisateurs,dc=exemple,dc=com
objectClass: organizationalUnit
ou: vente
description: Unite d’organisation representant le service direction

dn: cn=vente,ou=vente,ou=utilisateurs,dc=exemple,dc=com
objectClass: posixGroup
gidNumber: 501
cn: vente
description: Groupe vente

dn: cn=direction,ou=direction,ou=utilisateurs,dc=exemple,dc=com
objectClass: posixGroup
gidNumber: 502
cn: direction
description: Groupe direction

dn: cn=pauldupont,cn=direction,ou=direction,ou=utilisateus,dc=exemple,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: pauldupont
userPassword: pauldupont
cn: pauldupont
uidnumber: 1050
gidnumber: 501
homeDirectory: /home/profils/pauldupont
sn: pauldupont[/code]

adduseringroupe.ldif contient :

dc: cn=vente,ou=vente,ou=utilisateurs,dc=exemple,dc=com changetype: modify add: memberuid memberuid: uid=pauldupont,cn=direction,ou=direction,ou=utilisateurs,dc=exemple,dc=com

6. J’envoie les fichiers .ldif dans l’annuaire : ldapadd -x -D "cn=admin,dc=exemple,dc=com" -W -f fichier.ldif

7. ldapsearch -x
Les informations ont été correctement rentrées. Toutefois, l’attribut userPassword n’apparaît pas dans l’entrée de l’utilisateur. Est-ce normal ?

Configuration client
1. Installation des paquets ldap-utils libldap-2.4-2 libldap-2.4-2-dbg slapd slapd-dbg libnss-ldap libpam-ldap libpam-modules libpam-cracklib nscd

2. Configuration de libnss-ldap : introduction de l’ip du server (192.168.1.254), dc=exemple,dc=com.

3. Configuration de libpam-ldap : non à l’autorisation de l’admin LDAP comme s’il était un root local, non à ce que le serveur LDAP demande des informations avant de récupérer des entreés.

4. dpkg-reconfigure libnss-ldap Les informations entrées sont correctes.

5. Dans le fichier /etc/ldap/ldap.conf :
BASE dc=exemple,dc=com
URI ldap://192.168.1.254/

6. Dans le fichier /etc/nsswitch.conf :
passwd: compat ldap
group: compat ldap
shadow: compat ldap

7. Dans le fichier /etc/libnss.ldap.conf :
base dc=exemple,dc=com
uri ldap://192.168.1.254/
ldap_version 3
rootbinddn cn=admin,dc=exemple,dc=com

8. Dans le fichier /etc/libnss.ldap.secret :
mot de passe ldap

9. Dans le fichier /etc/pam_ldap.conf :
base dc=exemple,dc=com
uri ldap://192.168.1.254/
rootbinddn cn=admin,dc=exemple,dc=com
port 389
scope sub
bind_timelimit 30
idle_timelimit 3600
pam_filter objectClass=posixAccount
pam_login_attribute uid

10. Dans les fichiers /etc/pam.d/common-auth et /etc/pam.d/common-account et /etc/pam.d/common-session j’ai ajouté à la fin :
auth sufficient pam_ldap.so

puis dans le fichier /etc/pam.d/common-password j’ai ajouté à la fin :
password sufficient pam_ldap.so use_first_pass

Notes
getent passwd et getent group renvoie uniquement les informations de la machine locale et aucune entrée LDAP.

Versions des systèmes et logiciels
Debian Jessie 8.0 AMD64 pour le client et serveur
uname -a pour le client et serveur : Linux SRV1-DEB 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux
OpenLDAP 2.4, configuration avec OLC, cn=config

Merci d’avance de votre aide.

Bonjour,

Le client semble contacter correctement le serveur :

[code]ldapsearch -x -H “ldap://192.168.1.254” -b “dc=exemple,dc=com” dn

extended LDIF

LDAPv3

base <dc=exemple,dc=com> with scope subtree

filter: (objectclass=*)

requesting: dn

#exemple.com
dn: dc=exemple,dc=com

#admin, exemple.com
dn: cn=admin,dc=exemple,dc=com

#utilisateurs, exemple.com
dn: ou=utilisateurs,dc=exemple,dc=com

#ordinateurs, exemple.com
dn: ou=ordinateurs,dc=exemple,dc=com

#vente, utilisateurs, exemple.com
dn: ou=vente,ou=utilisateurs,dc=exemple,dc=com

#direction, utilisateurs, exemple.com
dn: ou=direction,ou=utilisateurs,dc=exemple,dc=com

#vente, vente, utilisateurs, exemple.com
dn: cn=vente,ou=vente,ou=utilisateurs,dc=exemple,dc=com

#direction, direction, utilisateurs, exemple.com
dn: cn=direction,ou=direction,ou=utilisateurs,dc=exemple,dc=com

pauldupont, direction, direction, utilisateurs, exemple.com

dn: cn=dupont,cn=direction,ou=direction,ou=utilisateurs,dc=exemple,dc=com
[/code]

Toutefois lorsque je fais un :

Aucun retour ne m’est donné. Lorsque je vais voir dans les fichiers de logs /var/log/auth.log :

May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: reconnecting to LDAP server...
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: reconnecting to LDAP server...
May 12 10:43:37 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:37 CLI1-DIR-DEB nscd: nss_ldap: could not search LDAP server - Server is unavailable

Il semblerait que c’est un problème d’identifiants. Pourtant j’ai vérifié tous les fichiers cités précédemment et je n’ai repéré aucune erreur. Peut-être manque-t-il un fichier ou des informations dans un fichier ? Malgré des recherches je n’ai pas trouvé si c’était le cas.

Quelqu’un à une idée ?

Merci d’avance de votre aide.

Bonjour,

Tout d’abord pour le client debian 8 le seul paquet qu’il te faut installer est "libnss-ldap"
Il comprend deux dépendances “libpam-ldap” et “nscd”.

A l’installation tu as du faire une erreur car ton fichier log t’indique "ldap:///192.168.1.254/"
Hors une adresse ne peut pas commencer par 3 /.

Il y a donc probablement une erreur dans ton fichier /etc/libnss-ldap.conf et /etc/ldap/ldap.conf

Ensuite si tu ne fais aucune erreur lors de l’installation de libnss-ldap tu as un seul fichier à modifier, qui est /etc/nsswitch
Il faut donc déclarer le ldap, après compat tu dois écrire ldap.

Le paquet slapd ne doit être installer que sur un serveur…

Pour avoir le /home il faut ajouter dans le fichier /etc/pam.d/common-session la ligne:
session required pam_mkhomedir.so

Cordialement,

[quote=“halysan”]Bonjour,

Tout d’abord pour le client debian 8 le seul paquet qu’il te faut installer est "libnss-ldap"
Il comprend deux dépendances “libpam-ldap” et “nscd”.

A l’installation tu as du faire une erreur car ton fichier log t’indique "ldap:///192.168.1.254/"
Hors une adresse ne peut pas commencer par 3 /.

Il y a donc probablement une erreur dans ton fichier /etc/libnss-ldap.conf et /etc/ldap/ldap.conf

Ensuite si tu ne fais aucune erreur lors de l’installation de libnss-ldap tu as un seul fichier à modifier, qui est /etc/nsswitch
Il faut donc déclarer le ldap, après compat tu dois écrire ldap.

Le paquet slapd ne doit être installer que sur un serveur…

Pour avoir le /home il faut ajouter dans le fichier /etc/pam.d/common-session la ligne:
session required pam_mkhomedir.so

Cordialement,[/quote]

D’accord, je vais vérifier les points que tu as cité aussitôt que possible. Je reviendrais dès que les manipulations auront été effectuées. Merci pour ton aide.

Bonjour,

Après les modifications effectuées selon les conseils de halysan, la connexion reste impossible. Maintenant les fichiers de logs indiquent :

May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: ldap_simple_bind Can't contact LDAP server May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: reconnecting to LDAP server... May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: ldap_simple_bind Can't contact LDAP server May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: ldap_simple_bind Can't contact LDAP server May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: reconnecting to LDAP server... May 18 08:54:07 CLI1-DIR-DEB su[2326]: pam_ldap: ldap_simple_bind Can't contact LDAP server

Le client peut bien contacter le serveur, que ce soit par son nom ou par son adresse IP.

Merci d’avance.

Edit : Après redémarrage du service le service LDAP peut être contacté. Le problème est quand même présent. Après des recherches sur internet j’ai constaté qu’il fallait mettre le mot de passe ldap dans le fichier /etc/ldap.secret et maintenant lorsque je fais un getent passwd && getent group j’ai également les utilisateurs et groupes ldap. L’authentification reste toutefois impossible. Dans le fichier auth.log j’ai :

May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_mail(login:session): user unknown
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_loginuid(login:session): error_ log for user-name'pauldupont' does not exist
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_unix(login:session): session opened for user pauldupont by LOGIN(uid=0)
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_systemd(login:session): Failed to get user data
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_systemd(login:session): Failed to get user data
May 18 09:09:53 CLI1-DIR-DEB login[904]: User not known to the underlying authentication module

Bonjour,

Sur le client tape la commande suivante:

dpkg-reconfigure libnss-ldap

Et vérifie bien les informations.

Cordialement,

[quote=“halysan”]Bonjour,

Sur le client tape la commande suivante:

dpkg-reconfigure libnss-ldap

Et vérifie bien les informations.

Cordialement,[/quote]

Bonjour,

Les informations entrées sont correctes.

Dans tes logs tu as aucun pam_ldap?

Tu as bien juste installés libnss-ldap (dep: libpam-ldap nscd) ?

Sinon vérifie tes fichiers pam.d…

Car si la commande ldapsearch marche ça veut dire que pam /ou nss est mal configuré.
Montre tes pam_ldap sur /etc/pam.d/common-auth common-account common-password et pam_ldap.conf

Cordialement

Bonjour,

Le problème a été résolu. Il fallait bien mettre le mot de passe dans /etc/ldap.secret.

Merci de votre aide.