我们有一个内部局域网(未连接到互联网,所有内部 IP 地址,在防火墙后面,没有到外部的路由),我们还有一台机器位于我们的局域网边缘(两个网卡,一个在内部局域网上,一个在可以“看到”互联网的公共局域网上)。
我需要查看公共局域网上的机器,从内部局域网,我可以通过 SSH 连接到边缘机器并通过隧道传输我的流量,以查看公共网络机器上我需要的服务。
我想知道这是否会带来任何额外的安全隐患?
我们有一个内部局域网(未连接到互联网,所有内部 IP 地址,在防火墙后面,没有到外部的路由),我们还有一台机器位于我们的局域网边缘(两个网卡,一个在内部局域网上,一个在可以“看到”互联网的公共局域网上)。
我需要查看公共局域网上的机器,从内部局域网,我可以通过 SSH 连接到边缘机器并通过隧道传输我的流量,以查看公共网络机器上我需要的服务。
我想知道这是否会带来任何额外的安全隐患?
为了能够运行 SSH 隧道,您必须在“边缘”机器上拥有一个帐户。如果不对该机器提供完整的 shell 访问权限,就很难允许隧道。这是一个普通用户的外壳。从理论上讲,类 Unix 系统对本地用户执行严格的安全规则,因此向用户授予 shell 访问权限并不是什么大问题。在实践中,如果您的用户是潜在的攻击者,这会增加攻击面:您必须担心此类攻击者可以从该机器上运行的 shell 对边缘机器做什么,而不是“从网络”访问机器。
此外,如果来自内部 LAN 的人可以通过 SSH 连接到边缘机器,他们一定也会从外部(即从他们的家庭机器)尝试它。您可能希望也可能不希望这样做。
这里的共同主题是 SSH 具有一种全有或全无的安全模型:您是否授予访问权限,但实施受限访问并不容易(“您可以在这台机器上通过 SSH 连接,但只能这个或那个任务”)。要进行受限访问,您必须将用户 shell(在 Unix 级别)设置为执行过滤工作的特定可执行文件,例如rssh,但我认为这不是一个真正强大的解决方案。
如果您的隧道将流量从内部转发到公众,那么我看不到任何其他问题。例如,将边缘机器私有端的 8080 端口转发到公共端的内网 Web 服务器。(尽管如果您需要的所有服务都可以通过 SOCKS 代理,那么ssh -D 8080 user@edge-machine
每次您需要隧道时就这样做可能会更容易。)
但是,如果您有在边缘盒的公共端侦听并将流量转发到内部 LAN 的隧道,那么您已经在防火墙上打了一个洞。例如,如果您将边缘机器上的 8080 转发到某个内部机器上的 80,那么任何可以看到边缘机器的人也可以看到您内部机器上的 Web 服务器。