Forum Linux.général LDAP sous Debian

Posté par  .
Étiquettes :
0
6
juil.
2009
Bonjour,


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  (site web personnel) . Évalué à 1.

    Attention, pam n'utilise pas forcément ldap.conf
    Regarde le manuel pour lui préciser le bon fichier à utiliser
  • # penser à configuer pam_ldap.conf et nss_ldap.conf

    Posté par  (site web personnel) . Évalué à 2.

    A regarder rapidement, il te manque la partie configurant pam et nss si tu as bien installé libnss-ldap et libpam-ldap.

    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  . Évalué à 1.

      Bonjour,


      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  . Évalué à 1.

    Salut,

    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  . Évalué à 1.

      Après avoir fouillé dans les logs, j'ai essayé de modifier plusieurs paramètres dans le fichier /etc/libnss-ldap.conf mais rien à faire, je n'arrive pas à me connecter et à chaque fois que j'essaye j'ai ceci dans /var/log/auth.log
      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  . Évalué à 1.

      J'ai fait les 2 tests que tu m'a conseillé :

      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  (site web personnel) . Évalué à 1.

        Essaie un ldapsearch avec bindn et bindpw
        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  . É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  . Évalué à 1.

      Retour de vacances, j'ai essayé avec la modification que tu me conseille, mais ça ne fonctionne toujours pas. J'ai essayé en appliquant la même modification aux fichiers common-account, common-password et common-session mais c'est pareil.

      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.