Linux PAM pam_succeed_if.so

Linux PAM pam_succeed_if.so

我在 PAM 中指定了一个 AD 安全组,以限制哪些域用户可以登录。我还将 AD 用户的会话限制到此组。这可以防止登录用户对组外的 AD 用户执行“su -”。

Winbind uid 映射配置为使 AD 用户的 UID >= 10000000。

这些与下面的 PAM 配置一起按预期工作。

/etc/pam.d/系统身份验证

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so user ingroup AD_group debug
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_krb5.so use_first_pass
auth        sufficient    pam_winbind.so use_first_pass
auth        required      pam_deny.so

account     required      pam_access.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_krb5.so
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_krb5.so use_authtok
password    sufficient    pam_winbind.so use_authtok
password    required      pam_deny.so

session     [default=1 success=ignore] pam_succeed_if.so quiet uid >= 10000000
session     requisite     pam_succeed_if.so user ingroup AD_group debug
session     optional      pam_mkhomedir.so umask=0077 skel=/etc/skel
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so

现在,我想添加一条规则,以便 AD_group 之外的特定 AD 用户可以登录。我尝试在文件的第 3 行后添加以下行:

auth        requisite     pam_succeed_if.so user=AD_user_1 debug

但这导致所有 AD 用户都被允许登录。

任何见解都将不胜感激。

答案1

所有成功通过身份验证的用户都很有趣,因为这意味着组成员身份测试现在也被忽略了。(根据我上面的评论,你看起来并没有跳过它)这听起来更像是sufficientrequisite我而言。

您是否仔细检查过,确保您没有针对符合条件的用户进行测试sufficient pam_unix.so?检查您的影子表,确保在您不注意的时候,没有人在您的测试池中添加用户的本地密码。

还可能auth跳过了模块(想到了 SSH 密钥身份验证),在这种情况下,您的访问检查位于authaccount不是 ,这将造成问题。无论这是否是原因,我建议将它们移至 ,account这样您的访问策略就不会出现漏洞。

auth= 与身份验证相关的任何内容

account= 与授权(访问检查)相关的任何内容

相关内容