通过 ADS 进行 Linux 身份验证 - 仅允许 PAM 中的特定组

通过 ADS 进行 Linux 身份验证 - 仅允许 PAM 中的特定组

我正在采用 samba / winbind / PAM 路由从我们的 Active Directory 域对我们的 Linux 服务器上的用户进行身份验证。

一切正常,但我想限制允许哪些 AD 组进行身份验证。Winbind / PAM 当前允许活动目录中任何已启用的用户帐户,而 pam_winbind.so 似乎不关注该参数。无论我在或文件require_membership_of=MYDOMAIN\\mygroup中设置它都没关系。/etc/pam.d/system-auth/etc/security/pam_winbind.conf

我如何强制 winbind 遵守该require_membership_of设置?使用带有最新软件包的 CentOS 5.5。

更新:事实证明,由于 root 是 root,因此 PAM 始终允许 root 通过身份验证。因此,只要该帐户存在,root 就会通过身份验证。任何其他帐户都受身份验证限制。

更新 2: require_membership_of似乎可以正常工作,除非请求用户具有 root uid。在这种情况下,无论设置如何,登录都会成功require_membership_of。对于任何其他帐户,这都不是问题。如何配置 PAM 以强制require_membership_of检查,即使当前用户是 root?

当前 PAM 配置如下:

auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so

account sufficient pam_winbind.so
account sufficient pam_localuser.so
account required pam_unix.so broken_shadow

password ..... (excluded for brevity)

session required pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel umask=0077
session required pam_limits.so
session required pam_unix.so

require_memebership_of当前已在文件中设置/etc/security/pam_winbind.conf,并且正在运行(除了上面概述的根情况)。

答案1

免责声明:您可能不应该尝试require_membership_of。是否存在无法登录的root情况?如果出现问题(例如网络中断),您可能会面临无法修复此机器的风险,除非重新启动进入单一模式。root

无论如何我都会回答。

TL;DR:如果您想要强制本地用户(包括 root)拥有成员资格,请将第一个替换sufficientrequisite


require_membership_ofpam_winbind.c仅用于pam_sm_chauthtok(参与管理组password)和pam_sm_authenticate(参与管理组auth)。

因此,如果用户不具有您所需的会员资格,则失败的 PAM 步骤如下所示:

auth [...] pam_winbind.so [...]

你确实有一个,但它被标记为sufficient

auth sufficient pam_winbind.so

因此,如果失败,PAM 将继续通过其链。下一站:

auth sufficient pam_unix.so nullok try_first_pass

这个会成功,如果getent passwd root返回一个有效的用户,getent shadow root(运行为root)返回一个有效的加密密码,并且用户输入的密码匹配。

我不会引导您完成其余的操作,但没有其他操作可以阻止root登录。

我将向您介绍pam.d(5)有关通用 PAM 配置机制pam_unix(8)和各种模块的更多信息。

答案2

通过 SID 引用该组可能会更幸运。

查找组的 SID:

wbinfo -n "mygroup"

然后使用 SID(根据 wbinfo 确定)设置 require_membership_of

require_membership_of=S-1-5-21-1757981276-1399067357-839522115-75638

答案3

在我们的设置中,这受到文件 /etc/security/pam_lwidentity.conf 中的以下行的限制:

require_membership_of = OURDOMAIN\domain^admins

答案4

您可以使用 AD 服务器的全局目录端口吗?使用 LDAP 协议,可能在端口 3268 上(或加密 LDAP 的 3269 上)。

我发现使用 ldap auth 和 nsswitch 模块比 winbind 更容易、更快捷、更可靠,而且(如上面 Handyman5 所建议的)使用 pam_access 并编辑 /etc/security/access.conf 来控制谁被允许登录。

相关内容