假设我有一个用于源代码控制的内部服务器。如果我只通过 VPN 连接访问该服务器,我是否还需要在源代码控制服务器上设置 SSL 以确保没有人可以窃听我与它的通信?
如果我使用 VPN 连接,使用 ssl 是否重要?
VPN是一个虚拟专用网络:它将一组机器与世界其他地方隔离开来,这样这些机器就可以不受外界干扰地相互通信。如果隔离相当彻底(它使用加密,并且正确使用它),那么 VPN 中任何两台机器之间的通信将受到保护,不会被不在VPN 中的机器窃听和更改。
但是 VPN 不会对已经在 VPN 内部的攻击者采取任何行动。您的桌面系统在 VPN 中;您正在与之交谈的服务器也是如此。但也可能有其他机器。事实上,在企业环境中,所有远程员工都加入 VPN 是很典型的,因此 VPN 将包含许多人以及一堆公司服务器和其他安全性有问题的系统(例如打印机)。
还有一点就是VPN是在机器之间。在“大型机模型”中,给定的机器可以运行来自不同用户的进程,具有不同的权限。使用 SSL,安全性是从客户端机器上的一个特定进程到服务器上的一个特定进程。即使 VPN 使用身份验证,客户端也不方便获取有关服务器身份的一些准确信息,反之亦然,因为 VPN 身份验证不适用于相关机器上的单个进程。
因此,在存在 VPN 的情况下,仅当满足以下所有特征时,SSL 才是冗余的:
- VPN 提供机密性和完整性以及 SSL 将(即正确使用加密);
- 所有可能连接到 VPN 的机器都是受信任的;
- 身份验证可以委托给 VPN 层。
如果不确定,请使用 SSL 并将网络视为恶意网络。这是安全的方法。
这取决于 a) 使用中的 VPN 是否提供加密以及 b) VPN 端点是否是服务器。例如,如果您通过 VPN 连接到办公网络,那么您的流量在到达服务器之前仍然不会从 VPN 出口节点(假设 VPN 提供加密)进行加密。使用 SSL 将确保您的流量一直加密到服务器(除非您使用 SSL 连接防火墙)。
VPN 并不一定意味着通过隧道的流量是加密的,所以首先我会问你使用什么类型的 VPN 来确保它是加密的。
假设您使用的是加密流量的 VPN,通信仍将在 VPN 终止的主机和源代码控制服务器之间以明文形式移动,我倾向于“假设您的内部网络受到威胁”的立场,因此建议即使在“私有”或“内部”网络上也使用 SSL。
如果 VPN 服务器与源控制服务器是同一台机器,并且您使用的是像 IPSec 这样的不错的 VPN 技术,那么不,添加 SSL 在人们窃听方面没有任何好处 - 您已经有了端到端加密消息认证。这里唯一担心的是 VPN 上的其他任何人都可以查看和编辑明文流量。
但是,如果 VPN 和端点不是同一台机器,那么是的,您需要添加 SSL。这是因为任何 VPN 加密都在 VPN 服务器处终止,然后 VPN 服务器充当动态 NAT 网关,基本上代表您拨出到端点服务器。从那时起,除非存在其他加密层(例如 SSL),否则连接将采用明文形式。
本质上,始终添加 SSL,即使您认为不需要它。不过,这可能会让您的防火墙操作员感到不安……他们希望能够检查流量。