我有一个由多个用户远程登录的无头服务器。其他用户都不在 sudoers 文件中,因此他们无法通过sudo
. 但是,由于权限su
是-rwsr-xr-x
没有什么可以阻止他们尝试暴力破解root密码。
有人可能会争辩说,如果用户知道 root 密码,他们无论如何都可以破坏系统,但我认为情况并非如此。OpenSSH 配置了PermitRootLogin no
和PasswordAuthentication no
,其他用户都没有对服务器的物理访问权限。据我所知,世界执行权限/usr/bin/su
是用户试图在我的服务器上获得 root 的唯一途径。
更让我感到困惑的是,它甚至似乎没有用。它允许我su
直接运行而不需要 do sudo su
,但这并不是什么不便。
我忽略了什么吗?su
世界是否出于历史原因对那里执行许可?删除我还没有遇到的权限有什么缺点吗?
ilkkachu 的回答中缺少的一点是,提升到 root 只是
su
. su 的一般用途是在另一个用户的登录帐户下打开一个新的 shell。该其他用户可能是root
(也许最常见的是),但su
可以用来假设本地系统可以验证的任何身份。例如,如果我以 user 身份登录
jim
,并且我想调查mike
已报告但我无法重现的问题,我可能会尝试以 user 身份登录mike
,然后运行给他带来麻烦的命令。使用
-l
选项su
会使其模拟完整登录(按man
页面)。但是,以上需要知道
mike
's 的密码。如果我有sudo
访问权限,mike
即使没有他的密码,我也可以登录。总之,
su
可执行文件的权限如您所见的原因是因为su
它是一个通用工具,可供系统上的所有用户使用。从历史上看(在非 GNU unices 上),它不是,或者至少它手动检查你是否在一个名为“wheel”的组中允许
su
. 由于当时 RMS 关于访问控制的意识形态,GNU 版本su
没有重现此功能:您可以通过谷歌搜索“wheel group rms”或类似内容找到更多关于此问题的信息。
是的。假设您通常使用 Linux 系统,该
pam_unix.so
模块确实会将失败的身份验证尝试延迟约 2 秒,但我认为没有什么可以阻止同时尝试。当然会记录失败的尝试:
如果您有任何类型的系统来监控它们,那么暴力破解密码应该在日志中显着显示。如果您有不受信任的本地用户,也许您应该这样做。不受信任的本地用户也可以尝试使用任何仅限本地的权限提升漏洞,而且它们比远程权限提升更常见。
当然它很有用
root
,如果您知道密码,它可以让您提升自己。sudo su
有点多余。没有必要使用两个旨在让您以另一个用户身份运行程序的程序,一个就足够了。如果你想运行 shell,只需使用sudo -i
或sudo -s
(或等)。sudo /bin/bash
看上面。好吧,并非所有系统都有
sudo
替代方案,我不确定您是否认为这是历史性的。不是真的,据我所知没有。我认为某些系统已
su
设置为只有特定组(“wheel
”)的成员才能运行它。sudo
如果您喜欢 (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
) ,您也可以这样做。或者,如果您不需要它们,您可以删除其中一个或两个程序。虽然在 Debian 上,
su
随login
包一起提供,所以将包作为一个整体删除可能不是一个好主意。(而且像这样配对login
和在一起确实有点历史意义。)su
您已经有了一些很好的答案,但是他们没有解决您帖子的一部分。
这是一个危险的假设。如果您为 root 设置了一个好的密码,那么在大多数情况下,成功的权限提升更有可能是由于利用了内核或 setuid 二进制文件中的错误(您当然也可以删除 setuid来自那些,但
passwd
它是 setuid,如果您想要高安全性,您还应该向您的用户提供它,并拒绝他们更改密码的选项与此不兼容)。su 需要是全局可执行的,以便每个人都可以运行它。在许多系统中,它可用于通过提供密码来更改为另一个用户。
如果您担心有人暴力破解 root 密码,您可以禁用它。(使哈希无效,因此没有给定的密码可以匹配它)
我不知道共识,但我认为能够直接以 root 身份登录本身就是一个安全问题。
其他答案是正确的,说“su”允许您登录 root 以外的帐户。
关于“sudo su”的一个注释。这实际上允许您在不知道 root 密码的情况下登录 root 帐户。您必须知道运行 sudo 的帐户的密码,并且该帐户位于 sudoers 文件中。