我在 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
所有成功通过身份验证的用户都很有趣,因为这意味着组成员身份测试现在也被忽略了。(根据我上面的评论,你看起来并没有跳过它)这听起来更像是sufficient
对requisite
我而言。
您是否仔细检查过,确保您没有针对符合条件的用户进行测试sufficient pam_unix.so
?检查您的影子表,确保在您不注意的时候,没有人在您的测试池中添加用户的本地密码。
还可能auth
跳过了模块(想到了 SSH 密钥身份验证),在这种情况下,您的访问检查位于auth
而account
不是 ,这将造成问题。无论这是否是原因,我建议将它们移至 ,account
这样您的访问策略就不会出现漏洞。
auth
= 与身份验证相关的任何内容
account
= 与授权(访问检查)相关的任何内容