首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用sudo非交互方式通过ssh发送关机命令

使用sudo非交互方式通过ssh发送关机命令
EN

Security用户
提问于 2018-09-19 18:07:03
回答 2查看 2.5K关注 0票数 1

使用iOS 12和新的Siri快捷方式应用程序,我一直在考虑如何在应用程序中利用SSH命令功能。对于那些不知道的人,该应用程序允许您向stdin发送bash文件或字符串,并将stdout作为纯文本文件返回,使用密码身份验证进行连接(不使用令牌身份验证)。

我想要做的是创建一个快捷方式,通过SSH命令操作在远程服务器上执行sudo shutdown [...]。因为操作是非交互式的,所以我不能交互地输入密码,而且我不愿意将密码作为明文放在操作输入字符串/stdin中。另一方面,我不想将sudo -nNOPASSWD用于shutdown命令,因为这是我不想处理的安全风险。我想可能需要一个随机字符串,以便在shutdown文件中启用NOPASSWD消息(也就是说,sudo shutdown -h now需要密码,但sudo shutdown -h now japos98vh92p3hoab982hfpa不需要密码),但我不知道这是否更安全,甚至可能。

总之,how可以使用非交互式的、非tty会话安全地在SSH上发送关闭命令吗?

EN

回答 2

Security用户

回答已采纳

发布于 2018-11-26 02:35:03

我想出了如何使用NOPASSWD和随机字符串来实现它。我将以下行添加到我的sudoers文件中:

代码语言:javascript
代码运行次数:0
运行
复制
matt  ALL=(ALL) NOPASSWD: /sbin/shutdown -h now japos98vh92p3hoab982hfpa
matt  ALL=(ALL) NOPASSWD: /sbin/reboot japos98vh92p3hoab982hfpa

这就像我想的那样。:)

票数 0
EN

Security用户

发布于 2018-09-19 22:29:58

这里有许多不同的问题,其中有些不是安全问题(例如,“如何在非交互式SSH会话上使用sudo”实际上是一个编程/超级用户问题),而其中一些问题只有您可以回答(所谓的“安全”)。

因此,我不直接回答你的问题,而是指出与你的两项建议有关的一些安全问题。

我不想将sudo -nNOPASSWD用于shutdown命令,因为这是我不想处理的安全风险。

您可能需要详细说明安全风险是什么,以及为什么不想处理它。显然,您可以使用Siri知道您的用户名和SSH密码,如果iOS devs要构建一种处理sudo提示的机制,或者攻击者要从Siri的存储中提取您的用户名/密码,就足以在该机器上执行任何管理操作。

sudo需要密码的原因是为了防止您在火狐中下载恶意软件,然后将自己变成根。从您在问题中描述的用例来看,ssh user@machine 'sudo cmd'是否要求您输入一次或两次密码,从安全性的角度看没有区别;攻击者要么知道您的密码,要么他们不知道。

sudo shutdown -h now japos98vh92p3hoab982hfpa

我不知道你将如何做到这一点(但是如果你能在评论中解释一下,我很乐意学习)。跳过它(以及您在进程中打开的任何潜在安全漏洞),我想这将成为第二个管理密码,因此攻击者需要知道您的帐户密码和这个“管理密码”才能执行shutdown。这个“管理密码”将出现在更多的地方:在Siri应用程序中的明文中,在用户的bash历史记录中,在运行过程树中(尝试ps -u),可能还有其他地方--比如sudo通过stdin获取密码,而不是通过命令行参数。

所以假设

  1. 攻击者已经进入您的帐户--或者是通过SSH,或者是因为您在firefox中下载了恶意软件并运行了它。
  2. 您以前运行过这个命令,它在您的bash历史中

在安全性方面,我不确定这与将shutdown设置为NOPASSWD有什么区别。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/194098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档