FreeBSD的LDAPauthentication,pam_ldap,不能绑定

我已经能够得到我的一些Linux服务器对我的LDAP目录服务器的用户进行身份validation,但是我在使用FreeBSD的nss_ldappam_ldap时遇到了一些麻烦。

从FreeBSD官方文档到这里: http : //www.freebsd.org/doc/en/articles/ldap-auth/client.html

我安装了2个软件包,并创build了一个configuration文件/usr/local/etc/ldap.conf,并且在同一目录nss_ldap.conf中创build了一个符号链接。 根据文档,他们都可以使用相同的configuration文件。 我保持它非常简单,直到我能得到它的工作:

的ldap.conf / nss_ldap.conf:

base dc=corp,dc=example,dc=org host 192.168.0.100 ldap_version 3 binddn cn=admin,dc=corp,dc=example,dc=org bindpw secret 

NSS的工作,据我所知。 “getent passwd”显示来自LDAP目录的信息以及本地信息。

现在我想validation,所以我添加一行到/etc/pam.d/sshd:

 # auth auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local #auth sufficient pam_krb5.so no_warn try_first_pass #auth sufficient pam_ssh.so no_warn try_first_pass auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass debug auth required pam_unix.so no_warn try_first_pass 

我重新启动SSH(不知道是否有必要),然后尝试使用本地不存在的LDAP用户(coryj)login。 它悄然失败,日志显示:

 Sep 9 13:13:54 freebsd-testbox sshd[12684]: pam_ldap: error trying to bind as user "uid=coryj,ou=Users,dc=corp,dc=example,dc=org" (Invalid credentials) 

为什么它试图绑定与我试图validation当我指定一个binddn / bindpw的用户? 我也试过rootbinddn与.secret文件具有相同的结果。 在Linux上的binddn似乎工作,在这里它似乎被忽略。

我知道我的ldap.conf和pam文件将需要更多的工作,只是试图说服这个事情绑定为pipe理员在此时进行身份validation。

简而言之,以下是LDAP身份validation的工作原理:

  1. 你作为joeblow SSH。 您的客户将该名称与您input的密码一起提供给服务器。
  2. 服务器开始走PAM列表说:“有没有人担保这个家伙?”,寻找一个OK或NO。 (PAM模块可以拒绝并允许)。 在你的情况下:
    1. 它检查pam_opie.so 。 你说这已经足够了,所以如果找不到就会继续。 我想这不是在这种情况下。
    2. 它检查pam_opieaccess.so 。 在这种情况下,这是必需的,所以pam_opieaccess.so必须说“是的,他没事”。 我想这个模块只是检查标记为“必须通过OPIEauthentication”的账户列表, joeblow不在。 它说OK。
    3. /usr/local/lib/pam_ldap.so轮到了。 这是你关心的部分。
      1. 首先使用binddnbindpw绑定到服务器,询问“嗨,我在这里有这个joeblow ,他的真名是什么? 服务器答案uid=joeblow,ou=Users,dc=corp,dc=example,dc=org
      2. pam_ldap.so断开连接,并尝试用uid=joeblow,ou=Users,dc=corp,dc=example,dc=org绑定您input的密码。 如果它可以绑定,你就进来了。如果没有,不。

所以你得到的错误意味着步骤2.3.2有失败,可能是因为密码不正确。 joeblow与服务器绑定可能存在其他问题,请查看LDAP服务器日志以获取更多详细信息。

binddnbindpw选项控制将用户名转换为LDAP专有名称的初始查找 – 通过绑定到LDAP目录来执行LDAP密码检查,如同用户尝试进行身份validation(如果您能够绑定,则检查成功) 。
有关详细信息,请参阅man pam_ldap

在你的情况下,我怀疑你为coryjinput的密码是错误的(也许他们的LDAP密码已损坏?),或coryj无法绑定到目录由于其他原因。 尝试绑定与ldapwhoamildapsearch ,看看你是否得到一个有用的错误消息。