【问题标题】:Any security risks with sudo password from standard input over ssh?来自标准输入的 sudo 密码是否存在安全风险?
【发布时间】:2015-03-25 08:10:09
【问题描述】:

我想在远程服务器上通过 ssh 执行 sudo 并通过标准输入提供密码。以下代码位于访问受限的安全服务器上的 shell 脚本中。事先询问密码,服务器使用所有相同的 sudo 密码。 someaction 肯定需要几秒钟才能执行。

这里是shell脚本摘录:

read -s -p "please enter your sudo password" PASSWORD
ssh user@host1 -t "echo '$PASSWORD' | sudo -S someaction"
ssh user@host2 -t "echo '$PASSWORD' | sudo -S someaction"

我的问题:在管道中使用 echo 是否安全?这里是否有任何可能发生的安全问题,例如在远程服务器上记录回显结果等?

也许有人有更好的建议?

注意:我知道其他工具可以做到这一点,比如 ansible 等。我不是在寻找另一个类似的工具,只是想知道以上述方式使用 ssh/echo/sudo 是否安全。

【问题讨论】:

  • 可能不在服务器上,但肯定在您执行这些命令的节点上。 $PASSWORD 是可见的,因为它是一个环境变量。
  • 好点,但是代码在脚本中,并且假设脚本没有被其他人操纵或调整。我会调整问题。谢谢。

标签: shell security ssh sudo


【解决方案1】:

是的!

只要命令正在运行,任何可以查看所有进程的人都可以通过运行ps aux | grep echo 来查看该密码:

root     [..] zsh -c echo topsecret | sudo -C action

您可以将sudo 配置为不为用户询问特定任务的密码,这肯定会提高此解决方案的安全性。

【讨论】:

  • 在 OPs 情况下,操作可能会有很大差异,因此配置 sudoers 不是一种选择。感谢关于 ps aux 的说明
  • 我无法在 OS X 上重现这个。它确实显示了sudo 命令,但没有显示echo 的管道。您使用的是什么操作系统?在其中,如果您以另一种方式阅读stdin,即sudo -S someaction <<< "$PASSWORD",您的方法仍然可以破解密码吗?
猜你喜欢
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多