零信任安全及未来网络构建(2)-分布式网络架构

接上篇所述,将这些概念解耦为离散的概念使我们能够朝着最佳组合性能、安全控制和易于管理的方向发展。接下来,我们将深入研究底层网络技术,让我们絮叨絮叨!

在我们努力实现我们的分布式网络拓扑版本时,我们采用了一系列技术,这些技术可在大多数情况下提供最佳性能并反映人们当今工作方式的现实。

不可逾越的路由

第一个问题是路由。如何建立从客户端到资源的网络连接?最简单的解决方案是让Internet上的每个设备都有一个唯一的地址,这样网络连接就可以在任何两个设备之间直接路由。尽管互联网就是这样开始的,每个主机都可以唯一访问,但早在1992年就很清楚,IPv4空间中的每个唯一地址很快就会用尽。随着不可避免的Internet地址耗尽,人们提出了许多解决方案,包括1994年提出的网络地址转换(NAT)并很快被采纳。NAT旨在成为一种短期解决方案,而IPv6是解决耗尽的长期解决方案。最后一块IPv4地址是在2011年分配的,到2021年,我们仍在等待IPv6的完全采用。NAT和IPv4将伴随我们一段时间。

对于大多数用例,NAT不会出现任何特定问题。不知不觉中,今天使用Internet的每个人的流量都在不断地穿越多层NAT以访问公共Internet服务。在这种情况下,私有主机(用户的设备)正在访问公共主机(例如,网络服务器)。流量可以通过公共主机进行交换,该公共主机具有可从私有主机通过ISP路由的可公开访问的端点。

有趣的是,当一个私有主机想要连接到另一个私有主机时——称为点对点连接——例如,两个参与者希望发起视频通话,每个人都在家中的NAT服务后面。家用路由器。自互联网早期以来,已经开发了几种技术来解决NAT穿越问题——所谓的因为每个对等点必须在其对等点之前遍历NAT层。WebRTC是最著名的方法之一,稍后我们将回到NAT穿越技术这一主题。

在我们的分布式网络架构中,控制层授权从任何客户端到网络层中任何资源的连接。如果这是最终目标,并且我们无法控制客户端和资源是否位于NAT层之后,那么在这种情况下,客户端如何连接到资源?事实证明,有几种方法,我们将按照复杂性的渐进顺序进行介绍。

  • 开放访问:最简单的选择是所有东西都应该有一个公共IP地址,这意味着连接任何两台主机都需要路由,而无需其他任何东西。这并不像听起来那么疯狂,但它确实需要重新考虑默认情况下如何保护单个主机免受攻击,因此这在当今的Internet上是不切实际的。未来,IPv6将使这个选项更加现实。
  • 端口转发:一种相对简单的方法,可疑地依赖于默默无闻的安全性。这里采用的方法是从一些公共IP地址(例如,您的家庭互联网路由器)和一个指定的端口进行转换,该端口将流量转发到一个私有地址和不同的端口。这仅公开您希望提供的必要服务,并使目标可路由到公共互联网。尽管如此,这种方法仍然让目标服务和主机对公共攻击向量开放,并涉及路由器规则的配置,这在任何规模上都增加了不必要的复杂性。
  • 端口敲门:也称为安全数据包授权(SPA),这种技术类似于通过秘密敲门进入一个非公开的神密之门。虽然实际的实现更为复杂,但目标是通过让服务端口无响应来阻止临时端口扫描器,除非数据包的特定顺序和时间到达以打开特定端口。这是一种有效的技术,但如果发现数据包序列,它会使您的主机和服务完全开放。
  • 数据中继:不是开发涉及从公共Internet开放对目标主机的访问的技术,而是使用中继引入了一个可从客户端和资源主机公开访问的中间主机。这样做的好处是客户端和资源主机可以保持对公共Internet不可见。只要在任何主机附近都有可用的中继,就会引入最小的额外延迟。中继可以合并到整个传输中,这样就不会发生连接终止并且流可以保持私有。当NAT穿越技术不成功时,这种方法是标准的备份方法。
  • 代理:随着代理的引入,我们现在已经脱离了纯粹由网络的路由和传输层驱动的解决方案领域。代理通过终止网络连接来工作,操作或验证它们接收到的数据包和有效负载,并将该数据转发到目标资源或相应的反向代理,将数据传递到目标资源。

