在Cloudflare,随着越来越多的员工远程工作,我们有必要回顾一下我们用来完成工作的系统以及如何保护这些系统。多年来,我们从一个传统的“把它放在VPN后面!”的公司,逐渐迁移到现代的零信任架构。虽然Cloudflare尚未完成这一转型,但我们已经接近目标。
保护内部应用与增强VPN安全性
我们的总体策略是:用Access(我们的零信任访问代理)保护每一个内部应用,同时通过Spectrum(一个允许代理任意TCP和UDP流量的产品,保护其免受DDoS攻击)来增强VPN的安全性。
在引入Access之前,我们的许多服务都依赖于VPN(使用Cisco ASA和AnyConnect)来强制执行严格的身份验证和授权。然而,VPN的使用总是显得笨重:在服务器端设置、维护(安全性)和扩展都很困难。每位新员工都需要学习如何配置他们的客户端。迁移服务需要时间,并涉及许多不同的团队。在逐一迁移服务时,我们优先处理高优先级的服务,并逐步向下推进。直到最后一个服务迁移到Access之前,我们仍然维持着VPN,并用Spectrum来保护它。
解决源代码控制的难题
一些服务并不通过HTTP或其他Access支持的协议运行,仍然需要使用VPN:源代码控制(git+ssh)就是一个特别棘手的问题。如果我们的开发人员需要提交代码,他们必须先启动VPN。为了帮助我们实现消灭VPN的目标,我们引入了对SSH通过Access的支持,这使我们能够用Access替代VPN作为源代码控制系统的保护层。
逐步减少VPN依赖
多年来,我们逐步削减我们的服务,逐个迁移。现在,我们几乎完成了,只有少数小众工具仍然依赖VPN而不在Access之下。截至今年,我们不再要求新员工在入职时设置VPN!我们可以在Access日志中看到,越来越多的用户每月登录更多的应用。
确保VPN的高可用性与性能
在从VPN向Access过渡的过程中,我们必须保持VPN服务的正常运行。由于VPN是远程工作者的关键工具,因此确保该服务的高可用性和性能至关重要。
引入Spectrum:提升安全性与性能
Spectrum是我们为任何基于TCP和UDP的协议提供的DDoS保护和性能产品。我们在早期就将Spectrum放在VPN前面,并立即看到了我们安全态势和可用性的改善,所有这些都没有改变最终用户的体验。
设置过程相当简单,只需进行最小的配置: Cisco AnyConnect使用HTTPS(TCP)进行身份验证,随后实际数据通过DTLS加密的UDP协议进行隧道传输。
MTU问题的解决
尽管配置和设置相对简单,但实际运行时却并非如此。我们的早期用户迅速注意到,尽管身份验证正常,但他们实际上无法看到VPN中有数据流动。我们很快意识到,我们的“宿敌”——MTU(最大传输单元)是罪魁祸首。正如一些读者可能记得的那样,我们对IPv6的MTU大小设置一直非常小。我们这样做是因为在用户与我们的边缘之间可能存在IPv6到IPv4的隧道。通过将其设置得很低,我们防止了PTB(数据包过大)数据包被发送回我们,这会因为我们数据中心内部的ECMP路由而引发问题。但是,在VPN中,由于VPN头的增加,数据包大小总是会增加。这意味着我们设置的1280 MTU永远不足以支持基于UDP的VPN。最终,我们将MTU设置为1420,至今仍在使用,这使我们能够完全通过Spectrum保护我们的VPN。
未来展望
在过去几年中,这种设置为我们提供了良好的保障,确保我们的VPN基础设施安全,无论发生什么,人们都能够继续远程工作。总的来说,这是一段非常有趣的旅程,一次次削减服务,逐步接近我们可以正式退休VPN的那一天。对我们来说,Access代表着未来,Spectrum + VPN则是我们在服务迁移完成之前的过渡方案。与此同时,从2020年初开始,新员工不再默认获得VPN账户!
Cloudflare的连接云保护整个企业网络,帮助客户高效构建互联网规模的应用,加速任何网站或互联网应用,抵御DDoS攻击,防止黑客入侵,并能帮助您迈向零信任架构。
访问1.1.1.1,使用我们的免费应用程序,让您的互联网更快、更安全。
想了解更多关于我们帮助构建更好互联网的使命,请从这里开始。如果您正在寻找新的职业方向,请查看我们的招聘职位。