我们已经有一些RHEL 5服务器使用Winbind / Kerberosjoin到AD中,整体运行良好。
我已经在PAM中指定了一个AD安全组来限制哪些域用户可以login。
auth requisite pam_succeed_if.so用户ingroup ad_groupdebugging
我还在sudoers中指定了相同的组,以便他们能够获得root权限。
%ad_group ALL =(ALL)ALL
这些按预期工作。
但是,我注意到,“su – ”将允许我成为不属于安全组的域用户。
假设jdoe不在“ad_group”中:
[kernelpanic @ server01〜] $ sudo su - jdoe [sudo]用户密码: 创build目录'/ home / jdoe'。 创build目录'/home/jdoe/.mozilla'。 创build目录'/home/jdoe/.mozilla/plugins'。 创build目录“/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):closures用户jdoe的会话
有没有办法将用户从“su – ”限制到不允许首先login框的域用户?
我相信/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
顺便说一句,如果您使用公钥进行身份validation, ssh也可能绕过PAM,因此使用session而不是auth更好。