网格VPN:向零信任网络再迈进一步

  • A+
所属分类:安全闲碎
网格VPN:向零信任网络再迈进一步
因为必须支持和保护越来越多的远程网络连接,公司企业正仔细审视网格虚拟专用网(VPN)。 
网格VPN软件定义
网格(MESH)VPN使用点对点架构,网络中的每个节点都可以直接连接其他任何节点,无需通过中央集线器或网关。与传统VPN相比,此方法成本更低,更易于扩展。
网格VPN并不是什么新概念,但花费了很长时间发展成熟和推广使用。直到几年前,大多数公司企业的VPN需求都是通过传统星型架构完美满足的。大部分公司防火墙和网关安全产品包含VPN功能,对于只有少量员工需要远程办公的多数公司而言已经很便利了。
向混合云基础设施的迁移,以及不断增长的远程办公人数,最终将用户的目光引向了网格网络解决方案。此技术通常称为“服务网格”,始于连接不同云中虚拟机和节点的需求,如今扩展至连接笔记本电脑和手机等传统端点。
网格VPN初创公司Tailscale联合创始人兼首席技术官David Crawshaw此前曾是谷歌软件工程师,负责分布式系统和实验基础设施项目。他表示:“从长远看,服务网格和网格VPN之间的界限将会逐渐模糊,因为两种产品解决的都是在设备间安全保密地移动数据包的问题。一直以来,二者的区别在于设备是虚拟的(虚拟机或容器)还是实体的(手机或笔记本电脑或服务器),而这一区别越来越模糊了。”
为什么网格VPN越来越受欢迎
新冠病毒疫情深刻改变了大多数公司的IT运营,迫使公司企业几乎一夜之间就适应了在家办公的现实。对于一些企业IT团队而言,这意味着要加快现有的数字化转型计划,以便支持远程办公;而对于另一些企业IT团队来说,这意味着得尽快确定和部署新的解决方案。
大型内容交付网络和云供应商(包括Cloudflare、阿卡迈和谷歌)如今提供远程访问解决方案。在此类解决方案的帮助下,公司企业可通过浏览器向远程工作人员提供内部应用程序,同时实施强大的访问控制和身份与安全检查。但有一个问题:这些产品中大多数仅适用于Web应用程序,也就是说,需要其他协议进行通信的应用和服务,需得通过VPN访问。
VPN架构一直遵循星型模式,VPN网关作为中心集线器连接所有客户端。VPN网关也可以相互连接,实现多中心多端点的设计。实际环境中这种情况很常见,因为每个公司办公室或分支机构都有自己的VPN网关。但VPN网关仍然代表着网络架构中的瓶颈。
VPN连接要加密,而加密是一项计算量很大的操作,因此VPN网关是具有足够CPU能力和RAM的硬件设备,能够支持一定数量的并发用户和连接。如果突然需要支持大量的远程用户(如疫情期间发生的情况),那么公司可能需要用更强大的VPN网关完全替换掉原网关,或添加其他VPN服务器。许多VPN解决方案遵从每客户端许可模式,所以公司至少需要购买更多客户端许可。
公司和VPN网关的可用互联网带宽也会限制所支持的并发用户数量。这就是为什么许多公司一般不通过VPN路由员工全部互联网流量的原因所在,而员工在不安全位置使用公共Wi-Fi就可能使自身暴露在风险之中。
另一个问题是,需访问的IT资源和应用并非都位于公司办公场所内。这些资源或应用可能运行在云端虚拟服务器上,甚至就在同事的笔记本电脑上(如果只是同事正在开发且愿意共享的测试版应用)。这种情况下,用户需先通过公司的VPN网关(该VPN网关可以位于另一个城市或地区),然后经由目标服务器与VPN网关之间的VPN链接返回服务器。这就增加了很多连接延迟,严重影响性能。
而采用点对点网格VPN,每个节点都可以直接连接到其他任何节点,无需中央集线器或网关。这就是互联网最初的样子:公司和用户尽管向网络上添加节点——那个时候并不太担忧安全。
网格VPN工作原理
随着时间的流逝,互联网发展出由一级电信公司、云供应商和内容交付网络组成的骨干网,这些公司通过高速互联网交换点相互连接。同时,公共IPv4地址池有限的现实,也导致了网络地址转换(NAT)的大量使用,包括在互联网服务提供商(ISP)层级;让互联网越来越类似星型架构。这是IPv6的倡导者希望反转的事情。
一些硬件VPN网关支持多点对多点配置,而且工作机制类似网格网络,但只要客户端和节点有所改动,这些配置就需要频繁管理和更新;而对多云环境中虚拟机上运行的服务和应用而言,客户端和节点变动的情况太常发生了。
Crawshaw表示:“网络经常重排,虚拟机在各数据中心之间来回移动,手机常从办公室挪到咖啡馆入网。公司可以建造或长租办公楼运营30年,并为之布设专用网络硬件,也可以按月短租办公室做项目。说起‘网格’这个词的时候,通常暗指端点自动配置。也就是说,如果挪动网络上某个设备,这个设备应该与网格网络上的其他设备重新建立通信,而无需IT管理员的干预。”
网格VPN通过软件实现,所以从这个意义上讲网格VPN属于软件定义网络(SD-WAN),虽然SD-WAN常用于简化和自动化大型数据中心和电信基础设施项目中传统网络设备的集中管理与控制。
常见网格VPN解决方案
Tinc VPN是为网格网络而设计的早期开源VPN守护进程之一,其历史可追溯到1998年。该进程兼容Windows、Linux、BSD和macOS等几乎所有主流操作系统,支持自动全网格路由、NAT遍历和以太网段桥接。Tinc启发了后来的很多项目。
依托商业公司的一款更新型的开源网格VPN解决方案名为ZeroTier,于2015年推出。ZeroTier自诩为“地球智能可编程以太网交换机”,具备企业SDN交换机的绝大多数功能,位于遍布本地网络或互联网的各种应用与设备所组点对点网络之上,控制着这一点对点网络。其结果就是带网络管理程序的网格VPN,提供增强管理与监测、自动节点发现与配置,以及自定义协议流量加密等功能。
去年,Slack软件工程师发布了另一个开源网格VPN项目,名为Nebula,基于Noise协议框架创建。Slack将Nebula定位为“可扩展覆盖网络工具”,旨在创建手动验证的点对点软件定义网络,可以连接多云服务提供商在全球不同位置的成千上万个节点。Nebula使用证书颁发机构发布的证书来标识节点及其某些属性,比如IP地址、名称和用户定义组内的成员身份。
Slack工程师在Nebula发布声明中写道:“大多数云提供商提供某种形式的用户定义网络主机分组,常称作‘安全组’,可供用户基于组成员身份过滤网络流量,而不是根据单个IP地址或地址段。但不幸的是,截至发稿时,托管提供商各区域的安全组都是独立的。而且,不同托管提供商之间没有任何可互操作版的安全组。这意味着,当你扩展到多个区域或采用多个提供商时,你唯一有用的选项就是根据IP地址或IP网络范围分段,而这将变得很难管理。考虑到我们的需求,以及缺乏可满足我们加密、分段和操作需求的现成选项,我们决定创建我们自己的解决方案。”
网格VPN领域的另一新秀是Crawshaw的Tailscale,围绕今年新纳入Linux和OpenBSD内核的高性能WireGuard VPN协议构建。Tailscale尚未使用WireGuard内核代码,但Windows、Linux、macOS、iOS和Android目前可以使用该协议以Go编程语言编写的用户空间实现。
Tailscale的大部分代码都是开源的,其商业模式围绕运行用于自动化节点发现与配置的中心目录服务或协调节点,管理员可以管理基于角色的访问控制和登录。至于大型企业部署,Tailscale提供运行本地协调服务器的选项,但与传统VPN网关不同,并没有实际的用户流量流经这些服务器。这些服务器仅仅用于交换配置信息。
身份与零信任网络
零信任网络被视为企业网络的未来。零信任网络架构中,在授予信任和企业资源访问权之前,每个用户和设备的身份都要经过验证。大多数传统企业网络中,位于内网的设备仅仅因为同处隐式“受信”网络,就能接入服务器和服务,而这正是黑客能够在网络间成功四处游移的原因所在。
大多数网格VPN解决方案受谷歌BeyondCorp计划和其他零信任网络概念的启发,重点关注设备或节点身份验证。ZeroTier、Nebula和Tailscale中,节点身份通过某种形式的公钥加密在IP层实现。
Crawshaw表示:“传统物理网络不提供任何身份概念,我们太习惯于这种想法,以致当前向网络流量中引入身份的工作总是始于更高层级的抽象(如HTTPS/TLS),但我们未必需要这么做。我们可以使用网络隧道和现代加密,来确保数据包的IP源地址能够准确描述是谁真正发送了这个数据包。将身份概念移至IP层的优势在于能够兼容现有软件。你可以将现有内部工具逐渐转移至所有发送者和接收者身份已知的虚拟专用网,渐渐关闭传统网络接入渠道,无需重写所有软件即可应用身份概念。”
例如,WireGuard协议引入加密密钥路由概念:节点的公钥与节点在VPN隧道中可拥有的一系列IP地址绑定。这意味着,只要节点的私钥保证安全,网络上就不可能出现节点假冒。网络管理员和安全团队也就可以确保,网格网络上某些应用或资源只有特定设备和用户能够看到和访问。
除了执行协议级设备身份检查,网格VPN还能够执行用户身份检查。例如,Tailscale就能与谷歌、微软、Okta和SAP等企业已经在用的主流身份提供商集成,并且支持通过这些身份提供商进行的多因子身份验证。
公司企业还可以选择使用网格VPN解决方案来访问非HTTP应用和服务,而用阿卡迈、Cloudflare或谷歌的零信任访问网关来访问Web应用。这些解决方案也可以通过浏览器,或安装在端点上的独立轻量级客户端来执行设备安全检查。
关键词:VPN;零信任;无线网格;
往期精彩回顾
VPN会被零信任取代吗?
改写VPN的未来:开源协议 WireGuard
VPN:长期忽视的大问题



发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: