1、零信任架构的中心

无论是NIST还是Beyondcorp还是SDP,所有零信任架构中,最中心的部分都是“安全网关”。下图是NIST的零信任架构图,图中蓝框里就是“安全网关”。

从图中可以看到安全网关的作用为:

(1)安全网关隔开了左侧外网和右侧内网。用户在左侧网络中。用户想获取右侧的数据资源,只能通过网关进入。网关就像是门卫一样,合法的让进,不合法的拦住。

(2)所有的安全策略都由网关执行。零信任要求对用户的身份、设备、行为路径等等多个方面进行检测和判断,检测结果由网关执行。用户的请求到网关之后,网关解析出请求中的用户信息,然发给各个策略检测模块。所有的检测结果都汇聚到网关,由网关最终执行。

下面介绍安全网关的具体架构。

2、Web代理网关

Beyondcorp是世界上最早落地的零信任项目,Beyondcorp网关的名字叫“访问代理”(Access Proxy),如下图所示。

Beyondcorp的安全网关实际上相当于一个“Web代理”,只支持web网站的接入,不支持c/s架构的应用。这个网关可以用类似Nginx的代理服务器实现。

Web代理网关的功能包括:

(1)转发请求。这是代理服务器最基础的功能。网关根据用户访问的域名不同,分别转发到网关后面的不同服务器。

(2)获取身份。从架构图中可以看到,Beyondcorp架构中还包括“单点登录”。所以,网关对用户身份的判断可能也是通过单点登录的token实现的。

Beyondcorp架构中,客户端是一个Chrome浏览器上的代理插件。用户访问数据时,插件应该在cookie或包头中加上了代表用户身份的token。

Beyondcorp还要验证设备信息。设备信息可能也是用类似的方式,通过浏览器插件把信息插进包头里带给网关的。

(3)验证身份。网关可以将访问者的身份信息发给Beyondcorp的身份管理模块。身份管理模块进行对比和判断,然后返回验证结果。

为了提升验证速度,可以把身份信息在网关上也存储一份。

这一步会非常影响网关的性能,所以要看一个零信任产品好不好,就看网关的验证算法快不快了。

(4)放行或拦截。网关根据验证结果决定将访问请求转发到真实的服务器上,或者转发到报错页面上。(Beyondcorp的报错页面上会引导用户去自助申请权限,这个体验做得非常很好。)

Web代理网关的好处

(1)预验证、预授权。只有通过身份验证的用户才能接入企业资源,其他人会被拦在外面,完全碰不到企业资源,相当于在整个资源外面多了一层防护罩。

(2)持续监控。所有流量都是通过网关转发的,所以网关可以持续对用户的流量进行设备健康状态和用户行为状态的检测。如果发现异常,可以立即进行拦截阻断。

3、零信任的客户端

下面简单介绍一下web代理网关需要什么样的客户端来配合。

因为Beyondcorp是谷歌自己内部用的,所以他的客户端是用Chrome浏览器插件实现的。

国内浏览器市场比较乱,没法用插件做,所以国内很多做零信任的厂商都是自己开发了一个浏览器作为客户端。

浏览器的技术要求很高。浏览器的好处是对终端的管控能力强。但是要兼容企业的老旧系统,所以对内核兼容性要求很高。而且浏览器本身就是个很大的产品,代码几千万行,要维护这么大的产品是很难的。

其实,不用浏览器,做一个桌面代理程序也可以达到效果。国外厂商用浏览器做客户端的也比较少。那国内为啥喜欢浏览器呢?因为国内最早做零信任的公司本来就是做浏览器起家的(我就在这个公司)。我们设计架构的时候,顺手就带上了浏览器。国内厂商爱跟风,都跟着学,后来就都跟着跳进浏览器的坑里了。没想到现在浏览器竟然成为国内零信任的标配了。【捂脸笑】

4、隐身网关

以前我介绍过SDP的隐身黑科技。SDP架构里隐身网关的作用类似于防火墙。隐身网关对用户的身份进行检测,对合法用户打开防火墙的端口。对非法用户来说,所有端口都是关闭的。

如果把隐身网关放在web代理之前的话,可以增强安全网关的“隐身”防护能力,抵抗针对web代理网关的漏洞扫描或者DDoS攻击,如下图。

隐身网关的功能流程为:

(1)默认关闭所有端口。默认情况下,对网关IP进行扫描,会发现端口都是关闭的。

(2)申请放行。用户在正常通信之前,先向隐身网关发出一个专门用于申请放行的数据包。这个数据包中包含用户身份信息。

(3)验证身份。隐身网关接收用户的数据包,解析出用户的身份,并对身份进行检测。

