Cor*_*y J 3 freebsd ldap authentication pam
我已经能够让我的一些 linux 服务器根据我的 LDAP 目录服务器对用户进行身份验证,但是我在尝试使用 FreeBSD 中的 nss_ldap 和 pam_ldap 时遇到了一些麻烦。
来自此处的 FreeBSD 官方文档:http : //www.freebsd.org/doc/en/articles/ldap-auth/client.html
我安装了这两个包,并在同一目录 nss_ldap.conf 中创建了一个配置文件 /usr/local/etc/ldap.conf,以及该文件的符号链接。根据文档,他们都可以使用相同的配置文件。我保持它非常简单,直到我可以让它工作:
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
Run Code Online (Sandbox Code Playgroud)
据我所知,NSS 有效。“getent passwd”显示来自 LDAP 目录的信息以及本地内容。
现在我想进行身份验证,所以我在 /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
Run Code Online (Sandbox Code Playgroud)
我重新启动 ssh(不确定是否有必要),然后尝试使用本地不存在的 LDAP 用户(coryj)登录。它静默失败,日志显示:
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)
Run Code Online (Sandbox Code Playgroud)
当我指定一个 binddn/bindpw 时,为什么它试图与我尝试进行身份验证的用户绑定?我还尝试使用 .secret 文件进行 rootbinddn,结果相同。在 linux binddn 似乎工作,在这里它似乎被忽略。
我知道我的 ldap.conf 和 pam 文件需要做更多的工作,只是试图说服在此时进行身份验证时绑定为管理员。
简而言之,LDAP 身份验证的工作原理如下:
joeblow。您的客户端将该名称以及您的密码(您输入的)提供给服务器。pam_opie.so. 你已经说过这已经足够了,所以如果找不到它就会继续前进。我想这不是在这种情况下。pam_opieaccess.so. 在这种情况下,这是必需的,因此pam_opieaccess.so必须说“是的,他很好”。我想这个模块只是检查标记为“必须通过 OPIE 进行身份验证”的帐户列表,该列表joeblow未打开。它说好的。/usr/local/lib/pam_ldap.so轮到了。这是你关心的部分。
binddnand绑定到服务器bindpw,询问“嘿,我有这个joeblow,他的真名是什么?” 服务器回答uid=joeblow,ou=Users,dc=corp,dc=example,dc=org。pam_ldap.so断开连接,并尝试uid=joeblow,ou=Users,dc=corp,dc=example,dc=org使用您提供的密码进行绑定。如果它可以绑定,你就进去了。如果不能,那就不行。所以你得到的错误意味着步骤 2.3.2 失败了,可能是因为密码不正确。joeblow绑定到服务器可能存在其他问题,请查看 LDAP 服务器日志以获取更多详细信息。
| 归档时间: |
|
| 查看次数: |
3361 次 |
| 最近记录: |