在防火墙后部署的主机上进行SSH隧道连接

47次阅读
没有评论

问题描述

正在进行一个部署项目,需要将监控工业设备的Ubuntu服务器放置在各个站点和防火墙后面,而这些防火墙是无法控制的。用户需要维护对这些服务器的SSH访问权限,以进行维护和更新,但是他对如何安全地实现这一点感到困惑。
由于无法进行端口转发和创建防火墙针孔,用户不知道该怎么办。是否有一种系统可以让我从外部世界打开SSH隧道到这些机器?是否有更好的方法来实现这一点?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

假设监控主机能够进行出站连接,您可以通过在其他地方设置一个堡垒主机来解决这个问题。当然,在进行此操作之前,请确保与客户进行了充分的沟通。
要做到这一点,需要在您控制的某个地方设置一个服务器。这可以是具有大量流量限制的VPS,也可以是您控制的物理服务器或其他设备。为其分配一个稳定的DNS名称,可能是每个客户一个,将其映射到堡垒主机的IP地址上。请注意,您可能需要在将来重新编号该主机,而且可能无法访问监控主机。
现在,配置监控主机(您希望最终连接到的主机)以连接到堡垒主机以建立SSH隧道。这可能包括在监控主机上创建一个非特权用户帐户来运行隧道SSH进程,并适当保护该用户帐户。(请记住:此帐户不用于登录;它只运行本地的非交互式SSH客户端进程,并拥有该隧道。)还在堡垒主机上设置一个非特权帐户,该帐户只具有足够的权限以SSH登录(而不是到shell),并建立到监控主机的SSH隧道。
完成上述步骤后,您可以在监控主机上设置类似于autossh的工具,以维持与堡垒主机的连接,以保持隧道的活动。在堡垒主机上添加一些良好的日志记录,因为在监控主机上,该连接几乎肯定看起来像是从本地发起的。
当您需要连接到监控主机时,首先连接到堡垒主机,设置一个SSH隧道到堡垒主机的本地端口,该端口转发到监控主机;然后连接到映射到该隧道的本地端口。这将通过堡垒主机隧道化SSH流量,允许您的系统与最终目标主机进行通信,而无需目标主机能够接受传入连接。

方案2

如果管理防火墙主机和基础设施的组织可以为您在其设备上创建一个用户,您可以使用“跳板主机”的优势。假设您可以访问主机A,并且主机A与主机B具有连接性。那么您可以使用以下ssh配置进行操作。

Host A
  Username username
  Hostname bloody.enterprise.example
Host B
  ProxyJump A

如果这不是一个选项,您可以考虑设置VPN。

方案3

官方建议,您应该要求防火墙管理员在每个路由器上为您创建一个VPN访问权限,可选择要求他们只能访问您在其防火墙后面的服务器。
这将为您留下一个用户帐户来管理您的更新,同时您的责任限制在法律上:如果发生泄漏或安全问题,您只能通过VPN访问该服务器的事实限制了您的责任,并且他们知道您有访问权限。
通常,工业网络中的互联网使用受限,这就是为什么对我来说这是最好的解决方案,因为要求您的设备能够与互联网通信(反向方式)通常可能会成为一个问题。

正文完