(4)放行或拦截。身份合法的话,隐身网关会对用户的IP地址定向开放端口。对其他用户来说,端口还是关闭的。

(5)正常通信。放行之后,用户就可以正常跟web代理网关通信了。

5、网络隧道网关

只有web代理网关的话,C/S架构的业务系统没法用,远程运维连接SSH、连接数据库等等也不行。一个完整的零信任方案应该支持这些场景。

其实,RDP和SSH也有web形式的方案。这两周协议也走web代理网关之后,基本就可以解决95%的问题了。

但是剩下5%也不能放着不管。企业里可能有些老旧的客户端或者浏览器插件,用的是自己的通信协议。这些场景没法用web代理搞定,只能在客户端的网络层抓包,再通过网络隧道转发。

在零信任网关中增加一个模块——网络隧道网关,如下图。用户访问Web网站的时候,走Web代理网关。其他C/S架构的场景,走网络隧道网关。

很多零信任产品是用VPN来实现网络隧道网关的,包括Beyondcorp也是把C/S架构的场景交给VPN了。

目前最新一代的VPN协议是wireguard协议,用wireguard来实现网络隧道网关是个不错的选择。

wireguard最大的特点就是代码非常简洁。wireguard全部只有4千行,传统VPN至少有几万行。代码少,就意味着运行效率更高,更快,更稳定,同时漏洞也更少。

wireguard的通信流程简述如下。

(1)客户端创建虚拟网卡,抓取用户流量。这里要限制不能全部抓取,应该只抓取用户有权访问的流量。

(2)申请隐身网关放行。

(3)与网络隧道网关建立连接。Wireguard将抓到的流量进行UDP封装,封装过程中进行加密。与传统VPN协议不同,wireguard的加密过程采用了更高级的加密方法“Cryptokey Routing”。客户端和网关各有一对公私钥,公钥发给对方。通信时先用私钥进行加密,对方再用公钥解密。这里面,公私钥是跟用户身份绑定的,每个用户都用单独一套公私钥。这样的加密强度基本是不可破解的。

(4)网络隧道网关检测用户身份。身份信息是在封装过程中插入数据包头部的。

(5)正常通信。

网络隧道网关的作用是覆盖更多使用场景,让零信任架构更完整。但是在性能上可能不如Web代理网关。而且暴露了网络层的资源,安全性上更低。

所以这两者是相互补充的关系。如果只看到隧道网关所有场景都能支持,就把web代理网关扔了,那就是丢了西瓜捡芝麻了。

我还见过一些厂商只有隧道网关,web代理和隐身网关都没有。没有隐身防护的话,相当于隧道网关还是对外暴露的,很不安全。我当时试过攻击他的51820端口(wireguard的默认端口)。每秒1万个包过去,直接就把那个厂商的产品搞瘫痪了。

所以,没有隐身网关保护的隧道网关是很脆弱的。

6、API网关

现在,用户的访问场景都覆盖了,但是服务器之间的访问还没有管控。服务器之间的访问需要API网关来管理,如下图。

第三方服务器调取被保护资源的API时,需要进行身份验证。具体流程为:

(1)申请隐身网关放行。

(2)通过API网关的身份验证。多数API都是Http协议的,所以这个过程与web代理网关类似。

第三方服务器在通信时,将自己的身份信息插入数据包的头部。API网关从包头获取身份进行验证,并判断是否放行。

(3)正常通信。

7、网关集群

到这里已经形成了一个完整的零信任安全网关。不过这只是单机版,只适用于中小型企业。

大型企业还有其他需求:

(1)多数据中心:业务系统的服务器分别部署在多个数据中心或者多个公有云上。

(2)集群:大型企业用户量大,一台网关性能肯定支撑不住。

(3)高可用:所有流量都要经过网关转发,一旦网关down掉,所有用户都会受影响,所以必须有高可用方案,一台坏了,自动切换到另一台。当然,集群也能实现高可用。

(4)分布式:如果企业在全国各地都有分公司,或者跨国企业在国外也有分公司,那么网关必须也是分布式的,让用户能够就近接入,保证用户的访问速度。

一个成熟的零信任架构应该满足这些需求,如下图。

网关的集群方案跟零信任架构中的管控中心密不可分。管控中心管理所有网关,用户在什么情况下该连接哪个网关,也是有管控中心统一管理。具体流程这里就不做深入介绍了。

8、总结

安全网关是零信任架构的中心,是零信任理念的执行者。安全网关通常会部署在企业网络的入口,对企业影响非常大。因此,网关对各种协议是否都能支持,网关是否支持高可用,加密通信的性能和稳定性,是零信任安全网关最重要的评价指标。

声明:本文来自白话零信任,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。