/etc/sudoers 中的 sudo 命令限制是否安全?

/etc/sudoers 中的 sudo 命令限制是否安全?

我尝试限制备份守护程序的用户(需要对客户端计算机具有 root 访问权限),以便它只能使用它所需的一个命令。因此,在 /etc/sudoers 中,我使用

daemonuser  ALL=NOPASSWD: /backup/command --with --args *

我从同事那里听说该方法不再安全,但我找不到任何详细信息。我需要注意哪些安全问题?

答案1

对于你来说,这可能是毫无疑问的,但为了完整起见:

您必须确保 /backup/command 不会受到 shell 转义和类似字符的影响。例如,一个常见的陷阱是文件名中存在 '\n',这允许将任意行插入 xargs 输入和类似内容。许多备份解决方案没有采取高度预防措施来保护其输入,因此您可能需要检查备份脚本的正确性。

答案2

您授予守护进程用户访问权限,而无需密码。您应确保除 root 之外,没有人具有对该脚本的写访问权限。除此之外,它应该相当安全。您可以随时向同事询问“听到”的参考。

答案3

据我所知,参数列表的唯一问题是,当人们尝试将允许的命令与尝试使用排除某些参数相结合时!。例如,允许某人以rmroot 身份执行但不允许他们擦除整个系统,可以使用如下命令列表进行尝试

/bin/rm, !/bin/rm -rf /

但这并不能真正解决问题,因为用户仍然可以在根目录中运行rm -fr /或运行,rm -r -f /等等。rm -rf .rm -rf ../../../../../../..

答案4

正常规则是你必须证明你做的事情是安全的。
我可以告诉你,你的问题中提到的是“安全的”,但有两个主要注意事项:

  1. 你已经设置了NOPASSWD,所以系统永远不会询问守护进程用户用户用于执行该命令的密码。由于这是针对(可能是非交互式的)守护进程的,所以对我来说这似乎是合理的。
    (您还必须专门设置NOPASSWD,并且大概您知道自己在做什么……)

  2. 如果您安装的 sudo 版本存在安全漏洞,您就会受到该漏洞的影响。
    请检查您安装的 sudo 版本,并确保它是最新的。


您的澄清评论使您同事的断言听起来像是“我有一个朋友,他的朋友听说过 中的一个安全漏洞foo,但我们不知道它是什么”——安全是一件需要非常认真对待的事情,但如果没有已知的漏洞,我们可能会谈论有人根据 5 年前关于 中的安全漏洞的信息采取行动sudo并挥舞手臂……

相关内容