无需使用 SSH 在远程主机上执行(特定)命令

无需使用 SSH 在远程主机上执行(特定)命令

我有服务器 Alice 和服务器 Bob。Alice 被严格锁定,并且需要保持这种状态。Bob 暴露在公共互联网上。有时我需要让 Bob 在 Alice 上运行脚本。(脚本的起因可能是来自外部用户或 Bob 上的 cron 作业。)

[我拥有这两台机器的完全访问权限]

这对于 SSH 来说很简单。然而,这意味着 Alice 的密钥现在存储在 Bob 身上。如果 Bob 受到攻击,密钥可能会暴露给 Alice。(他们非常担心,物理访问 Bob 可能会将密钥暴露给 Alice。例如,从 Bob 身上拔出驱动器并查看它。Alice 被锁在一个单独的房间里)

我并不想执行任何命令。Alice 上有几个特定的​​脚本需要我执行。(如果是恶意执行的,它们实际上不会造成任何伤害)

我目前的计划是在 Alice 上安装 Apache2(或其他安全 CGI 接口)并创建可以执行我想要的操作的 CGI 脚本。Bob 可以根据需要调用这些脚本。(我可能会为脚本添加安全性以验证这些脚本是否由 Bob 发送)

因此,为了在 Alice 上启动脚本,我只需从 Bob 向我运行的脚本执行一个 GET 操作。

所以,所有这些都表明:这有意义吗?我在这里忽略了什么明显的东西?

我在这里回答了我自己的问题。但我想确保我做得正确,以免弄得一团糟。

[更详细一点:脚本本身是无害的,但是拥有足够的权限来运行脚本中的命令可能会有问题。想想“rm oldlog”与“rm *”。脚本还留下了更多的审计线索,可以通过直接执行命令来绕过。]

答案1

“Alice 上的 Apache2(或其他安全 CGI 接口)”远远超出您的需要,会增加复杂性,并极大地扩展您的“威胁面”。Bob 上的简单 Perl 脚本,监视触发事件,并监听某个端口上的连接;再加上 Alice 上的请求者 Perl 脚本,连接到 Bob 上的端口并读取事件,会更容易。

我记得《编程 Perl》一书(O'Reilly)中的例子也有类似的东西。

“如果恶意发射,它们不会真正造成任何伤害”?真的吗?如果反复发射它们,速度以颠覆爱丽丝的全部力量所能达到的速度,会怎样?

相关内容