我真的很想弄清楚如何允许用户和/或组访问连接到 OpenLDAP 服务器的某些客户端计算机。无论用户是坐在客户端计算机前面还是通过 SSH 进入,我都想这样做。最后一件事,如果可能的话,我希望能够从 OpenLDAP 服务器而不是客户端管理这一切。
谢谢,亚历克斯
答案1
我认为如果不更改客户端配置,您将无法做到这一点。但是,在客户端计算机全部设置完成后,您将能够从 LDAP 服务器进行管理。
实现此目的的一种方法是:
编写一个
access_ldap.conf
包含以下内容的文件,并将其放入/etc/security
:+:root:ALL -:ALL EXCEPT (the_group_that_has_access):ALL
access.conf
中有一个文件/etc/security/
,但该文件通常包含在 中的某些系统规则集中/etc/pam.d
,因此编辑该文件会更加困难,因为您必须确保系统守护程序可以“登录”,因此,如果不为系统用户编写规则,您就无法锁定除单个组之外的所有人。拥有单独的文件会减少麻烦。请注意,组名周围的括号表示该名称实际上是一个组名(
pam_access.so
如果找不到用户,则查找组,因此,括号可能被称为多余的,但这是指代组的“正确”方式)。此外,第一行在任何情况下都授予 root 访问权限。您可能还想添加其他用户/组,因为此文件中未列出的任何人都将被第二行锁定。
您希望
login
和ssh
支持这个新配置,但其他服务应按原样工作。为了实现这一点,请编辑login
和sshd
文件以/etc/pam.d
包含以下行:account required pam_access.so accessfile=/etc/security/access_ldap.conf
这样,只有指定组的成员才能通过 ssh 或登录访问计算机。组成员身份以及对计算机的访问权限可以在 LDAP 中进行管理。
答案2
Æ-DIR
这几乎就是我自己的解决方案设计的用例,完全基于免费软件:
主要的系统/服务是服务组的成员,您可以定义哪些用户组有权限登录服务组。
这是通过 OpenLDAP ACL 实现的间接方法,它授予用户和组的读取权限,尤其是登录所需的用户属性。为了避免常见的误解:您只需维护 LDAP 条目即可更改访问权限;OpenLDAP ACL 是静态的。
老实说,您必须在 LDAP 客户端中配置一件事:系统凭据,绑定 DN 和密码或 TLS 客户端证书。
理解概念和建模数据以满足您的访问控制要求需要花费一些时间。而且可以肯定的是,它不会满足您对访问控制的所有愿望。
PS:我想听听那些拥有大型设置并基于以下方式进行主机访问控制的人网络组因为我想知道是否有可能编写一个自动迁移工具来转换网络组映射到 Æ-DIR服务组。
免费IPA
免费IPA有类似的目标,他们实施所谓的 HBAC 政策和其他一些政策来实现这一目标。据我了解,您必须使用ssd 的使用 IPA 后端来利用完整的功能集。ssd 的是策略执行点。
抱歉,我对他们的在线文档不太熟悉,因此除了FreeIPA 文档概述。