autenticação openldap ssh

3

Estou tentando configurar em um servidor openldap executando no debian 6 a autenticação ssh em um host ldap-client chamado ldap_client.

Veja o que o ldapsearch retorna no servidor:

dn: dc=localnet,dc=lan
objectClass: dcObject
objectClass: organization
dc: localnet 
o: Some_Enterprise
description: localnet.lan

dn: ou=people,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: uid=joe,ou=people,dc=localnet,dc=lan
objectClass: account
objectClass: posixAccount
cn: joe
uid: joe
uidNumber: 10001
gidNumber: 2000
homeDirectory: /home/joe
loginShell: /bin/sh
gecos: joe
description: joe

No lado do cliente, configurei o libnss-ldap e o nsswitch.conf da seguinte forma:

passwd:         files ldap
group:          files ldap
shadow:         files ldap

Para que o id do comando unix no cliente (id joe) retorne seu uid / gid. Então o usuário é reconhecido pelo ldap.

Mas depois de horas brincando com o google, não consegui configurar a autenticação no cliente com o ssh.

Eu tenho essas linhas em /etc/pam.d/commun-account, commun-auth e commun-password

auth        sufficient      pam_ldap.so
auth        required        pam_unix.so nullok_secure

E estes em /etc/pam.d/ssh

auth    sufficient /lib/security/pam_ldap.so    no_warn
auth    required  pam_unix.so           no_warn try_first_pass
account required  /lib/security/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
account         required        pam_unix.so

Eu tenho o usePam = yes no /etc/ssh/sshd.conf.

Aqui está a saída de auth.log no cliente:

==> /var/log/auth.log <==
Dec  7 17:39:06 versionning sshd[3898]: pam_ldap: error trying to bind (Invalid credentials)
Dec  7 17:39:06 versionning sshd[3898]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.kimsufi.com  user=joe
Dec  7 17:39:08 versionning sshd[3898]: Failed password for joe from a.b.c.d port 58191 ssh2

No servidor:     == > / var / log / syslog < ==     Dec 7 16:42:43 ldap slapd [963]: < = bdb_equality_candidates: (uid) não indexado

e com tshark

LDAP bindResponse(1) invalidCredentials    

Eu não entendo onde e como eu tenho que configurar a senha do joe. Não na conta unix local do cliente, portanto, no servidor; Eu não sei onde fazer isso

    
por philippe 07.12.2011 / 17:46

2 respostas

4

A classe de objeto posixAccount LDAP possui um atributo userPassword - defina a senha de Joe aqui.
Uma vez feito isso, certifique-se de ligar ao diretório LDAP como Joe (você pode usar ldapsearch para testar isso) - Se isso funcionar, pam_ldap também deve funcionar.

    
por 07.12.2011 / 17:59
2

Bem, seu objeto joe ( dn: uid=joe,ou=people,dc=localnet,dc=lan ) deve ter um atributo userPassword . Este atributo contém o hash da senha que representa a senha do usuário. Leia as senhas e o OpenLDAP aqui: link

    
por 07.12.2011 / 18:01