我需要帮助了解系统中具有传出 ssh 隧道的安全影响(风险是什么?可能是安全漏洞吗?)。
我使用以下命令将内部系统中的端口 8080 转发到远程主机中的 8080。我希望能够将前往 localhost:8080 的流量转发到端口 8080 的远程主机。
ssh -f -N -L 8080:<remote_ip>:8080 user@<bastion_host>
这是我正在做的事情的图表:
------------ --------- ------------------
| remote:8080| <--- | bastion | <----- |internal host:8080|
------------ --------- ------------------
这些是我的问题:
- 远程系统中的潜在攻击者是否有可能利用我现有的端口转发隧道来访问内部主机?
- 由于这是一个 TCP 连接,是否存在攻击者可以使用的返回到内部主机的套接字?
我只是想知道这是否可能,或者 ssh 中是否有保护措施来防止这种情况。
谢谢!
答案1
对的,这是可能的。例如,攻击者可能能够控制远程主机上的侦听端口 8080,并将数据返回到从内部主机连接的任何程序,从而导致该程序以可被利用的方式失败。对于任何网络连接都是如此。
请注意,仅当内部主机连接到 SSH 客户端公开的侦听端口时,网络连接才存在。远程主机上没有永久打开的端口通向内部主机。此外,堡垒主机上的 SSH 服务器不会暴露给远程主机。
不,没有返回的套接字。攻击者必须在代表内部主机打开的 TCP 会话上“搭便车”,并且(除了利用漏洞之外)这样的搭车将仅限于 TCP 会话的范围;它无法访问内部主机或堡垒主机上的其他端口。
您可以通过明确本地绑定地址来减少对本地配置变化的依赖:
ssh -f -N -L localhost:8080:<remote_ip>:8080 user@<bastion_host>
这确保内部主机上侦听的端口绑定到本地主机,因此只能由内部主机本身上运行的程序访问。 (该主机上的所有用户都可以访问它。)