通过ADS进行Linux身份validation – 只允许PAM中的特定组

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

一切正常,但我想限制哪些AD组被允许进行身份validation。 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和最新的软件包。

更新:事实certificate,PAM总是允许root通过auth,凭借它的根。 所以只要帐号存在,root就会通过validation。 任何其他帐户都受到身份validation约束。

更新2: require_membership_of似乎正在工作,除了请求用户具有根用户标识符时。 在这种情况下,不piperequire_membership_of设置如何,login都会成功。 这对任何其他帐户都不是问题。 即使当前用户是root用户,如何configurationPAM来强制进行require_membership_of检查?

目前的PAMconfiguration如下:

 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文件中设置的,并且正在工作(上面概述的根情况除外)。

免责声明:您可能不应该为root尝试require_membership_of 。 有没有一种情况下root不能login? 如果出现问题(如networking故障),则无法在无需重启成单一模式的情况下维修本机。

我会回答。

TL; DR:如果你想强制执行成员,即使是本地用户(包括root用户),也可以将第一个用户replace成requisite


require_membership_of仅在pam_sm_chauthtok (参与pipe理组password )和pam_sm_authenticate (涉及pipe理组auth )中的pam_winbind.c中使用。

因此,如果用户没有所需的成员资格,那么将失败的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身份运行)返回一个有效的encryption密码,并且用户input的密码匹配。

其余的我不会引导你,但是没有别的东西会阻止rootlogin。

我会参考pam.d(5)来获得关于PAMconfiguration机制的更多信息, pam_unix(8) &co用于各种模块。

你可能有更好的运气参照SID组。

查找一个组的SID:

 wbinfo -n "mygroup" 

然后使用SID(由wbinfo确定)设置require_membership_of,

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

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

 require_membership_of = OURDOMAIN\domain^admins 

在这种情况下,我欺骗并使用pam_access,而不是将我的头撞到pam_winbind。

你可以使用AD服务器的全局编录端口吗? 说的是LDAP协议,可能在端口3268(或3269用于encryption的ldaps)。

我发现使用ldap auth&nsswitch模块比winbind更容易,更快,更可靠,并且(如上面的Handyman5所示),使用pam_access并编辑/etc/security/access.conf来控制允许谁login。