Public bug reported:

Description:    Ubuntu 14.04.5 LTS
Release:        14.04

nslcd: 0.9.6-1

I'm seeing an issue with nslcd triggering an additional authentication
attempt for every "uri" specified in nslcd.conf when using pam_ldap in
the common-auth stack of /etc/pam.d. E.g. if you specify 6 LDAP servers
in nslcd.conf, a single failed auth attempt hits all 6 servers
separately. My /etc/pam.d/common-auth looks as follows

auth    [success=2 default=ignore]      pam_unix.so nullok_secure try_first_pass
auth    [success=1 default=ignore]      pam_ldap.so try_first_pass debug

account requisite  pam_time.so

# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so


When an authentication attempt fails a password, the failed password attempt 
then seems to cascade to each other LDAP server specified in the "uri" lines of 
nslcd.conf. This becomes a problem if you have an account lockout threshold 
that is lower than the number of uri's specified in nslcd.conf.

Shouldn't nslcd return the authentication failure from the first LDAP
server that responds rather than continuing to try each other uri? E.g.
if I specified 8 LDAP servers, it could theoretically make 8 failed
attempts from a user failing 1 password?

Debug output of nslcd is below. This logging is produced by a *single*
failed password attempt on sshd login. The myldap_search function hits
mydomainctrl1, mydomainctrl2, drdomainctrl1, and drdomainctrl2 after
this single failed attempt.


nslcd: [3c9869] <passwd="knewman"> DEBUG: myldap_search(base="ou=User 
Accounts,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [3c9869] <passwd="knewman"> DEBUG: ldap_result(): CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net
nslcd: [3c9869] <passwd="knewman"> DEBUG: ldap_result(): end of results (1 
total)
nslcd: [3c9869] <passwd="knewman"> DEBUG: myldap_search(base="ou=Service 
Accounts,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [3c9869] <passwd="knewman"> DEBUG: ldap_result(): end of results (0 
total)
nslcd: [3c9869] <passwd="knewman"> DEBUG: 
myldap_search(base="ou=Groups,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [3c9869] <passwd="knewman"> DEBUG: ldap_result(): end of results (0 
total)
nslcd: [334873] DEBUG: connection from pid=10689 uid=0 gid=0
nslcd: [334873] <passwd="knewman"> DEBUG: myldap_search(base="ou=User 
Accounts,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_initialize(ldaps://mydomainctrl1.mydomain.net)
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_set_rebind_proc()
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_OFF)
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
nslcd: [334873] <passwd="knewman"> DEBUG: 
ldap_simple_bind_s("[email protected]","***") 
(uri="ldaps://mydomainctrl1.mydomain.net")
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_result(): CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_result(): end of results (1 
total)
nslcd: [334873] <passwd="knewman"> DEBUG: myldap_search(base="ou=Service 
Accounts,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_result(): end of results (0 
total)
nslcd: [334873] <passwd="knewman"> DEBUG: 
myldap_search(base="ou=Groups,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [334873] <passwd="knewman"> DEBUG: ldap_result(): end of results (0 
total)
nslcd: [b0dc51] DEBUG: connection from pid=10689 uid=0 gid=0
nslcd: [b0dc51] <authc="knewman"> DEBUG: nslcd_pam_authc("knewman","sshd","***")
nslcd: [b0dc51] <authc="knewman"> DEBUG: myldap_search(base="ou=User 
Accounts,dc=mydomain,dc=net", 
filter="(&(objectClass=user)(sAMAccountName=knewman))")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_result(): CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net
nslcd: [b0dc51] <authc="knewman"> DEBUG: myldap_search(base="CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net", filter="(objectClass=*)")
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_initialize(ldaps://mydomainctrl1.mydomain.net)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_rebind_proc()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_OFF)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_sasl_bind("CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net","***") (uri="ldaps://mydomainctrl1.mydomain.net")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_parse_result() result: Invalid 
credentials: 80090308: LdapErr: DSID-0C0903A8, comment: AcceptSecurityContext 
error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: failed to bind to LDAP server 
ldaps://mydomainctrl1.mydomain.net: Invalid credentials: 80090308: LdapErr: 
DSID-0C0903A8, comment: AcceptSecurityContext error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_unbind()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_initialize(ldaps://mydomainctrl2.mydomain.net)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_rebind_proc()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_OFF)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_sasl_bind("CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net","***") (uri="ldaps://mydomainctrl2.mydomain.net")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_parse_result() result: Invalid 
credentials: 80090308: LdapErr: DSID-0C0903A8, comment: AcceptSecurityContext 
error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: failed to bind to LDAP server 
ldaps://mydomainctrl2.mydomain.net: Invalid credentials: 80090308: LdapErr: 
DSID-0C0903A8, comment: AcceptSecurityContext error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_unbind()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_initialize(ldaps://drdomainctrl1.mydomain.net)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_rebind_proc()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_OFF)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_sasl_bind("CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net","***") (uri="ldaps://drdomainctrl1.mydomain.net")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_parse_result() result: Invalid 
credentials: 80090308: LdapErr: DSID-0C0903A8, comment: AcceptSecurityContext 
error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: failed to bind to LDAP server 
ldaps://drdomainctrl1.mydomain.net: Invalid credentials: 80090308: LdapErr: 
DSID-0C0903A8, comment: AcceptSecurityContext error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_unbind()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_initialize(ldaps://drdomainctrl2.mydomain.net)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_rebind_proc()
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_OFF)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [b0dc51] <authc="knewman"> DEBUG: 
ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_sasl_bind("CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net","***") (uri="ldaps://drdomainctrl2.mydomain.net")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_parse_result() result: Invalid 
credentials: 80090308: LdapErr: DSID-0C0903A8, comment: AcceptSecurityContext 
error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: failed to bind to LDAP server 
ldaps://drdomainctrl2.mydomain.net: Invalid credentials: 80090308: LdapErr: 
DSID-0C0903A8, comment: AcceptSecurityContext error, data 52e, v1db1
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_unbind()
nslcd: [b0dc51] <authc="knewman"> CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net: Invalid credentials
nslcd: [b0dc51] <authc="knewman"> DEBUG: myldap_search(base="ou=User 
Accounts,dc=mydomain,dc=net", 
filter="(&(&(objectClass=user)(uidNumber=*)(unixHomeDirectory=*))(uid=knewman))")
nslcd: [b0dc51] <authc="knewman"> DEBUG: ldap_result(): CN=Kevin 
Newman,OU=Infrastructure,OU=Technology,OU=Shared Services,OU=User 
Accounts,DC=mydomain,DC=net

** Affects: nss-pam-ldapd (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1618190

Title:
  nslcd Repeats Failed Auth Attempt for Every "uri" Specified in
  nslcd.conf, Causes Account Lockouts

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nss-pam-ldapd/+bug/1618190/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to