SSH 端口转发:简介

SSH (Secure Shell) 端口转发,也称为 SSH 隧道,是一种在计算机之间创建加密连接的方法。 它允许通过不安全的网络(例如 Internet)进行安全通信。 通过 SSH 端口转发,用户可以从他们的本地计算机安全地连接到远程网络上的另一台机器。 这种连接是通过加密的“隧道”建立的,该隧道在两台机器之间来回传递数据。

SSH 端口转发被系统管理员和个人用户等用于许多不同的场景。 为了 example,它可用于在家中或旅行时连接到公司网络或私人服务器; 绕过防火墙; 访问 NAT 路由器后面的资源; 等等。 在本文中,我们将更详细地讨论 SSH 端口转发的工作原理,并提供有关如何在不同上下文中使用它的示例。

如何在 Linux 中使用 SSH 命令连接到远程主机?

目录

什么是本地端口转发?

本地端口转发仅使用一个 IP 地址(源)在连接的每一端创建一个带有本地端口的加密隧道。 源机器通过其自己的 IP 地址向目标服务器发送请求来启动隧道,但在链接的两端设置了特定端口——因此所有流量都通过这些端口,而不是像正常的 HTTP/HTTPS 流量那样直接在主机之间传输在公共网络上做。

为了 example:如果您想通过不安全的 Wi-Fi 网络从家中访问公司的数据库,您可以使用本地端口转发,您可以在其中将笔记本电脑的 IP 地址设置为源,然后指定应在每个端点打开哪些端口——比如 3306 MySQL 或 MongoDB 的 27017 等——在建立加密隧道之前,所有通信都在该隧道内安全地进行,远离潜伏在公共网络上的任何潜在恶意行为者。

使用 OpenSSH 进行本地端口转发

OpenSSH 是一种流行的终端仿真程序,常用于安全 shell 连接到类 UNIX 操作系统,包括 macOS X、Linux、BSD、Solaris 等。要使用 OpenSSH 建立本地转发,只需键入

ssh -L [local_port]:[remote_host]:[remote_port] [user]@[server] 

一旦成功提交完整的命令,然后按回车键。 这将配置在本地运行的 ssh 客户端,以便当有人通过指定的本地主机连接时,他们实际上将通过充当代理的远程机器进行连接,从而允许他们穿越存在的任何防火墙,而无需自己直接访问。

如何使用远程端口转发

远程端口转发允许您从组织内部网络外部远程连接到组织内部网络中的另一个资源,而无需您自己直接访问,方法是沿着所采用的路由设置跨多个跃点的隧道。

本质上,这里发生的不是第一次用户希望启动会话时启动出站连接; 不是打开一个新的 ssh 实例,而是每个跃点进程从最近的外部世界的网关节点开始,然后被重定向,直到最终到达所需的目标服务器,并在初始设置阶段提供安全的身份验证凭据。

为了完成这个任务,

ssh -R [remote_port]:[destination_host]:[destination_port] [user]@[gateway]

这建立了一个反向隧道,这意味着任何沿着指定路径发送的传入方向都将被转发到上面提到的最终目标端点,而无需在到达那里时再次进行显式身份验证。

使用 OpenSSH 进行远程端口转发

OpenSSH 还通过使用与上述相同的语法(仅以相反的顺序)提供对远程端口转发的支持。 这意味着您首先指定远程服务器上的主机和端口,然后是应该使用什么本地主机从您自己的机器安全地连接到它。 为了 example,

ssh -R [remote_port]:[destination_host]:[destination_port] [user]@[gateway]

如何使用动态端口转发

动态端口转发是一种使用 SSH 在两台计算机之间建立加密隧道的方法,只有一个 IP 地址(源)。 它的工作原理类似于本地和远程端口转发,但不是通过两端的指定端口直接连接,而是建立动态代理设置,以便来回发送的任何数据都将通过加密通道,无论其目的地或来源如何。

这可以通过命令行实用程序(例如 OpenSSH)使用以下命令来完成:

ssh -D [local_port] [user]@[server]

如果成功,您将拥有一个可用的安全连接,其中所有流量都沿着路径路由,除了最初提供的安全身份验证凭据外,不会留下任何可追踪的信息。

使用 OpenSSH 进行动态端口转发

OpenSSH 支持动态端口转发,允许用户选择他们想要使用哪种类型的协议来建立链接,即 SOCKS4、SOCKS5 和 HTTP-Proxy 协议。 此语法类似于前面的示例,但是我们添加了一个额外的参数来指定所使用的协议,例如:

ssh -D 8080 socks4/5 user@server

一旦连接成功,本地运行的任何应用程序都可以通过新创建的隧道发出请求,避免潜伏在那里等待拦截它们的任何潜在危险。

为企业和公司开后门

在企业网络中打开后门允许系统管理员访问资源,而无需自己直接进行物理访问。 这可能包括远程对服务器进行故障排除或向第三方提供临时访问权限,同时确保安全措施在整个过程中保持不变——防止恶意行为者进入网络边界墙而不被发现! 要有效地做到这一点,需要在尝试连接之前仔细配置服务器端,否则即使客户端设置正确,尝试也可能因身份验证失败而失败。

服务器端配置

为后门访问配置服务器需要更改防火墙规则、面向外部的接口以及其他内部路由表,具体取决于所访问的服务类型,即基于 Web 的应用程序需要与文件共享服务等不同的方法。此外,每个应用程序都需要开放的特定端口会话类型必须适当设置,以确保只有合法连接允许通过不受监控的连接,完全阻止。

如何防止 SSH 端口转发绕过防火墙?

  • 正确配置的防火墙应该通过绕过传统的身份验证方法(如用户名密码令牌等)来提供高级保护,防止未经授权的尝试访问公司网络。
  • 部署新防火墙基础架构时的最佳做法始终是定期检查现有配置、定期审核日志、检测跨网络边界发生的异常行为并进一步调查。
  • SSH 端口转发可以配置为对所有通过的流量使用加密隧道。 这将确保即使有人设法进入防火墙,仍然需要在能够查看内容之前解密数据,这应该可以减轻与此类尝试相关的任何潜在风险。
  • 定期审查和更新防火墙规则和安全设置,以确保关闭所有端口,明确允许用于合法业务操作的端口除外。
  • 实施入侵检测和预防系统以检测和响应网络上的可疑​​活动。
  • 部署 Web 应用程序防火墙以保护 Web 应用程序和服务免受恶意行为者的侵害。
  • 监控日志和警报以识别任何可疑或恶意活动。
  • 使用强密码和双因素身份验证来保护 SSH 会话并防止端口转发规避。

SSH的解决方案

防止 SSH 端口转发的最有效方法是使用强身份验证方法,例如公钥加密和双因素身份验证。 这确保只有授权用户才能访问他们需要的资源,同时还能阻止可能试图绕过防火墙或获得未经授权访问的恶意行为者。

此外,设置带有自己防火墙的单独网关服务器有助于确保所有传入连接在被允许进入内部网络之前必须首先进行身份验证——从而为您组织的敏感数据提供额外的安全层。

概括

在本文中,我们讨论了 SSH 端口转发的用途、工作原理,以及一些不同类型的示例,包括使用 OpenSSH 的本地、远程和动态端口转发。 我们还谈到了如何最好地防止绕过现有防火墙,并讨论了进一步利用公钥加密双因素身份验证等安全连接的方法。突破外围防御仍然需要在进入内部网络之前对自己进行身份验证。