我已经在一个小型测试集群上设置了一个 LDAP 服务器,但遇到了一些隐私问题。
第一个问题是,任何登录过集群中任何服务器的人都可以检索整个集群所有用户的所有用户名。这对于我的用例来说是不可接受的。
我以为我可以通过禁用匿名访问并要求使用用户名和密码来解决这个问题bindpw
。但是密码以明文形式保存在 ldap.conf 文件中,该文件需要可供所有人读取,否则id: cannot find name for user ID 22594
每次用户尝试登录集群中的任何服务器时,我都会收到错误。
我觉得我遗漏了一些东西,只是不知道是什么。有人能告诉我如何设置访问权限,以便用户可以登录并从 LDAP 中检索自己的详细信息,但不能检索集群中任何其他人的详细信息吗?
答案1
如果您使用sssd
中间件工具从 LDAP 获取用户并将其转换为 Unix 用户,则默认配置不允许用户获取所有用户列表。
另一方面,正如 Sven 所写的,除了向操作系统询问完整的用户列表之外,还有许多其他方法可以获取有关用户名的信息。
# this is a snippet from /etc/sssd/sssd.conf
# Example LDAP domain
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
ldap_schema = rfc2307
ldap_uri = ldap://ldap.example.org
ldap_search_base = dc=example,dc=org
ldap_tls_reqcert = demand
cache_credentials = true
# enumerate = False denies users' listing
enumerate = False