我们已将一些 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。这也会产生不良副作用,即限制打开root
shell(如评论中指出的那样),因此您可能需要仅将其应用于正确范围内的用户 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
。