代理是基于软件的,并且在操作系统的用户空间中运行。代理很容易部署,并在可能的路由和传输操作类型中引入了显着水平的复杂性,同时通常对启动网络连接的应用程序保持透明。由于这些原因,代理是当今在涉及网络流量管理的许多应用程序中部署的主要解决方案。

在实践中部署代理有两种方法。虽然它们的底层功能可能相同,但它们在部署中做出的权衡不同。

  • 公共代理:公共代理使用可公开路由的地址进行部署,这意味着它们可以位于目标资源的前面,无论它们是否具有可公开访问的地址,都可以从客户端访问。这里的权衡是,随着可访问性的方便,确保公共代理得到强化并定期修补以防止攻击的负担。由于代理所扮演的角色,这一点尤其正确:如果从外部识别为代理,则它是一个入口点,可以保护其背后的专用网络中的某些东西。
  • 私有代理:私有代理具有相同的作用,但它们部署在私有网络上的防火墙后面。这种方法有显着的安全优势——没有公共地址以及首先使用代理的所有优势——但它们没有解决使客户端可以访问资源的问题,因为它们也位于防火墙后面。这将我们引向NAT穿越的主题,我们将在接下来介绍。

穿越火线的窥见

由于我们在上面的概述中以私有代理结束,因此可以肯定的是,我们认为私有代理代表了实现分布式网络拓扑的最佳权衡集。造成这种情况的两个主要原因是私人代理是:

  • 公共互联网不可见:因为它们位于专用网络的防火墙后面,所以不可能通过公共互联网端口扫描发现它们或探测它们的漏洞。即使老练的攻击者可以根据可见的流量模式推断出防火墙后面存在代理,深度防御在这里也是一种非常有效的技术,它将安全问题分离到有效的防火墙中。
  • 易于部署:由于它们作为常规用户空间服务运行,因此可以毫不费力地部署到几乎任何可用的设备上,不限软硬件平台限制。私有代理的较低安全负担也意味着它们更有可能在需要时进行部署。成功采用给定方法也是整体安全态势的一个重要因素。

最后一个难题是弄清楚如何让希望连接到它们保护的目标资源的客户端可以访问这些代理:进入NAT遍历。由于NAT已经在Internet连接的网络中实施了几十年,可用于解决两台主机(每台主机都位于NAT层之后)的问题的解决方案范围在今天已经相当成熟。我们不会在这里深入讨论,而是介绍通过NAT遍历建立对等连接所涉及的高级步骤。

NAT穿越过程

NAT穿越过程分为四个主要阶段:

  • 建立信号通道:在初始启动时,客户端和私有代理(在该分布式架构中称为连接器)都会启动并建立与可公开访问的中央服务的经过身份验证的连接。该服务的初始作用是建立一个信令通道,用于与每个对等点交换对等点候选地址。在该分布式架构中,我们现有的经过身份验证的中继基础设施——已经分布在全球——用于建立一个信令通道。
  • 发现对等候选地址:为了让客户端与连接器协商对等连接,两个对等必须发现它们的公共IP:NAT层分配的端口地址。NAT加速服务促进了这一过程,并托管在我们的中继基础设施上。
  • 交换候选对等地址:每个对等点接下来通过信令通道接收其对等点的一个或多个候选地址。连接器将接收客户端的候选地址,反之亦然。
  • 协商并建立连接:伙伴节点使用节点候选地址尝试建立直接的点对点连接并完成NAT遍历过程。

