我正在我无法控制的环境中部署演示 Ubuntu 10.04 LTS 服务器,并且希望有一种简单安全的方法来管理这些机器,而不必让目标防火墙转发端口 22 以进行 SSH 访问。
我找到了一些使用反向端口执行此操作的指南(例如howtoforge 反向 ssh 隧道指南),但我担心自动打开隧道所需的存储的 ssh 凭据的安全性。
如果机器被入侵(主要担心的是机器的物理访问不受我的控制)我该如何阻止某人使用存储的凭据在反向 ssh 隧道目标机器中四处探索?
是否可以确保此设置的安全,或者您是否建议采用其他方法?
答案1
您可以使用autossh
维护一个反向隧道,以便您使用 SSH 登录。隧道应使用具有限制的 SSH 密钥创建,~/.authorized_keys
以便它唯一能做的事情就是设置隧道(有关man authorized_keys
详细信息,请参阅)。以下内容仅允许从 1.2.3.4 开始使用此密钥,而不允许用它执行任何命令。
from="1.2.3.4",command="/bin/false",no-agent-forwarding,no-pty,no-X11-forwarding ssh-rsa AAAA...
答案2
我会使用 OpenVPN,因为我知道它能做什么,我知道它能做我需要的事情,而且很容易保护——正如你正确指出的那样,默认情况下,SSH 凭证会将你带入机器本身,这不是一个好主意。我知道较新版本的 SSH 提供了某种通用 VPN 功能,毫无疑问,有很多很好的方法可以防止它做你不想做的事情,但我自己不会冒这个险。按照你所了解的去做。
答案3
在防火墙上打个洞或在旁路设置代理。是的,您可以有反向 ssh 连接 - 但这只是一个隧道套接字连接 - 您仍然需要在其上运行一些协议(是的,您可以在 ssh 连接上运行 ssh,或者您甚至可以为 vpn 连接运行 pppd)- 当一端断开时尝试维护/恢复连接将非常难以自动化。它只有在您围绕它构建大量代码时才会起作用 - 此时您可能会破坏安全性。这真的不值得付出努力。