是否建议同时使用这两种协议?在什么情况下?
使用 SSL over IPSec 有什么理由吗?
这里需要考虑不同的安全传输层:
- VPN
- SSL VPN(包括隧道)
- IPSec VPN
- 单个服务的 SSL/TLS
IPSec 与 SSL VPN
SSL 和 IPSec VPN 都是不错的选择,虽然它们可能适合不同的应用程序,但它们都具有相当的安全性。
IPsec VPN 在第 3 层(网络)运行,并且在典型部署中提供对本地网络的完全访问权限(尽管可以通过防火墙锁定访问权限,并且某些 VPN 服务器支持 ACL)。因此,此解决方案更适合您希望远程客户端表现得好像它们在本地连接到网络的情况,并且特别适用于站点到站点 VPN。IPSec VPN 也往往需要供应商提供的特定软件,这在最终用户设备上更难维护,并且将 VPN 的使用限制在受管设备上。
SSL VPN 通常被认为是远程访问的首选。它们在第 5 层和第 6 层上运行,在典型的部署中,根据用户的角色授予对特定服务的访问权限,其中最方便的是基于浏览器的应用程序。通常更容易配置 SSL VPN,对访问权限进行更精细的控制,这可以在某些情况下为远程访问提供更安全的环境。此外,现代设备固有地支持 SSL/TLS,并且通常可以在不需要专业客户端软件或轻量级基于浏览器的客户端的情况下进行部署。这些轻量级客户端通常还可以运行本地检查,以确保连接的机器在被授予访问权限之前满足某些要求——使用 IPSec 实现这一功能要困难得多。
在这两种情况下,一个都可以配置为实现与另一个类似的事情——SSL VPN 可以用来简单地创建一个具有完全网络访问权限的隧道,而 IPSec VPN 可以被锁定到特定的服务——但是人们普遍认为它们是更适合以上场景。
然而,正是由于这些原因,许多组织将两者结合使用;通常是用于站点到站点连接的 IPSec VPN 和用于远程访问的 SSL。
关于 SSL 与 IPSec 的主题有许多参考资料(其中一些直接来自供应商):
- https://supportforums.cisco.com/document/113896/quick-overview-ipsec-and-ssl-vpn-technologies
- http://netsecurity.about.com/cs/generalsecurity/a/aa111703.htm
- http://www.sonicwall.com/downloads/EB_Why_Switch_from_IPSec_to_SSL_VPN.pdf
- http://searchsecurity.techtarget.com/feature/Tunnel-vision-Choosing-a-VPN-SSL-VPN-vs-IPSec-VPN
- http://www.networkworld.com/article/2287584/lan-wan/ipsec-vs--ssl-vpns.html
端到端加密
在上述某些情况下,例如 IPSec VPN 和 SSL VPN 隧道,您可能无法使用您正在使用的实际服务获得端到端加密。这就是使用额外的 SSL/TLS 层派上用场的地方。
假设您在远程并尝试通过 IPSec VPN 连接到内部托管的 Web 应用程序。如果您通过浏览器使用 HTTP 协议,您的流量在通过 VPN 隧道本身运行时会被加密,但在到达远程 VPN 端点时会被解密,并以明文形式通过内部网络传输。这在某些用例中可能是可以接受的,但为了纵深防御,我们理想情况下希望知道我们的数据不会在您和实际服务本身之间的任何地方被截获。通过 HTTPS 连接到此应用程序,您实际上拥有两层安全性:一层在您和 VPN 端点之间,另一层通过它(在您和 Web 服务器本身之间)。
当然,这不仅限于 HTTPS——您同样应该使用其他安全协议,如 SSH、FTPS、带有 STARTTLS 的 SMTP 等。
这是 cisco 关于 IPSEC 和 SSL 的一篇好文章。它包括优点和缺点以及每个的概述,并同时实施它们。
这取决于您可能有企业 VPN 隧道(适用于 IPSEC),但您通过企业网络中的 VPN 访问的内部 Web 服务器之上的一层可能是 HTTPS(通过 SSL)
很久以前我就这个做了一个演讲
使用这两种协议是有原因的。使用 IPsec 隧道时,您仍然需要应用程序级加密。如果隧道的末端和会话结束的位置之间存在间隙,这是有利的。
下图描述了除了 IPsec 之外,您可能还需要 HTTPS(在我的示例中为 SQL)等应用程序级加密的原因。
User => Website => IPSec Tunnel => Back End Network => SQL Backend
| => Data can be read by other hosts!