融合技能是必然选择

由于各种原因,从阻塞端口到不兼容的NAT层,并不总是可以建立直接的对等连接。在这种情况下,需要维护备份数据传输方法。在实践应用的案例中,这是一个在我们网络架构的传输层中运行的数据中继基础设施。中继具有公共地址,因此它们始终可以从客户端和部署的连接器访问,作为一种可靠的备份传输方法。

总题来说:

  • 私有代理在安全性和灵活性之间提供了最佳权衡,以便专门部署到需要访问的私有网络中。
  • NAT遍历用于在客户端和资源之间创建对等连接,以最大限度地减少延迟。
  • 若无法进行NAT穿越时,中继基础设施可用作备用传输方法
  • 自动优先考虑对等点之间可用的最低延迟传输选项

空间转变下的地址发现

我们在上面提到,代理提供了在网络流量管理中引入高水平复杂性的机会。我们利用这一点将新的传输层网络协议QUIC引入到我们的点对点连接中。QUIC对我们的传输层进行了多项改进,包括更快的连接建立、对网络变化的更大容忍度(当今移动设备领域的主要模式标准)以及对多个并发数据流的更有效的流量管理。像QUIC这样的用户空间网络堆栈实现可以比它们的内核空间对应物更快地发现。

QUIC最初由Google开发,此后由IETF在RFC9000中标准化,并被提议作为HTTP/3的底层传输协议。QUIC的主要目标之一是为HTTP/2提供更好的传输机制,由于它使用TCP作为底层传输协议,因此存在所谓的线头阻塞问题。当通过单个TCP连接多路复用的所有HTTP/2流都受到重传的影响时,会出现线头阻塞问题,因为丢包仅影响流的子集。

QUIC建立在UDP之上,UDP是一种不可靠的网络协议,因此它提供了自己的可靠传递机制。QUIC通过在单个连接上多路复用多个并发数据流,提供可靠且有序的交付。

QUIC传输

尽管多年来TCP实现已经高度优化,但对于许多用户和用例来说,QUIC的低延迟可以说比原始吞吐量更为关键,QUIC在这方面可以匹配或超过TCP+TLS。由于采用了QUIC,Linux内核中的UDP性能也在不断优化,这将在未来进一步提高性能。

QUIC开发背后的动机——提高单个可靠连接上多个流的吞吐量——对于最大化从客户端到多个私有资源的吞吐量也很有价值。尽管QUIC被设想为优化单个应用程序(例如您的浏览器)的多个流的吞吐量,通过将来自任意数量的应用程序的单个数据流映射到单个QUIC流并将这些数据流传递到所部署的连接器和资源来扩展这一概念在我们的分布式架构中的任何地方。

除了对多个数据流进行性能管理之外,采用QUIC还为我们的网络架构带来了几项有价值的改进:

  • 更快地连接建立:初始连接在客户端和服务器之间进行单次往返。连接恢复也可以在没有任何额外的往返协商的情况下完成。
  • 支持最新的加密协议:QUIC仅支持TLS1.3及更高版本,并在加密通道中引入了额外的安全性。
  • 客户端漫游:QUIC连接能够在客户端IP和端口更改(例如,由于NAT重新绑定或用户在网络之间切换)中保留下来,这不仅为用户带来更好的体验,而且更适合当今的移动工作环境.
  • 结合了TCP的最佳实践:虽然QUIC是一个基于UDP的协议,但它包含了从TCP协议的悠久历史中学到的最佳实践,而不受TCP的传统(例如,数据包格式)的限制。例如,QUIC在处理丢包恢复方面通常比TCP更有效。

自2019年以来,我们逐步推出零信任安全内容,受到的欢迎度让我们感到非常兴奋,接下来我们接公开免费的基于新一代网络的零信任安全防护套件,您可以在其中为公司、家庭网络或个人带来不一样的体验。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章