SSSD 仅用于 Ubuntu 上的 LDAP 用户身份验证(仅绑定),uid 和组的本地数据库

SSSD 仅用于 Ubuntu 上的 LDAP 用户身份验证(仅绑定),uid 和组的本地数据库

到目前为止,我发现的每个使用 SSSD 进行 LDAP 身份验证的指南都向您展示了如何执行更多操作,而不仅仅是对用户进行身份验证,例如提供他们的 shell、组等。我不知道如何在不破坏事物的情况下删除这些功能,因为有几个活动部件,如 SSSD、PAM 和 NSS。

由于 LDAP 提供的信息有限(不是 AD),因此只能进行用户身份验证。甚至没有可用的 uid,因为通过 LDAP 提供的唯一 id 是格式一致的字母数字字符串(在 Linux 上不起作用)。基本上,如何在 Ubuntu 上配置 SSSD 以将 ldap 视为“影子”数据库,但从本地系统数据库(passwd、group)获取 uid、groups 和 shell。

目前,这是通过 libpam-ldap 实现的,但据我所知,还有更好的替代方案,如 libpam-ldapd 和 sssd,RHEL 已转向使用后者。如果我不得不猜测,它可以以与我们目前的做法类似的方式完成,即 nss 将首先检查本地数据库,如果用户没有影子文件条目,则检查 ldap。

总而言之,如果我可以使用 SSSD 或作为备份的 libpam-ldapd,则通过以下方式进行身份验证:
uid -> /etc/passwd
authenticate -> ldap
shell -> /etc/passwd
groups -> /etc/group

如果可以阻止用户在本地创建密码,这些密码最终会保存在 /etc/shadow 中,从而导致它在将来的登录尝试中完全检查 ldap,那就更好了。此外,所有本地和服务帐户都不会受到影响,并且可以使用简单的正则表达式确定 ldap 身份验证用户。我将非常感激任何关于如何处理这个问题的好建议。谢谢!

答案1

使用 id_provider=proxy 和 auth_provider=ldap 的方法绝对正确。你遇到了 bughttps://fedorahosted.org/sssd/ticket/2620我们只在 1.13 版本中修复了这个问题。这是一个非常简单的修复,让 Ubuntu 从上游挑选它。

答案2

控制每次搜索的数据源联系人的文件是 nsswitch.conf。您需要以下内容:

passwd:         compat
group:          compat
shadow:         compat sss

passwd 表示用户查找,group 表示组查找,shadow 表示身份验证信息。

只需正常设置 sssd,但对于用户查找它不会被使用。

身份验证源的顺序在pam文件中(下一个是 common-auth):

auth    [success=2 default=ignore]  pam_unix.so nullok_secure
auth    [success=1 default=ignore]  pam_sss.so use_first_pass
# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
[...]

因此,您必须确保本地 /etc/shadow 文件不包含在 LDAP 上进行身份验证的用户的有效密码。

相关内容