导语:在3月29日发布的“庖丁解牛”专栏文章中,我们围绕零信任的诞生、零信任的定义、零信任模型架构模型以及零信任架构组件等方面对零信任技术进行了初步的讲解,本文将在此基础上对零信任的内部机理与发展现状进行更加深入的介绍。
一、传统“内外网”安全架构到“零信任”架构的转变
(一)传统网络安全架构
图 1 传统“内外网”安全架构模型
在传统的网络安全架构中,企业通常依赖“网络边界”来保障网络环境的安全。一般情况下,企业设备与资源只接入企业内部网络,不在公网公开;内部网络中的设备互相信任,权限允许的前提下可以互相访问;外部网络中的设备由于网络边界的存在,无法直接访问内部网络,需要借助VPN技术来建立网络隧道。这一架构虽然长期以来被广泛使用,但是其弊端非常明显:一方面,大多数工作人员对VPN技术并不满意,相比于在同一网络中的直接访问,VPN要求设置复杂的安全口令并需要繁琐的接入流程;另一方,一旦内部网络中任何设备被感染,整个网络都会面临安全风险,这一现象随着权限提升(Privilege Escalation,MITRE ATT&CK TA0004)、凭证访问(Credential Access,MITRE ATT&CK TA0006)和横向移动(Lateral Movement,MITRE ATT&CK TA0008)等攻击技术的发展愈演愈烈。
(二)零信任架构的设计思路
基于上述问题,“零信任”框架模型被逐渐提出。笔者将传统架构到零信任模型的改造总结为三步走:
1.取消内部网络中设备之间的信任关系:
图 2 零信任设计思路——取消内网中的相互信任
2.取消VPN,弱化内外网络边界,转而使用安全网关。
图 3 零信任设计思路——取消VPN并弱化内外网边界
3. 企业中的设备根据角色的不同被划分为“访问设备”和“资源”, 所有资源只接受来自安全网关的访问,所有用户也只能通过安全网关访问资源:
图 4 零信任设计思路——使用安全网关进行访问控制
图4的模型便是零信任技术的核心框架,同时也能从中看出零信任模型的本质:一种以取代传统内外网安全架构和VPN技术为目标的新型网络安全模型。
当然,为保障企业工作的正常运行,在这一框架上还衍生出了许多技术,笔者按照实现难点将其分为“基于安全网关的访问技术”和“动态安全认证技术”两类。
图 5 零信任技术的两大难点
二、零信任架构中的访问技术
(一)使用DNS中的CNAME记录实现公网访问
零信任架构首先需要解决的问题便是如何取代VPN技术,使工作人员能够在公网中更加便捷地访问企业资源。针对这一问题,目前最为广泛被使用的解决方案是基于DNS的CNAME字段设计“网络代理”,以谷歌的BeyondCorp为例,网络代理通常被实现为一个chrome插件。其具体工作原理如下:
1.为企业中的资源在公网中注册域名。例如将其数据存储服务器的域名注册为www.aa.com。
2.在公共DNS服务器中,利用CNAME记录,将企业资源的域名解析全部重定向到安全网关。例如其安全网关域名为proxy.com,则数据服务器www.aa.com的记录值为aa.proxy.com。
3.访问者想要访问企业的数据资源,并且指导数据服务器的域名为www.aa.com,然而当期访问www.aa.com时,其请求实际被转发到了安全网关。
4.安全网关验证访问者身份,通过后则代理其向数据服务器发起访问请求,随后再将请求结果返回给访问者。
图 6 使用DNS的CNAME实现公网访问
通过这一模型,处于公网的访问者可以轻松访问到企业资源,避免了基于VPN的网络隧道连接。然而我们仔细观察就能发现,这一模型虽然能够较好地实现B/S结构地业务,对于C/S结构地业务却无能为例,例如远程进行SSH连接。
(二)使用无感知网络隧道扩大业务场景
由于网络代理的局限性,对于C/S结构的业务不得不搭建网络隧道来实现。因此,从这一角度触发,零信任框架仍然没能彻底摆脱VPN技术,而安全网关实际上也包含两类,一类是用于实现B/S业务的网络代理网关,另一类是用于实现C/S业务的网络隧道网关。
图 7 零信任中的网络代理网关和网络隧道网关
以BeyondCorp为例,网络隧道网关使用TUN技术来实现。以SSH服务为例,网络隧道客户端自动与网络隧道网关完成安全验证,并与SSH服务器搭建好网络隧道。随后使用TUN技术将网络隧道封装在底层,上层在访问者端和SSH服务器端各新增一个虚拟网卡,组成虚拟局域网络。当用户需要使用SSH服务时,只需要通过虚拟网卡向SSH服务器发起请求,无需手动搭建网络隧道。这一思路和本公司提出的远控型M洞项目具有异曲同工之妙。在远控型M洞中,主控端向被控端发起连接请求前,同样需要先经过验证,为了不影响远控软件的正常业务通信,以及普适性地应用于多种远控软件,我们提出了代理机制。即主控端与被控端地代理模块在远控程序发起连接之前便完成验证并建立代理信道,远控程序在代理信道上进行交互,实现对验证过程的“无感知”。
图 8 本公司设计的远控型M洞的结构图
三、零信任架构中的安全技术
零信任架构的核心任务是提供比传统框架更为可靠的保障。然而根据我们朴素的安全观念,一个资源越公开,则其面临的安全风险更大,那么在企业资源可在公网访问的前提下,零信任架构如何为其提供能加强大的安全防护呢?通过调研,我们将其总结为了三个关键点:
(一)企业资源并非真正暴露在公网中
正如上文所分析,零信任架构中的资源需要在公网中注册一个域名,以便访问者能够在公网环境中访问。然而这并不意味着资源真正暴露在了公网之下,访问者真正能够接触到的其实只有安全网关而已。只要安全网关保证不被攻破,就可以认为资源是安全的。
(二)安全网关的基础——受控的访问设备
相比于传统模型,零信任模型更加依赖于对访问设备的控制。以谷歌BeyondCorp为例,安全网关只允许白名单内的设备访问,同时会对设备进行严格的限制与监控,不允许员工进行私自修改。这一限制导致零信任中的威胁模型与传统架构中的威胁模型有着本质性的区别。在传统架构中,网络边界上的检测器除了使用凭证进行验证外,只能通过有限的行为信息来检测其是否恶意;然而在零信任架构中,安全网关可以收集到访问设备上的各类信息,可以从多个维度进行安全验证。简而言之,传统架构中的威胁模型是一个“黑盒模型”,而零信任中的威胁模型是一个“白盒模型”。
图 9 零信任与传统架构中威胁模型的对比
(三)防止横向移动——动态认证
零信任结构最大的安全价值体现在,若企业中某一资源或者设备被感染,并不会威胁到整体的网络环境安全。假设某用户基于漏洞或授权具有访问企业中某服务的权限,而其最终目的是获取企业中的凭证信息,则具体流程如下:
1.恶意用户访问安全网关,安全网关对“访问设备+用户”的组合对象进行审查,当验证该组合对象具有对服务的访问权限后则放行其请求;
2.恶意用户顺利访问到该服务,并进行命令控制(C&C);
3.在传统架构下,恶意用户可以使用权限提升、横向移动等方式从服务所在设备移动到凭证所在设备,从而获取到凭证数据;
4.然而在零信任架构下,任何资源只接受来自于安全网关的访问请求,所以该用户只能再次向安全网关发起访问请求;
5.安全网关再次审查“访问设备+用户”的组合对象,由于这一组合对象不具有相应权限,因此安全网关不会处理其请求。
图 10 零信任中的动态认证
综上,我们可以看到零信任中动态验证的核心在于每个设备访问其他资源时必须经过安全网关,安全网关能够代理处理的请求是有限的,而且每次发起新的请求时都需要进行验证。这一模型有效解决了传统网络架构难以处理的横向移动问题,但我们同时也要注意到,这里的“动态检测”并非基于行为的实时监测,而是类似触发器的“被动动态”。
四、零信任架构的发展现状
谷歌的BeyondCorp是世界上最早提出的零信任架构之一,也是目前落地最为成功的零信任项目。在谷歌、亚马逊等公司的推动下,由美国国家标准与技术研究院(NIST)制定的《零信任架构》标准于2020年8月正式出炉,美国国家安全局(NSA)也与2021年2月发布了零信任模型的指南《拥抱零信任安全模型》。
图 11 谷歌BeyondCorp零信任架构(其中RADIUS、访问代理、单点登录和访问控制引擎共同组成安全网关)
在我国,腾讯、奇安信等安全厂商也陆续发布了自己的零信任架构标准,我国零信任国家标准的制定也与2020年8月开始启动。
五、零信任技术总结——“矛盾”的零信任
由于技术发展的限制,零信任架构在某些方面体现出优势的同时又具有一定的局限性,在我们的探究过程中难免会因此感到矛盾。笔者便整理了这些矛盾点,作为本次零信任技术探究的总结:
图 12 “矛盾”的零信任
参考文献:
[1]http://blog.nsfocus.net/wp-content/uploads/2020/08/NIST-SP-800-207-Zero-Trust-Architecture-202008.pdf
[2]https://www.authing.cn/blog/detail/132
[3]https://www.secrss.com/articles/26251
[4]https://baijiahao.baidu.com/s?id=1655233197639927249&wfr=spider&for=pc
[5]https://www.secrss.com/articles/7187
[6]https://zhuanlan.zhihu.com/p/163799105
如若转载,请注明原文地址