sudo 不是非常不安全吗?

sudo 不是非常不安全吗?

似乎sudo在同一个终端中运行的任何程序都可以运行sudo它需要的任何命令。

证明:sudo ls在终端中执行。然后在同一终端中运行此程序(当然是编译过的):

#include <stdlib.h>

int main() {
    system("sudo whoami");
    return 0;
}

它会说root无需输入密码。

这难道不是一个很大的安全漏洞吗?Root 帐户和普通帐户是分开的,因此,除了其他问题之外,恶意软件无法以 root 身份运行。用户是否应该在sudo超时之前小心执行的操作?

答案1

sudo默认情况下,设置会在 15 分钟后重新提示输入密码,但你可以将其更改为每次使用 调用时都要求输入密码sudo。确切的选项是timestamp_timeout

时间戳超时

                   Number of minutes that can elapse before sudo will ask
                   for a passwd again.  The timeout may include a frac‐
                   tional component if minute granularity is insufficient,
                   for example 2.5.  The default is 15.  Set this to 0 to
                   always prompt for a password.  If set to a value less
                   than 0 the user's time stamp will never expire.  This
                   can be used to allow users to create or delete their
                   own time stamps via “sudo -v” and “sudo -k” respec‐
                   tively.

下面是我的 sudoers 文件的相关部分以及两次尝试sudo,如您所见,它重新提示:

$ sudo cat /etc/sudoers                                                        
[sudo] password for xieerqi: 
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    timestamp_timeout=0
Defaults    passwd_timeout=0
(the rest cut out)
================
xieerqi:
$ sudo echo hello
[sudo] password for xieerqi: 

另外一种选择是,您也可以使用pkexec,据我所知,它总是要求输入密码

答案2

sudo默认情况下,标准 Ubuntu 安装会sudo在短时间内保留访问缓存(默认超时时间为 15 分钟)。

为了使假设情况奏效,您需要提前运行sudo,然后sudo在该功能的缓存超时之前运行您指定的代码。在大多数情况下,这并不像您想象的那么“不安全”——许多强化服务器的超时时间要短得多,或者在我的服务器上,我实际上将其配置为sudo执行后立即超时,要求输入每个命令的密码sudo

为此,它sudo是“安全的”,因为有超时时间,以确保sudo一次使用后不能无限期地永久使用。

虽然有时看起来是这样,但这种方式并不“不安全”——当然,禁用凭证缓存可以解决这个问题,而且对于系统管理员来说,这很容易做到。

在默认安装中,默认的 15 分钟缓存似乎是“安全性”和“便利性”之间的平衡,因为我们不希望新用户每次都输入密码而头疼。话虽如此,在安全性很重要的地方,我们可以sudo通过更改配置来锁定。

总结:不,sudo一点也不不安全。这是默认缓存,假设在sudo访问缓存时被调用,这引发了你的想法,但当sudo配置了短超时或即时超时时,实际上并不不安全,这取决于系统管理员对这些系统是否更改默认设置的决定。

答案3

这难道不是一个很大的安全漏洞吗?

不。但是,确实为了方便而降低了安全性。你可以用 128 位密码保护系统,然后扔掉它,这样就没有人能访问系统了……安全吗?是的。方便吗?几乎不方便 ;-)

  • 让处于活动状态的系统处于无人看管的sudo状态。
  • 有一个解决方案:sudo -k取消当前超时。每次我离开系统时我都会执行此操作,我相信 15 分钟是有效的。

用户是否应该小心在 sudo 超时之前执行的操作?

是也不是。管理员每次使用“sudo”时都应该小心谨慎。不仅仅是在 15 分钟的时间范围内。所以你问题的第二部分并不重要 ;)

您是管理员。您有责任保证系统安全。

相关内容