sshd pam_ldap:ldap_simple_bind 无法联系 LDAP 服务器

sshd pam_ldap:ldap_simple_bind 无法联系 LDAP 服务器

看到很多与我的问题有关的类似帖子,但到目前为止没有一个真正有助于解决问题。

我有一堆旧的 RHEL 5.5 服务器,需要根据 LDAP 实例(OpenDJ)进行身份验证。

我可以执行手动 ldapsearch,效果很好:

# /usr/bin/ldapsearch -D cn=#####,ou=users,dc=######,dc=com -w ###### -LLLx -H ldaps://lhcsrvprddir02.#######.com:1636 -b dc=#######,dc=com cn=####
dn: cn=####,ou=users,dc=##########,dc=com
objectClass: organizationalPerson
objectClass: top
objectClass: person
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: posixAccount
uid: *****
employeeType: *****
uidNumber: *****
gecos: ********
mail: ******.com
homeDirectory: *******
gidNumber: ******
cn: *****
sn: *****
loginShell: /bin/lbash
userPassword:***************

我的 LDAP 服务器确认连接/绑定成功,并且似乎没有抱怨基于证书的问题等。

[26/Jul/2017:10:06:29 +0100] CONNECT conn=2140 from=10.20.82.8:60136 to=10.20.231.4:1636 protocol=LDAPS
[26/Jul/2017:10:06:29 +0100] BIND REQ conn=2140 op=0 msgID=1 version=3 type=SIMPLE dn="cn=###,ou=users,dc=#######,dc=com"
[26/Jul/2017:10:06:29 +0100] BIND RES conn=2140 op=0 msgID=1 result=0 authDN="cn=####,ou=users,dc=#######,dc=com" etime=0
[26/Jul/2017:10:06:29 +0100] SEARCH REQ conn=2140 op=1 msgID=2 base="dc=######,dc=com" scope=sub filter="(cn=####)" attrs="ALL"
[26/Jul/2017:10:06:29 +0100] SEARCH RES conn=2140 op=1 msgID=2 result=0 nentries=1 etime=0
[26/Jul/2017:10:06:29 +0100] UNBIND REQ conn=2140 op=2 msgID=3
[26/Jul/2017:10:06:29 +0100] DISCONNECT conn=2140 reason="Client Unbind"

但是当我通过 SSH 连接时,我在 /var/log/secure 文件中看到以下内容

sshd[8275]: pam_ldap: ldap_simple_bind Can't contact LDAP server

以下是我目前在 /etc/ldap.conf 中的内容:

uri ldaps://lhcsrvprddir02.######.com
port 1636
base dc=######,dc=com
ldap_version 3
binddn cn=######,ou=service,ou=users,dc=######,dc=com
bindpw ###############
scope sub
timelimit 120
bind_timelimit 30
bind_policy soft
idle_timelimit 3600
pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_lookup_policy yes
pam_password md5
nss_base_passwd ou=users,dc=######,dc=com?sub
nss_base_shadow ou=users,dc=######,dc=com?sub
nss_base_group ou=groups,dc=######,dc=com?sub
nss_base_netgroup ou=netgroup,dc=######,dc=com?sub
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/certs
tls_reqcert never
sudoers_base ou=sudoers,dc=#######,dc=com

还有我的 /etc/openldap/ldap.conf 文件:

URI ldaps://lhcsrvprddir02.######.com
BASE dc=######,dc=com
TLS_CACERTDIR /etc/openldap/certs
TLS_REQCERT NEVER

我尝试了几种与 /etc/pam.d/system-auth-ac 的组合,但无济于事。以下是我目前所拥有的:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 difok=1 minlen=11
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

在此之前,我运行了:

# authconfig --enableldap --enableldapauth --enableldaptls --disablenis --enablemkhomedir --updateall

答案1

花了一整天时间尝试弄清楚 ubuntu 上几乎相同的事情。

  1. “libnss-ldap”和“libpam-ldap”似乎与 TLS 配合得不好。我在一些论坛上碰到过这个问题(现在无法链接,但也在 SO 上看到过)。使用“libnss-ldapd“”libpam-ldapd

  2. 你必须有两个都-d 版本。我安装了 libnss-ldapd,但安装了 libpam-ldap(没有“-d”)。配置在 /etc/nslcd.conf 中,大部分是 /etc/ldap.conf 的副本。如果没有正确的 libpam-ldapd,我可以使用“getent passwd”成功填充 passwd,但使用 LDAP 用户的 ssh 登录会抛出错误

    1 月 6 日 23:51:17 服务器 sshd[11375]: pam_ldap: ldap_simple_bind 无法联系 LDAP 服务器 1 月 6 日 23:51:17 服务器 sshd[11375]: pam_ldap: 重新连接到 LDAP 服务器... 1 月 6 日 23:51:17 服务器 sshd[11375]: pam_ldap: ldap_simple_bind 无法联系 LDAP 服务器

  3. 安装 libpam-ldapd 解决了这个问题,然后只需根据我的需要(搜索查询、证书等)调整 /etc/nslcd.conf

相关内容