在 Winbind/Kerberos Linux AD 集成中将 su 限制为域用户

在 Winbind/Kerberos Linux AD 集成中将 su 限制为域用户

我们已将一些 RHEL 5 服务器使用 Winbind/Kerberos 连接到 AD,总体而言运行良好。

我已经在 PAM 中指定了一个 AD 安全组来限制哪些域用户可以登录。

auth requisite pam_succeed_if.so 用户组 ad_group 调试

我还在 sudoers 中指定了相同的组,以便他们可以获得 root 访问权限。

%ad_group 全部=(全部) 全部

这些工作符合预期。

但是,我注意到“su -”将允许我成为不属于安全组的域用户。

假设 jdoe 不在“ad_group”中:

[kernelpanic@server01 ~]$ sudo su - jdoe
[sudo] 用户密码:
创建目录‘/home/jdoe’。
创建目录“/home/jdoe/.mozilla”。
创建目录“/home/jdoe/.mozilla/plugins”。
创建目录“/home/jdoe/.mozilla/extensions”。
[jdoe@server01 ~]$

这是 /var/log/secure 输出:

10 月 25 日 09:42:42 server01 su:pam_unix(su-l:session):kernelpanic(uid=0)为用户 jdoe 打开了会话
10 月 25 日 09:43:53 server01 su:pam_unix(su-l:session):用户 jdoe 的会话已关闭

有没有办法将用户从“su -”限制为首先不允许登录该框的域用户?

答案1

我相信第一行看起来/etc/pam.d/su像这样:

auth            sufficient      pam_rootok.so

换句话说,当您尝试授权您成为 jdoe 时,一切看起来都正常。

您可以做的是将您的pam_succeed_if行添加到/etc/pam.d/su,或者更好的是,将条目添加到/etc/pam.d/system-auth,但对其进行修改,使其auth变成session如下形式:

session requisite pam_succeed_if.so user ingroup ad_group debug

即使在您描述的情况下,也会触发此操作,并且不会让非 ad_group 的用户打开 shell。这也会产生不良副作用,即限制打开rootshell(如评论中指出的那样),因此您可能需要仅将其应用于正确范围内的用户 ID:

session [default=1 success=ignore] pam_succeed_if.so quiet uid >= 1000
session requisite pam_succeed_if.so user ingroup ad_group debug

顺便说一句,ssh如果您使用公钥进行身份验证,也可能会绕过 PAM,因此最好使用session而不是auth

相关内容