我有服务器 Alice 和服务器 Bob。爱丽丝被锁得很紧,需要保持这种状态。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 *”。这些脚本还留下了更多的审计线索,可以通过直接执行命令来绕过。]
“Alice 上的 Apache2(或其他一些安全的 CGI 接口)”远远超出您的需要,会增加复杂性,并大大扩展您的“威胁面”。Bob 上的一个简单 Perl 脚本,监视触发事件,并监听某个端口上的连接;加上 Alice 上的请求者 Perl 脚本,该脚本连接到 Bob 上的端口并读取事件会更容易。
我记得 Programming Perl 书(O'Reilly)中的例子有类似的东西。
“如果被恶意解雇,他们不会真正伤害任何东西”?真的吗?如果他们以被颠覆的爱丽丝全力以赴的速度反复发射怎么办?