为什么 ssh 提供不安全的离主机转发?

为什么 ssh 提供不安全的离主机转发?

在下面的本地端口转发调用中,

[me@TunnelBeginHost]$ ssh -L TunnelBeginPort:TunnelEndHost:TunnelEndPort ViaUser@ViaHost

,考虑到ViaHost和之间的隧道部分TunnelEndHost不安全,容易受到网络嗅探等,为什么还要ssh提供这样的选项? 安全性是 的核心ssh,难道它不应该在 TunnelEndHost 也要求身份验证吗……,比如使用(假设的)语法,例如,

[me@TunnelBeginHost]$ # Proposed syntax:
[me@TunnelBeginHost]$ ssh -L TunnelBeginPort:TunnelEndUser:TunnelEndHost:TunnelEndPort ViaUser@ViaHost

这也能确保ViaHost和之间的隧道安全吗?TunnelEndHost

远程端口转发也是如此。

理解此功能背后的原理ssh将有助于澄清我对ssh隧道或与之相关的安全警告的任何误解。

答案1

第一的, ”ViaHost 和 TunnelEndHost 之间的隧道部分不安全不是事实。您假设终端主机将通过公共互联网连接,但情况并非总是如此——我可能使用 HTTPS 隧道,也可能通过 IPsec、加密 VPN 或物理安全的有线连接。只要我是唯一一个在自己的笔记本电脑上拥有 root 权限的人,我的虚拟机 LAN 就不容易被嗅探。

其次,@Xeross 表示——你将如何验证在您提议的方案中?使用什么协议?隧道功能是为了支持任意 TCP 连接而创建的。如果终端主机不支持 SSH、TLS 或您最喜欢的协议怎么办?如果您决定要求终端主机支持 SSH,那么整个隧道功能实际上就变得毫无用处,因为用户可以直接通过 SSH 连接到终端主机。

最后,为什么不? ssh无法比用户自己更了解用户的网络状况(如第一段所示),并且添加这样的任意限制可能会妨碍他们的工作。ssh是为了提供帮助,而不是为了照顾孩子,这是 Unix 程序的传统。

答案2

考虑到端点可以是任何东西,HTTP、HTTPS 等,这种端点身份验证究竟如何工作(你明白了)。

如果流量需要加密,无论您尝试通过隧道发送什么协议,都必须自行处理。

答案3

离主机转发是部分安全且部分不安全的功能ssh,这使得它总体来说不安全特征。

man的页面ssh 必须对此有明确的警告。遗憾的是,截至版本,它没有openssh-clients-5.8p2-25.fc16.i686

相关内容