暂时禁用反向 SSH 隧道

暂时禁用反向 SSH 隧道

我正在设置位于 NAT 和防火墙后面的服务器。为了访问 ssh,我设置了reverse ssh tunneling另一台具有公共 IP 的服务器。

我有点担心它不够安全,这个隧道始终处于活动状态。

有没有办法阻止公共服务器上的隧道?我希望有一个选项:

  1. 连接到公共服务器 SSH
  2. 启用隧道端口
  3. 连接到隧道端口(连接到 NAT 后面的服务器)
  4. 做好我的工作
  5. 禁用隧道端口

那可能吗?

答案1

如果您的隧道正在监听公共服务器的公共接口,那么您可以根据需要在公共服务器防火墙上阻止/取消阻止该端口。当隧道未被阻止时,SSH 不会提供额外的安全性。


如果您的隧道正在监听公共服务器环回接口,那么您无需关闭并重新打开;只需保护公共路由器即可。如果涉及到安全,我会推荐这个解决方案(差不多,我将在下面解释)。您将访问您的隧道服务

  • 通过从公共服务器本身进行连接

或者

  • 通过另一个 SSH 隧道。

从第三台主机(例如您的私人笔记本电脑)建立此类隧道的(Linux)命令是:

ssh <user>@<public-server-IP> -L <portA>:127.0.0.1:<portB>

<portB>原始隧道正在监听的端口在哪里,<portA>是您选择的端口(至少选择它,1024因为较低的端口可能会受到限制)。

然后连接到127.0.0.1:<portA>。此连接是您的计算机本地连接。在您的公共服务器上也会有一个本地连接,因此127.0.0.1:<portB>整个安全性是 SSH 安全性,如果您正确使用它(好的密码/密钥等),它会非常强大。

我能想到的唯一缺陷是:其他有权访问您的公共服务器(如 SSH 访问)的用户可能会连接到127.0.0.1<portB>它。如果这也是一个问题,那么您应该修改隧道解决方案,如下所述。


不要创建通向你的(可能不安全的)服务的隧道,首先要建立到NAT服务器SSH的隧道。

在 NAT 服务器上你将执行以下操作:

ssh <user>@<public-server-IP> -R <public-server-IP>:<portB>:127.0.0.1:<portSSH>

<portSSH>您的 NAT 路由器上的 SSH 服务器监听的端口号是多少(通常为22)。(公共路由器上的 SSH 服务器配置可能会阻止您绑定到<public-server-IP>;在 Linux 中,sshd这是GatewayPorts一个选项,如果需要,请重新配置。)这样,您就可以在 上使用 NAT 服务器 SSH <public-server-IP>:<portB>

接下来从本地计算机到 NAT 服务器建立隧道:

ssh <user1>@<public-server-IP> -p <portB> -L <portA>:127.0.0.1:<portS>

<portS>NAT 服务器上的服务端口在哪里,您可以再次选择<portA>(至少再次选择1024)。请注意,您现在应该使用 NAT 服务器凭据。

然后127.0.0.1:<portA>从本地计算机连接到该服务。

改进之处在于:您的公共路由器上没有开放端口直接通向 NAT 路由器上的服务。如果您让服务仅在 NAT 路由器的环回接口上侦听,那么从其 LAN 也无法访问它。这使得解决方案非常安全(再次强调:使用良好的 SSH 密码/密钥等),即使使用完全开放且不关心凭据的服务也可以安全使用。

相关内容