AD 环境中的 Linux 用户和权限管理

AD 环境中的 Linux 用户和权限管理

问题: 通过 Active Directory 内的组成员身份,集中管理用户对 Linux 服务器上的资源的访问需求(访问服务、主目录、加入本地用户组、文件系统权限等)。

背景: 我们有许多 Linux 服务器,一些是 CentOS,另一些是 Ubuntu,用于开发、网络托管、数据库托管、PXE 服务等。我们还有一个集中式 Active Directory 环境,所有用户在加入组织时都会添加到该环境中并提供组成员身份。

例子: Bob 和 Alice 加入组织后,他们被添加到 AD 中的相应组中,现在他们可以访问我们一台或多台 Linux 服务器上的 SSH 或 MySQL。一旦 Bob 离开,我们会将他从 AD 组中移除,他不再有权访问 Linux 服务器的 SSH、MySQL 等。

笔记: 如何处理这样的任务?Linux 中是否已有一组实用程序可用于此类操作?我们需要授予用户的访问权限将取决于他们在 Active Directory 中所属的用户组成员身份。例如,AD 开发组中的每个人都需要拥有 SSH 访问权限、MySQL 访问权限以及 Linux 版本服务器 1 和 2 上的主目录。AD 系统管理员组中的每个人都需要拥有所有 Linux 服务器的 SSH 访问权限和 SU 权限等。我查看了 serverfault 上的许多现有文章,但没有找到符合此处列出的需求的任何内容。

答案1

我知道有两种基本技巧——

方法一:微软的UNIX 的身份管理- 这允许您将 ActiveDirectory 公开为 NIS 服务器。
这几乎适用于任何 *NIX 版本(它们都支持 NIS),并且具有 NIS 的所有优点(和缺点)。它还受到 Microsoft 的正式支持,这意味着如果出现问题,您可以联系某人。

方法二: pam_ldap/nss_ldap(或类似的较新系统)。
这适用于任何能够针对 LDAP 目录进行身份验证的现代 *NIX 版本,并且现在可能默认包含在 Ubuntu 和 CentOS 中。它比方法一中的 NIS 类黑客技术更强大/更现代,但不太可能得到 Microsoft 的官方支持。

这两种技术都要求您分别将 AD 用户和组扩展为 POSIX 用户和组,以便您的 *NIX 系统具有可用的 POSIX UID 和 GID——Microsoft 在 Active Directory 中提供了此功能。
上述方法二的另一个好处是,您可以进一步扩展用户,以便您能够使用OpenSSH LDAP 公钥authorized_keys补丁,它允许您将 SSH 密钥存储在 LDAP 中,并消除了在网络上同步文件的任务。

答案2

从我在这里读到的内容来看,您想将所有其他典型的 Linux 内容以典型的 Linux 方式存储,并且只让组成员身份来自 AD?

您能找到的大多数示例都涉及从 AD/LDAP 中提取数据(可能是所有用户的 kerberos 身份验证和 LDAP),听起来您只想使用 LDAP 进行群组操作。如果我错了,您还需要做一些 PAM 操作。

根据具体版本(CentOS/RHEL 版本 5 和 6 之间有所变化),您可以使用“nss_ldap”或“sssd”。sssd 较新。很难说哪个更灵活,因为它们似乎以不同的方式灵活。sssd 似乎在配置特定部分以来自特定来源方面更灵活,而 nss_ldap 似乎在使用 LDAP 模式方面更灵活。您需要安装适当的软件包。、、、和sssd-client/或。(身份验证内容是 pam_ldap 或 sssd)sssd-toolssssdlibnss-ssslibnss-ldapnss_ldap

AD 中的组需要具有一些唯一的数字 ID。基本上,您需要通过 LDAP 从 AD 中提取组的完整定义,而不仅仅是组成员身份(整个组定义基本上是名称、唯一数字 ID 和成员身份)。使用 sssd 可以避免这种情况,并将其配置为在文件中查找组 ID 并从 LDAP 中查找组成员身份。真正正确的做法是使用适当的 UNIX 扩展来扩展 AD 模式,以便它具有 RFC2307 或 RFC2307bis 用户/组数据。

在 /etc/nsswitch.conf 中,您需要group: files ldapgroup: files sss。您可能希望将“文件”放在第二个而不是第一个。

nss_ldap(nsswitch.conf 中的“ldap”)通过 /etc/ldap.conf 配置,并记录在 nss_ldap 包中。您需要设置 uri、binddn、bindpw、nss_base_group、pam_member_attribute、nss_map_objectclass group、nss_map_attribute。

sssd 是通过 /etc/sssd/sssd.conf 配置的。重点关注 nss 和 id_provider 内容,而不是 pam 和 auth_provider 内容。阅读 sssd.conf、sssd-ldap 和 sssd 手册页。您需要配置一个“域”,并在其中配置一些“ldap_group”内容以及基本的 id_provider 和 ldap_uri 类型内容。

注意:我目前在 OpenLDAP 环境中运行 nss_ldap 和 sssd。我已经多年没有在 AD 环境中使用 nss_ldap/pam_ldap 了。

可能还值得研究一下 Samba 的功能。它通常用于文件/打印共享,但登录和域控制器功能可能可以根据您的需要进行配置。

答案3

看一眼Likewise Open(或现在称为 PowerBroker Identity Services Open Edition)。我之前在工作中使用过 Likewise open,与 Samba 和我们的开发人员配合得很好。

相关内容