在机器上禁用 su

在机器上禁用 su

有没有办法只允许指定用户使用 su(比如使用 visudo 进行 sudo)。

这样做的原因是我想为我的 root 帐户保留一个简单(弱)的密码,并且只有能够使用公共/私钥登录到机器的 su/sudo 帐户。

然后,所有其他帐户将无法以 root 或可以 su 的帐户身份进行 su。

答案1

是的,“wheel”组技巧在 Linux 上也可用:您只需为其配置 pam,然后只有 wheel 成员才能运行 su。

在 Debian 上,你必须取消注释/etc/pam.d/su

这绝对是在任何服务器上要做的第一件事,否则,任何网络服务器/黑客攻击都可能导致根黑客攻击。

答案2

无论对“su”有何控制,为 root 设置弱密码都是愚蠢的行为。即使用户“root”只能在受限制的机房的控制台上登录,我也不会允许用户“root”使用弱密码。

我建议完全禁用“su”,对所有内容都使用“sudo”。禁用是指以下任何一项:

  • 利用任何系统特定的方法来限制对“su”的访问(例如 BSD 的组“wheel”技巧,或 Linux 的等效技巧)。请注意,对此没有正式的标准;例如,POSIX 不要求必须使用“su”。
  • 去掉它 (rm -f /bin/su)。
  • 删除其执行权限位(chmod o-x /bin/suchmod go-x /bin/su)。
  • 删除其 setuid 权限位 ( chmod u-s /bin/su)。

通过删除或删除权限位禁用“su”的剩余问题是某些系统脚本可能依赖于su存在。没有特别干净的解决方案 - 但它们通常很少见,因为“su”提示输入密码,而提示在脚本环境中是不喜欢的。使用“su”的另一个时间是当“root”运行命令以成为另一个用户时;这可以通过删除 setuid 位来支持(用户 root 可以运行它,但其他人都无法有效地运行它)。您可以通过删除公共和可能的组执行权限来加强这一点(chmod u-s,go-rwx /bin/su)。

如果您没有使用特定于系统的方法之一,请务必小心;在投入生产之前进行测试。

答案3

如果您的系统使用 PAM,那么您可以su通过输入类似内容来正确禁用/etc/pam.d/su

# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so

# Disable all other uses of su
auth requisite  pam_deny.so

# [rest of file]

答案4

您可以编辑该/etc/sudoers文件来控制谁可以使用sudo以及他们可以做什么。如果您允许可以生成 shell(shell 转义)的程序,那么用户可以做任何事情。

请参阅man页面了解sudoers更多详细信息。

相关内容