Não é possível fazer o sshd + pam + ldap funcionar (AuthorizedKeysCommand?)

2

O que eu fiz:

  • Instalado libpam-ldapd

  • Configurar /etc/ldap/ldap.conf

  • Configure /etc/ssh/ldap-keys.sh como root:root 0755 , confirmou que funciona ( /etc/ssh/ldap_keys.sh amadan retorna minhas chaves públicas do LDAP).

  • Configure /etc/nsswitch.conf : passwd , sudo e shadow agora diga compat ldap e a nova linha sudoers tem ldap .

  • Configure /etc/ssh/sshd_config : AuthorizedKeysCommand pontos para o arquivo acima, AuthorizedKeysCommandUser para um usuário dedicado recém-criado

  • Configurar /usr/share/pam-configs/mkhomedir ; correu pam-auth-update .

A situação atual é que, quando tento efetuar login, AuthorizedKeysCommand ( /etc/ssh/ldap-keys.sh ) nunca é executado. Eu também não sei se o restante da minha configuração está correta ou não, mas ainda não posso dizer por conta de sshd reportando "usuário inválido":

Oct 17 17:22:59 xxx sshd[86244]: Invalid user amadan from yyy
Oct 17 17:22:59 xxx sshd[86244]: input_userauth_request: invalid user amadan [preauth]
Oct 17 17:23:01 xxx sshd[86244]: Connection closed by yyy [preauth]

Eu sei que estou fazendo algo errado ... mas o que?

EDIT: configurações relevantes do PAM:

# auth
auth    [success=2 default=ignore]  pam_unix.so nullok_secure debug
auth    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000 use_first_pass debug
auth    requisite           pam_deny.so
auth    required            pam_permit.so
auth    optional            pam_cap.so 

# account
account [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]    pam_ldap.so minimum_uid=1000
account requisite           pam_deny.so
account required            pam_permit.so

EDIT: strace excerto deste sshd :

open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "7ELF
open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "7ELF
Oct 17 17:22:59 xxx sshd[86244]: Invalid user amadan from yyy
Oct 17 17:22:59 xxx sshd[86244]: input_userauth_request: invalid user amadan [preauth]
Oct 17 17:23:01 xxx sshd[86244]: Connection closed by yyy [preauth]
# auth
auth    [success=2 default=ignore]  pam_unix.so nullok_secure debug
auth    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000 use_first_pass debug
auth    requisite           pam_deny.so
auth    required            pam_permit.so
auth    optional            pam_cap.so 

# account
account [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]    pam_ldap.so minimum_uid=1000
account requisite           pam_deny.so
account required            pam_permit.so
open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "7ELF
open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "7ELF%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%0%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832
fstat(8, {st_mode=S_IFREG|0644, st_size=47792, ...}) = 0
mmap(NULL, 2142888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f8ef8a3c000
mprotect(0x7f8ef8a46000, 2097152, PROT_NONE) = 0
mmap(0x7f8ef8c46000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xa000) = 0x
close(8)                                = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8
fstat(8, {st_mode=S_IFREG|0644, st_size=152262, ...}) = 0
mmap(NULL, 152262, PROT_READ, MAP_PRIVATE, 8, 0) = 0x7f8efcee1000
close(8)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = 8
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%0%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832 fstat(8, {st_mode=S_IFREG|0644, st_size=26544, ...}) = 0 mmap(NULL, 2121744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f58df52b000 mprotect(0x7f58df531000, 2093056, PROT_NONE) = 0 mmap(0x7f58df730000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x5000) = 0x7f58df730000 close(8) = 0 mprotect(0x7f58df730000, 4096, PROT_READ) = 0 open("/lib/x86_64-linux-gnu/security/pam_deny.so", O_RDONLY|O_CLOEXEC) = 8
%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%0%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832 fstat(8, {st_mode=S_IFREG|0644, st_size=47792, ...}) = 0 mmap(NULL, 2142888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f8ef8a3c000 mprotect(0x7f8ef8a46000, 2097152, PROT_NONE) = 0 mmap(0x7f8ef8c46000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xa000) = 0x close(8) = 0 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=152262, ...}) = 0 mmap(NULL, 152262, PROT_READ, MAP_PRIVATE, 8, 0) = 0x7f8efcee1000 close(8) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = 8
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%0%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832 fstat(8, {st_mode=S_IFREG|0644, st_size=26544, ...}) = 0 mmap(NULL, 2121744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f58df52b000 mprotect(0x7f58df531000, 2093056, PROT_NONE) = 0 mmap(0x7f58df730000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x5000) = 0x7f58df730000 close(8) = 0 mprotect(0x7f58df730000, 4096, PROT_READ) = 0 open("/lib/x86_64-linux-gnu/security/pam_deny.so", O_RDONLY|O_CLOEXEC) = 8

Strace trecho de um trabalho sshd (em outro servidor):

%pre%

No trabalho sshd , pam_ldap.so chama libldap_r-2.4.so.2 ; neste, não; ele sai sem fazer muito e segue imediatamente para o próximo módulo PAM. Eu não sei porque.

    
por Amadan 17.10.2016 / 10:47

1 resposta

1

Parece que o cache mantido pelo daemon de armazenamento em cache do serviço de nomes cresceu obsoleto / não foi atualizado para refletir as novas configurações de LDAP.

sudo /etc/init.d/nscd restart

deve reiniciar o serviço e atualizar o cache.

    
por 22.10.2016 / 19:53