O login SSH com usuários LDAP sobre o NSLCD funciona após a reinicialização do servidor

1

Eu tenho uma configuração nslcd funcionando em muitos servidores. Eu distribui essa configuração para muitos servidores, quase todos trabalhando sem problemas.

No entanto, esqueci de instalar o libnss-ldapd e o libpam-ldapd em cinco deles.

Isso resultou no seguinte log de depuração nslcd

  nslcd: DEBUG: add_uri(ldaps://dc.example.com/)
  nslcd: DEBUG: ldap_set_option(LDAP_OPT_X_TLS_CACERTDIR,"/etc/ssl/certs")
  nslcd: DEBUG: ldap_set_option(LDAP_OPT_X_TLS_CACERTFILE,"/etc/ssl/certs/example.com.pem")
  nslcd: version 0.8.10 starting
  nslcd: DEBUG: unlink() of /var/run/nslcd/socket failed (ignored): No such file or directory
  nslcd: DEBUG: setgroups(0,NULL) done
  nslcd: DEBUG: setgid(108) done
  nslcd: DEBUG: setuid(107) done
  nslcd: accepting connections

  nslcd: [8b4567] DEBUG: connection from pid=6939 uid=0 gid=0
  nslcd: [8b4567] <authc="user"> DEBUG: nslcd_pam_authc("user","sshd","***")
  nslcd: [8b4567] <authc="user"> DEBUG: myldap_search(base="********", filter="(&(memberOf=********)(sAMAccountName=user))")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_initialize(ldaps://dc.example.com/,)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_rebind_proc()
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_simple_bind_s("cn=********,dc=example,dc=com","***") (uri="ldaps://dc.example.com/,")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_result(): CN=user,OU=********,DC=example,DC=com
  nslcd: [8b4567] <authc="user"> DEBUG: myldap_search(base="CN=user,OU=********,DC=example,DC=com", filter="(objectClass=*)")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_initialize(ldaps://dc.example.com/,)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_rebind_proc()
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_simple_bind_s("CN=user,OU=********,DC=example,DC=com","***") (uri="ldaps://dc.example.com/,")
  nslcd: [8b4567] <authc="user"> DEBUG: failed to bind to LDAP server ldaps://dc.example.com/,: Invalid credentials: 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_unbind()

Eu sei que a configuração está funcionando, já que não mudei nada e está sendo executado em outros servidores.

Eu consegui fazer o ldap funcionar reiniciando o servidor, então parece que ao instalar libnss-ldapd e libpam-ldapd após o lançamento, algum módulo foi desligado.

Pergunta Gostaria de saber qual módulo era esse e se poderia recarregá-lo sem reiniciar o servidor.

FYI: Um simples "serviço nslcd restart" não resolveu o problema. Após a reinicialização, no entanto, tudo estava funcionando como esperado.

    
por mohrphium 11.09.2014 / 14:20

1 resposta

1

Isso foi há um tempo atrás, mas acho que a solução foi reiniciar o nscd também - ou, no nosso caso, removê-lo, já que não precisamos dele.

O nslcd é responsável pela conexão ldap, mas o nscd simplesmente faz o cache.

Então, removendo ou reiniciando o nscd, o cache foi esvaziado e as configurações funcionaram:)

    
por 31.01.2015 / 12:28

Tags