在企业环境中,安全检查员出于安全目的使用过滤器和防火墙来阻止 VPN 连接。
VPN 流量是可区分的,这也是为什么 openVPN 无法通过中国防火墙的原因。那么为什么 VPN 通道不使用 TLS 呢?然后将无法预测哪些流量属于 VPN 服务器,因为大多数流量交叉过滤器都是 HTTPS,过滤器必须允许。
在企业环境中,安全检查员出于安全目的使用过滤器和防火墙来阻止 VPN 连接。
VPN 流量是可区分的,这也是为什么 openVPN 无法通过中国防火墙的原因。那么为什么 VPN 通道不使用 TLS 呢?然后将无法预测哪些流量属于 VPN 服务器,因为大多数流量交叉过滤器都是 HTTPS,过滤器必须允许。
有几件事不明白。
首先是大多数 VPN 工具最初设计用于在不安全、可能被屏蔽或防火墙但对 VPN 没有积极敌意的网络上提供私有连接。
第二个是传统的 TLS 是 TCP 的包装器。TCP 对 VPN 来说是一个糟糕的选择,因为它会受到“线头阻塞”的影响。如果一个数据包丢失,那么它后面的所有数据都会被阻塞,直到它被成功重传。这过去在通过 TCP 运行 VPN 时会引起很大的问题,现在我们有了 TCP 快速重传,这不再是一个问题,但它仍然不太理想。
第三是深度包检测是一个相当新的事物。将通过不受干扰的合法 TLS 流量但不会通过端口 443 上的其他流量的网络仍然是例外而不是规则。
虽然 Openvpn 确实有一个 TCP 选项,但它最初设计为通过 UDP 运行。它使用 TLS 进行密钥交换,但使用专门为此目的设计的系统加密实际的网络数据包。
https://openvpn.net/index.php/open-source/documentation/security-overview.html
也有人应该说一下 DTLS(TLS over UDP)
DTLS 是一个相当新的协议。我看不出你为什么不能/不应该在其上构建 VPN 解决方案,但我猜 VPN 软件供应商并不是特别愿意重新设计他们的软件。
无论如何,它对问题中描述的场景没有帮助。
简洁版本:
长版:
虚拟专用网络这个名称暗示了您的问题的答案。真正的 VPN 协议模拟网络,这意味着能够通过单个通道同时路由多种流量类型和端口。这就是为什么使用 IPSec 之类的 VPN 协议后,您最终会得到封装在 ESP 数据包中的 TCP 数据包,这些数据包封装在其他 TCP 数据包中。(另请参阅SSH 和 IPsec 有什么区别?)
默认情况下,TLS 不提供此功能。TLS 获取字节,对其进行加密,然后将它们传输给可以解密的接收者。而已; 其他所有要做的事情都必须由应用程序来完成。在 HTTPS 下,Web 服务器和客户端通过 TLS 通道交换 HTTP 数据字节。在 IMAPS 下,邮件服务器和客户端通过 TLS 通道交换 IMAP 数据字节。
为了通过 TLS 获得通用的“网络”连接,您需要一个能够在任一端进行封装和解封装的客户端和服务器。你不是免费的。
这并不是说您不能拥有通过 TLS 运行的 VPN。有很多产品可以做到这一点;甚至像 Checkpoint 这样的主流供应商也支持 IPSec 和基于 TLS 的 VPN。在某些情况下,TLS 只是简单地封装 IPSec 数据报,因此实际的“N”是通过 IPSec 但 TLS 通过 Internet 获取的。
请注意,在某些情况下,老练的对手可以根据通信模式推断何时将 TLS 连接用于 VPN。操作安全不仅仅是加密位!
许多 VPN 协议确实使用 TLS。特别是,几乎所有现代客户端-服务器 VPN(例如,用于将笔记本电脑远程连接到公司网络)都支持将 TLS 作为主要或备用传输。
我是著名的基于 TLS/SSL 的 VPN 的开源客户端的贡献者:openconnect。我几乎完全靠自己对 GlobalProtect VPN 协议 (TLS+ESP) 进行了逆向工程。我已经详细研究了足够多的 VPN 协议,以注意到一些非常清晰的模式和设计权衡。
... 至于使用 TLS 进行 VPN 的身份验证/设置?除了缺乏标准化协议之外,我基本上看不出那里有什么真正的缺点。
TLS 比ISAKMP(IPSEC 的身份验证/密钥交换组件)更灵活、实现更广泛且更易于调试。包括 GlobalProtect 在内的一些现代企业 VPN 协议使用TLS 进行身份验证和密钥交换,然后使用ESP 进行数据传输(尽管如果需要,它们可以回退到 TLS)。根据我的经验,这是一个非常有效和高效的组合。