Je suis en train de mettre en place un serveur LDAP sous Debian, et pour ce faire, j'ai suivi ce tutoriel :
http://debianclusters.cs.uni.edu/index.php/User_Authenticati(...)
J'ai suivi scrupuleusement les étapes, aussi bien pour les clients que pour le serveur LDAP et pourtant, impossible de me connceter à un serveur client avec un compte LDAP. J'ai :
serveur1 : premier serveur client
serveur2 : deuxième serveur client
serveurldap : serveur LDAP
Ces 3 serveur sont des machines virtuelles VMWare sous Debian Lenny, noyau 2.6.26-2-686, sur la meme plage d'adresses IP, elles se pinguent toutes. Sur chaque serveur (client et LDAP) j'ai :
/etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass
/etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure try_first_pass
/etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure md5
/etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
/etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
/etc/ldap/ldap.conf
BASE dc=clunapix,dc=dom
URI ldap://10.92.6.114
Sur le serveur LDAP j'ai :
# ps aux | grep slapd
openldap 1742 0.0 0.2 34992 4744 ? Ssl Jun24 1:44 /usr/sbin/slapd -g openldap -u openldap -f /etc/ldap/slapd.conf
root 4998 0.0 0.0 3144 768 pts/0 R<+ 15:05 0:00 grep slapd
preuve que le serveur LDAP tourne.
Un ldapsearch sur le serveur LDAP me donne une sortie correcte. Par exemple :
# ldapsearch -x uid=un_user_qui_existe -D "cn=admin,dc=clunapix,dc=dom" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base (default) with scope subtree
# filter: uid=un_user_qui_existe
# requesting: ALL
#
# un_user_qui_existe, People, clunapix.dom
dn: uid=un_user_qui_existe,ou=People,dc=clunapix,dc=dom
uid: un_user_qui_existe
cn: Prenom Nom
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJGIwcjZQZWhRJHdQUHlMekRzWlVsZHBja2dFRlkzUjA=
shadowLastChange: 14419
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 100
homeDirectory: /home/un_user_qui_existe
gecos: Prenom Nom,,,
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Si j'essaye de me connecter au serveur serveur1, j'obtiens :
$ ssh un_user_qui_existe@serveur1
un_user_qui_existe@serveur1's password:
Permission denied, please try again.
un_user_qui_existe@serveur1's password:
Permission denied, please try again.
un_user_qui_existe@serveur1's password:
Permission denied (publickey,password).
Si j'installe Gnome et son gestionnaire de connexion avec un sélecteur de figures sur serveur1, je vois apparaitre dans le sélecteur de figures tous les utilisateurs qui ont été configurés sur le serveur LDAP, mais pas moyen de m'authentifier non plus. Les serveurs clients communiquent donc bien avec le serveur LDAP pour ce qui concerne la partie NSS, par contre PAM ne semble pas fonctionner et je ne vois pas où est l'erreur. Est-ce que quelqu'un à une idée ? Merci.
--
Rénald
# ldap.conf
Posté par peck (site web personnel) . Évalué à 1.
Regarde le manuel pour lui préciser le bon fichier à utiliser
# penser à configuer pam_ldap.conf et nss_ldap.conf
Posté par Julien MOROT (site web personnel) . Évalué à 2.
Un fichier /etc/libnss-ldap.conf contenant :
host serveurldap
base dc=clunapix,dc=com
ldap_version 3
Un fichier /etc/pam_ldap.conf avec ;
host serveurldap
base dc=clunapix,dc=net
ldap_version 3
pam_password md5
Pense à chmod 0644 ces deux fichiers. Tu auras peut-être à y ajouter un binddn, bindpw, scope et cie.
[^] # Re: penser à configuer pam_ldap.conf et nss_ldap.conf
Posté par mc_arnaud . Évalué à 1.
J'avais effectivement installé libnss-ldap et libpam-ldap, par contre je n'avais pas touché aux fichiers /etc/libnss-ldap.conf et /etc/pam_ldap.conf. J'ai donc mis les doigts dedant et ils étaient partiellement configurés : seules les lignes host étaient commentées. Je les ai donc décommentées et j'ai mis l'adresse du serveur LDAP, mais le problème est toujours le même.
J'ai ensuite lu le man pam, mais je n'ai rien trouvé que je ne sache déjà ou qui me soit utile.
J'ai parcouru aussi les fichiers /etc/pam.d/login | passwd | sshd | su mais ils semblent tous faire appel aux fichiers /etc/pam.d/common-* : présence des lignes :
@include common-auth
@include common-account
@include common-passwd
@include common-session
Bref, j'ai l'impression d'en etre au même point.
--
Rénald
# Liens sur ldap.conf
Posté par Nicolas Greneche . Évalué à 1.
J'ai une conf identique (PDC LDAP/Samba Debian avec clients ubuntu).
J'ai un ldap.conf avec toutes les infos dedans (y compris les infos pour le service NSS).
J'ai un lien symbolique de libnss-ldap.conf et pam-ldap.conf (de mémoire) sur le ldap.conf.
De cette manière mes fichiers sont cohérents.
libnss-ldap te sert à trouver les comptes systèmes.
pam-ldap à l'authentification
ldap.conf est le fichier de configuration (des fois par défaut) pour les applications utilisant ldap (ex : ldapsearch and co).
Pour tester ta conf, commence par faire un ldapsearch (avec -ZZ si tu fais du SSL / start_tls).
Si ça répond, alors fait un getent passwd (qui doit te retourner la totalité de tes comptes utilisateurs). Si ça bloque a ce niveau, il faut bidouiller ton libnss-ldap.conf (par exemple en ajoutant du debug, le support est compilé dans les paquages debian). Enfin, si tout ça fonctionne alors tu peux essayer de t'authentifier. La encore les logs (par défaut /var/log/daemon.log) sont tes amis.
Good luck !
[^] # Re: Liens sur ldap.conf
Posté par mc_arnaud . Évalué à 1.
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: reconnecting to LDAP server...
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:38 clunapix1 nscd: nss_ldap: reconnecting to LDAP server (sleeping 1 seconds)...
Jul 7 17:28:39 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:39 clunapix1 nscd: nss_ldap: failed to bind to LDAP server ldap://10.92.6.114: Invalid credentials
Jul 7 17:28:39 clunapix1 nscd: nss_ldap: could not search LDAP server - Server is unavailable
Jul 7 17:28:39 clunapix1 sshd[2130]: Invalid user un_user_qui_existe from 10.92.1.134
Jul 7 17:28:39 clunapix1 sshd[2130]: Failed none for invalid user un_user_qui_existe from 10.92.1.134 port 42201 ssh2
Jul 7 17:28:40 clunapix1 sshd[2130]: pam_ldap: error trying to bind (Invalid credentials)
Jul 7 17:28:40 clunapix1 sshd[2130]: pam_unix(sshd:auth): check pass; user unknown
Jul 7 17:28:40 clunapix1 sshd[2130]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=$
Jul 7 17:28:42 clunapix1 sshd[2130]: Failed password for invalid user un_user_qui_existe from 10.92.1.134 port 42201 ssh2
Jul 7 17:28:44 clunapix1 sshd[2130]: pam_ldap: error trying to bind (Invalid credentials)
Jul 7 17:28:44 clunapix1 sshd[2130]: pam_unix(sshd:auth): check pass; user unknown
Jul 7 17:28:45 clunapix1 sshd[2130]: Failed password for invalid user un_user_qui_existe from 10.92.1.134 port 42201 ssh2
Jul 7 17:28:47 clunapix1 sshd[2130]: pam_ldap: error trying to bind (Invalid credentials)
Jul 7 17:28:47 clunapix1 sshd[2130]: pam_unix(sshd:auth): check pass; user unknown
Jul 7 17:28:49 clunapix1 sshd[2130]: Failed password for invalid user un_user_qui_existe from 10.92.1.134 port 42201 ssh2
Jul 7 17:28:49 clunapix1 sshd[2130]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.92.1.1$
[^] # Re: Liens sur ldap.conf
Posté par mc_arnaud . Évalué à 1.
ldapsearch -x uid=un_user_qui_existe me retourne l'équivalent du fichier.ldap de l'utilisateur en question. Cette manipulation fonctionne aussi bien sur le serveur LDAP que sur le client.
Par contre, la commande getent passwd ne me retourne que les utilisateurs du système mais pas ceux de la base LDAP.
Je ne sais pas trop qui penser de ça, à part que le client communique bien avec le serveur LDAP, mais mes précédents tests me font penser qu'il y a un problème au moment de l'authentification de l'admin LDAP (si j'ai bien compris le mécanisme, quand un utilisateur veut se connecter à un serveur avec son compte LDAP, NSS et/ou PAM doivent se connecter à la base avec le compte admin avant de procéder à l'authentification de l'utilisateur).
[^] # Re: Liens sur ldap.conf
Posté par nono14 (site web personnel) . Évalué à 1.
Vérifie aussi les acls ldap.
slapd en debug peut fournir des infos interessantes parfois.
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
# ta config
Posté par NeoX . Évalué à 2.
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure try_first_pass
veut dire qu'il peut suffire d'un compte ldap pour se connecter (premiere ligne)
mais juste apres tu dis qu'il faut obligatoirement (required) un compte local
essaie en mettant sufficient pour le pam_unix.so
[^] # Re: ta config
Posté par mc_arnaud . Évalué à 1.
Je cherche toujours...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.