购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 零信任的隐身黑科技

一个网络有多少端口对外暴露,就有多少可以被攻击的点。在传统安全模式中,用户通常具有比较广泛的网络权限,只有在访问应用时才进行身份验证。例如,任何人都能连接财务系统的服务器,但只有财务部员工才拥有账号和密码,可以打开登录页面。服务器在网络层就像一个靶子,攻击者可以对服务器进行漏洞攻击,在登录页面进行暴力破解、SQL注入等操作。

零信任理念主张在网络层也基于身份进行访问控制,避免出现任何人都能发起攻击的情况。零信任系统只允许合法用户连接网络,未知用户根本看不到被保护的服务器,服务器就像隐身了一样。

网络隐身是零信任最引人关注的一项技术。最常见的实现方式是SDP框架中的SPA。下面对这种技术进行详细的介绍。

4.1.1 SPA端口隐藏

通常,一个网站需要把端口映射到互联网上,才能被外部用户访问。使用SPA技术的零信任架构可以做到让网站只对合法用户映射端口,不对非法用户映射端口。如图4-1所示,只有合法用户能连接到业务系统,非法用户完全“看不到”被保护的业务系统和网络。非法用户如果尝试连接隐藏端口,就会发现这个IP地址什么都没有,但合法用户可以正常连接并使用。被保护的网络就像隐身了一样,非法用户根本看不到、摸不着。图4-1中列举的各类网络攻击都无从发起。

图4-1

在介绍端口隐身的原理之前,先讲解什么是端口,黑客怎么攻击端口。

1.什么是端口

如果一个服务器是一栋大楼,那么端口就是大楼的各个出入口,通过不同的入口可以进入不同的店铺和区域。对服务器来说,不同的端口对应不同的服务器程序。通过443端口可以访问HTTPS网站,通过80端口可以访问HTTP网站,通过22端口可以建立SSH连接,通过25端口可以发送邮件……

每个服务器程序都是通过端口与外面的用户通信的。例如,当用户用浏览器打开百度页面时,就是通过百度的443端口与百度的服务器程序通信的。浏览器地址栏里真实的 URL 是https∶//www.baidu.com∶443,用户一般看不到443,这是因为浏览器把端口隐藏了。不信你在URL后面输入“443”,打开的是同一个页面。

图4-2

2.黑客怎么攻击端口

端口是攻防的关键,各类网络攻击基本都是以端口为目标的。黑客在进行攻击前,一般会先收集服务器开放了哪些端口,猜测服务器提供什么服务,然后制定相应的攻击计划。

1)利用漏洞攻击

黑客利用端口扫描工具(例如Nmap)可以从端口的返回信息中了解到很多服务器的信息。例如,服务器的操作系统、中间件、通信协议等,如图4-2所示。

黑客一旦知道了目标服务器的信息,就可以利用相应的漏洞进行攻击。互联网上有很多公开的漏洞库,只要在漏洞库里搜索,就能查到漏洞,如图4-3所示。

操作系统、中间件等软件厂商会从漏洞库里查找自己的漏洞,并进行修复升级。但软件更新后,用户不一定会马上升级,大部分用户用的是带着漏洞的版本。

对黑客来说,这些未修复漏洞的服务器,就是一个靶子,可以随意攻击。

图4-3

图4-4

2)DDoS攻击

除了利用漏洞,黑客还有更简单粗暴的攻击方法。如果发现目标服务器的某个端口是暴露的,就直接利用大批“肉鸡”进行流量攻击,把服务器的资源占满,直接让服务器“瘫痪”,如图4-4所示。

3)自动信息收集

看到这里,你可能想,端口直接暴露在互联网上确实危险,但是哪有那么多人这么无聊,每天在网上扫描漏洞、肆意进攻啊?有的话也轮不到攻击我吧。

错!网上每天都有很多爬虫在大规模地进行自动扫描。很多黑客组织会做一套集群,每天扫描全世界所有的服务器。图4-5就是国内某个公开的服务器搜索引擎,在里面搜索一个漏洞的名字,全世界所有有这个漏洞的服务器马上就会被列出来。所以,你可能已经在别人的目标列表里了,只不过还没攻击你,或者你还不知道而已。

图4-5

3.一般的防御手段

网络攻击很恐怖,常规防御有两种方法。

第一种方法是允许所有人访问目标网站并进行安全过滤,一旦发现恶意行为,就立即阻断访问。这种方法依赖识别恶意行为的规则库,难以防御没有破解方法的新型攻击,也就是我们常说的“零日攻击”。这种防御的思路也有缺陷:只要目标网站是暴露的,它就是一个靶子,坏人可以随时研究它、破解它。例如,WAF是专门防御Web攻击的设备,网上有很多绕过WAF的教程,因为 WAF 是所有人都可以看到的,所以所有人都可以不断地研究它,测试有没有绕过它的办法,如图4-6所示。

图4-6

正是因为以上问题,所以很多重要的系统都不暴露在公网上。在网络上设置白名单,只允许公司的IP地址访问业务系统,公司外的用户IP地址是动态的,无法直接进入白名单,如果需要远程访问,就通过VPN接入。VPN的特点是可以减小暴露面,外部用户看不到由VPN保护的业务系统的端口。

但是VPN也存在问题,就是VPN本身还是要暴露端口的。例如,SSL VPN就要暴露443端口,有端口就有漏洞。图4-7就是笔者在漏洞库里搜索到的VPN漏洞。

图4-7

为什么我们总能听到关于VPN漏洞的新闻呢?就是因为VPN端口始终暴露,坏人可以随时尝试攻击,研究端口有没有漏洞,所以VPN也不是一个完美的解决方案。那么有没有方法能做到一个端口都不暴露呢?有!方法就是——SDP。

4.SDP端口敲门

要实现隐身的效果,SDP网关需要部署在网络的入口处,被保护的网络只留这一个出入口,访问业务系统必须经过SDP网关。

1)SDP的组件

SDP需要管控端、客户端和网关的配合,才能实现隐身效果。SDP管控端可以与网关和客户端连接,SDP客户端安装在用户的计算机上,SDP网关部署在网络入口,这三个组件与零信任的管控平台、客户端、安全网关一一对应。

2)默认关闭所有端口

SDP网关的默认规则是关闭所有端口,拒绝一切连接。SDP网关中有一个SPA模块,这个模块类似于一个动态的防火墙。在默认情况下,SDP 网关上的防火墙只有一条规则——拒绝一切连接(deny all)。这样,任何发过来想建立连接的数据包都会被SPA模块直接丢弃,谁都连不上它的端口。SDP网关就是这么“隐身”的。

3)端口敲门

按照以上做法,“坏人”是连不上了,但是“好人”怎么连呢?“好人”要通过一套特殊的流程才能与端口建立连接。这套流程叫作端口敲门。

前文已经介绍过,端口敲门的原理就像进入一个秘密基地,基地的大门平时是紧闭的,里面有人守着,只有敲对了暗号才会开门,例如,三长两短。

SDP技术要求“好人”在连接端口之前先敲门。

(1)SDP客户端在与SDP网关通信之前,会先发送一个敲门用的数据包。包中带有用户的身份信息和申请访问的端口。

(2)SDP网关监听到敲门包之后,解析包中的身份信息并进行验证,检查身份是否合法、用户申请访问的端口是否得到授权。

(3)如果通过检查,那么SDP网关会在防火墙中添加一条规则——允许来自这个用户的IP地址访问某端口,相当于用户把SDP网关这扇门给“敲”开了。

(4)敲门成功后,用户就可以访问端口了,网关会把用户的流量转发给相应的业务系统,如图4-8所示。

图4-8

注意,这时“坏人”还是不能访问该端口。因为网关只对“好人”的IP地址放行,对“坏人”的IP地址是没有放行的。而且目标端口对“好人”也只是暂时开放,一旦“好人”停止操作超过一分钟,端口就自动关闭。如果“好人”一直在操作,那么 SDP客户端会定期去敲门,保持端口是开放的。

你可能发现,这里有一个问题:如果SDP网关默认所有的端口都是关闭的,那么敲门包是怎么被接收的呢?

SDP客户端会将敲门包发送到SDP网关上某个事先约定好的UDP端口,例如60001,这个端口只监听,不做任何回应。所以,用户可以正常敲门,但黑客会因为端口不对扫描做出反应而认为端口是关闭的。

以上就是SDP端口敲门的原理。因为在敲门过程中,要先发送一个用于验证身份的敲门包,所以这个过程也被称为单包授权(Single Packet Authorization,SPA)。

5.敲门包详解

SPA敲门包中包含用户的身份信息、申请访问的目标信息、身份凭证等,SDP网关会对用户进行身份校验,并根据申请信息对用户开放端口。具体来说,SPA敲门包应包括如下信息。

(1)用户身份信息,用于识别敲门包来自哪个用户,判断该用户是否有访问权限。

(2)设备信息,识别用户设备,判断该设备是否被允许接入零信任网络。

(3)随机数,用于防止重放攻击。

(4)时间戳,过期后SPA敲门包失效。

(5)客户端IP地址,SDP网关会把这个IP地址作为源IP地址,并暂时对其开放端口。

(6)申请访问的IP地址和端口,SDP网关会把这个IP地址作为目标IP地址,并向其转发用户的访问请求。

(7)加密密文,SPA客户端会用事先颁发的证书对前面的信息进行加密,SDP网关以此验证用户证书是否合法,进而判断用户身份是否合法。

4.1.2 端口隐藏的效果

如果使用端口扫描工具扫描SDP网关,那么会发现所有端口都处于关闭状态,如图4-9所示。但是使用SDP客户端可以正常打开网站。

图4-9

端口隐藏有如下两个作用。

第一,黑客没有攻击的意愿。黑客的攻击通常都是从收集情报开始的,后续怎么进攻完全依赖前期收集到的情报。如果黑客只是在漫无目的、广撒网式地扫描,那么当他探测不到服务器时,就意味着他会认为这里没有运行任何有价值的服务,因此不会有进一步攻击的意愿。互联网上的大部分攻击都采用侦察到哪里存在漏洞,就攻击哪里的模式,SDP的端口隐藏技术可以有效地对抗这类攻击。

第二,黑客的攻击手段受限。即使黑客掌握了零信任系统的网络信息,也无法绕过SPA攻击后面的业务系统。黑客看不到被保护的系统,SQL 注入、漏洞攻击、XSS、CSRF 等攻击根本无从发起。

安全人员在进行攻防实战时,一个重要工作就是封锁IP地址。而SPA相当于把所有IP地址都封锁了,只有身份合法的IP地址才可以临时进入。这是一个相当简捷有效的防护手段,在SPA面前,绝大多数网络攻击都是无效的。

零信任网络相当于加了一层隐身防护罩。通过隐身能力,零信任架构在不安全的互联网上构建了一个安全的暗网。

4.1.3 SPA技术的增强

SPA敲门技术是不断发展的,下面介绍几种最新的用于增强端口敲门强度的技术。这些技术可以有效避免攻击者对SPA技术的破解和篡改。

1.UDP敲门之后的TCP敲门

上节介绍的敲门流程是在建立连接之前,单独发送一个UDP敲门包进行校验,这种方式也被称为UDP敲门。还有另一种TCP敲门技术,可以在与业务系统建立TLS连接时进行校验。TCP敲门的具体过程如下。

(1)SDP客户端在TLS握手过程中,向网关发送client hello消息,扩展字段中包含用户的身份信息。

(2)SDP网关验证TLS client hello扩展字段中的身份信息。

(3)若SDP网关验证成功,则将用户的数据包转发至目标服务器。

(4)若SDP网关验证失败,则中断连接。

TCP敲门相当于对UDP敲门的补充。假设用户已经通过UDP敲门成功了,那么当SDP对该用户的IP地址开放端口时,对与用户同一IP地址的“坏人”也开放了端口。在使用了TCP敲门技术之后,“坏人”只能看到开放的端口,无法建立连接。因为“坏人”发起的 TLS 连接请求中没有合法的身份信息,无法成功与SDP网关建立连接,所以无法进一步发起攻击。这就是TCP敲门的作用。

TCP敲门技术的拦截效果非常明显。对没有TCP敲门和有TCP敲门的两个网关持续发送建立连接的请求,观察网关的连接数,就会看到没有使用TCP敲门技术的网关的连接数直线上升,而有TCP敲门技术保护的网关拦住了非法的连接请求,连接数并不会大幅上升。

2.敲门包的动态密钥

SPA技术有一个可被攻击的点,就是SPA包是可以伪造的。攻击者只要伪造了SPA敲门包,就可以敲开门。伪造的方式可能是直接构造包,也可能是捕捉合法用户的SPA包,修改其中的信息。

为了防止被破解和篡改,需要对SPA敲门包进行加密,而加密的密钥就是SPA技术的关键。前文介绍过SPA包是有加密机制的,所以攻防的焦点就变成了能否破解密钥。谈到加密,众所周知,算法不是关键,密钥才是关键。如果所有用户都使用相同的密钥,那么安全性就很差。为了安全,应该做到每个用户、甚至每个设备都使用不同的密钥,简单来说就是要实现“一机一钥”。

SPA的密钥分发是一个难题。因为在默认情况下,零信任的服务端是隐身的,在客户端未进行身份验证时,无法与服务端连接。所以,密钥只能事先分发,或者在 SPA 的过程中分发。密钥的分发方式主要有以下3种。

1)客户端嵌入密钥

事先在客户端中嵌入密钥,再交给用户进行安装、使用。这种方式比较方便,但无法做到一机一钥。

2)用激活码生成密钥

管理员为每个用户分发一个激活码。当用户安装客户端后,在登录过程中,让用户输入自己的激活码,客户端以激活码为种子生成密钥。这种方式较为麻烦,但可以实现一机一钥。

一种优化的方式是,让用户在下载客户端安装包前进行身份认证,系统根据用户身份分配激活码,并将其插入下载文件的文件名中。这样,用户下载的安装文件的文件名中带有自己的激活码,当用户登录时,客户端可以自动读取激活码进行激活,激活过程无须用户参与,用户体验比较好。

3)将临时密钥转换为正式密钥

通过在客户端安装包中嵌入临时密钥的方式让用户登录。在登录成功后,管控端为每个登录成功的客户端都自动下发一个在后续通信中使用的正式密钥。临时密钥要设置失效条件,例如,3天后失效或100人用过之后失效。正式密钥在一定时间内有效并与用户的设备关联,每个设备都对应唯一的密钥,如果设备丢失,那么可以在服务端删除密钥。这种方式兼具便捷性与安全性,可以与方法(2)结合使用。

图4-10

以上就是主要的分发SPA密钥的方式,每种方式都有优缺点,企业应该根据安全和体验方面的要求进行权衡,选取合适的方式。

4.1.4 管控平台的SPA防护

除了SDP网关保护的业务系统,SDP管控平台也会成为黑客攻击的目标。保护SDP管控平台有两种方式。

(1)在SDP管控平台上嵌入SPA模块。当SDP客户端到管控平台进行身份认证时,也需要进行SPA敲门。在敲门成功后,SDP管控平台才开放认证端口,如图4-10所示。

(2)在标准的SDP架构中,管控端和网关都是暴露的,但其实可以根据需求灵活调整:将SDP管控端隐藏在SDP网关之后,利用网关保护管控端。这种架构需要解决SDP客户端如何进行登录认证的问题。简单来说,SDP网关需要支持登录认证请求的转发。首先,SDP客户端发起UDP敲门;然后,SDP网关对用户开放SDP管控端的认证端口;最后,SDP客户端发起登录认证请求,由SDP网关转发给SDP管控端进行认证,如图4-11所示。

图4-11

4.1.5 双层隐身架构

有一个很容易引起误解的地方:在使用了SPA技术后,安全网关还是要对外映射IP地址的,只不过网关的SPA模块会拦截未授权的请求,网络通路并不是完全封闭的。

有一种云网关+连接器的架构,可以实现近似“网络完全封闭”的效果。下面将对这种架构进行详细介绍。

1.连接器的原理

云网关+连接器的架构如图4-12所示。其中,云网关相当于SDP或零信任的网关,客户端相当于SDP或零信任的客户端。连接器部署在企业网络中,起到连接企业网络和云网关的作用。为了简化问题,我们先忽略管控平台,具体的工作流程如下。

(1)连接器主动与云网关建立逆向隧道。

(2)客户端发起的流量先到云网关,再沿隧道的回路转发到连接器。

(3)连接器把流量转发给企业的业务系统。

用户访问业务系统的数据包先被发送到云网关,云网关再依据路由规则,将发给业务系统的包统统转给连接器。连接器在收到数据包后,通过本地网卡将数据包转给业务系统的服务器。连接器与云网关之间相当于建立了一条IPsec VPN隧道。

在这种架构下,企业不用为连接器对外映射IP地址和端口,连接器只要能上网就能建立隧道。此时,企业网络只有向外的连接,没有向内的连接。这样,攻击者就彻底被隔离在网络之外了。

图4-12

这里有一个细节:为什么连接器不需要对外映射IP地址和端口呢?简单来说,这是因为连接器是主动向外建立隧道的,连接器本身并不对外提供服务,云端与连接器的通信是沿着隧道的回路进行的。如果想不明白,那么可以想想我们平时在家上网的场景:家里的计算机是不对外映射IP地址和端口的,那么网站是怎么把信息发给计算机呢?计算机主动向网站发起连接,网站是顺着连接的回路把网页发下来的。

2.连接器的好处

(1)企业不用对防火墙进行任何更改,连接器可以部署在任何地方。理论上,企业没有对外开放服务,不用备案。

(2)各种DDoS攻击和漏洞扫描都不可能发生。由于扫描工具里要填写目标IP地址,如果企业什么IP地址都不暴露,那么攻击者别说扫描端口了,连IP地址都不知道怎么填。这样,企业网络就相当于彻底隐身了。

3.双层隐身

这种模式既省心又安全,本质上是把风险转嫁到云端了。由于云端要对外映射IP地址,因此云端安全就显得至关重要。

当然,云端本身是个SDP网关,具备SPA机制。所以,云端虽然还要暴露IP地址,但是不会暴露端口,也是有安全保障的。

将连接器与SPA结合,企业网络相当于具备了两层防护,第一层是SPA隐藏端口,第二层是连接器不暴露IP地址。整体的安全性得到了保障,如图4-13所示。

图4-13

4-14

4.连接器在内网的应用

双层隐身架构可以不放在云端,完全部署在企业网络中。在这种部署方式下,零信任网关部署在企业的DMZ区,连接器部署在企业内网,如图4-14所示。

这种部署方式的好处是缩小了内网对 DMZ 区的暴露面。如果没有连接器,企业就要打通网关到每一个业务系统的连接通路,内网的业务系统都会暴露给零信任网关。应用了双层隐身架构后,流量全部由连接器转发,网关不用再与业务系统直连,只需让连接器访问网关即可,网关和业务系统不用打通,网络配置特别简单。

4.1.6 无端模式隐身

SPA 的安全性是极好的,但是在便捷性上有一个缺点——用户必须安装客户端。因为敲门是一个特殊的流程,计算机上的默认浏览器无法执行,所以必须有专门的客户端。一般终端的产品比较难运维,容易遭到用户排斥。

图4-15

下面介绍一种折中的方案,不用安装客户端也能实现一定的隐身效果。

1.无端模式的架构

在无端模式下,用户不用安装客户端,但需要打开一个Web形式的门户网页,门户网页来自管控平台。在默认情况下管控平台不隐身,只有安全网关是隐身的,如图4-15所示。

无端模式的具体工作流程如下。

(1)用户在Web门户网页上登录。

(2)登录后,零信任管控平台会通知安全网关,添加一条防火墙规则——对该用户的IP开放所需的端口。

(3)零信任管控平台有一个“IP地址开放规则”的定期回收程序。回收程序定期检查用户的会话是否存在,如果用户已经很长时间没有操作了,则清除该用户的端口开放规则。

简单总结一下,无端模式的原理就是,当用户登录时,零信任管控平台帮用户做了敲门的工作,用户可以实现正常访问,而攻击者无法连接安全网关。

2.无端模式的优缺点

无端模式也能实现隐身效果,但只有安全网关是隐身的。因为用户要在管控平台登录,所以管控平台始终是暴露的。整体来看,无端模式的用户体验好了,但是安全性差了。

无端模式更适用于无法强制要求其安装客户端的用户和场景。例如,第三方人员、外包团队、供应商访问内部业务系统。

4.1.7 隐身安全能力总结

隐身技术为企业带来的价值非常大,可以避免绝大多数的网络攻击、渗透测试。尤其是对于比较大的公司,内部有几百个系统,一个一个安装补丁、修复漏洞,效率很低,不如将统一入口隐身,先解决主要问题,再慢慢补漏洞。

正因为SPA的价值巨大,所以其安全性也备受关注。前文已经介绍了SPA的防破解、防篡改能力,下面将对SPA的安全能力进行总结。

(1)使用SPA后需要对外映射端口吗?一般的方案要映射,双层隐身架构不用映射,但连接器需要能上网。

(2)如果黑客捕捉到合法的SPA包进行重放攻击,那么能防住吗?SPA包中有随机数,可以防重放。

(3)SPA包可不可以伪造?SPA包做了加密,可以防伪造、防篡改。

(4)如果黑客获取了用户的账号和密码,并且下载了客户端,那么还能防吗?SPA过程需要验证加密证书,证书与设备绑定,所以只获取账号和密码及客户端是没用的。

(5)如果证书也泄露了,那么怎么防?这是一个重要的问题,如果证书泄露了,SPA就失效了,所以拼技术拼到最后,就是拼证书的保存机制,最佳的方式应该是与硬件结合。 K4ZdAkQAlcSjaLziWBqHe72Mr0A7y2j4ENH/PE8dYLTkfyzxCzJGpfMwsYxS1qA9



4.2 零信任安全网关

零信任安全网关是最核心的策略执行点,在用户访问资源的过程中,强制实施细粒度的访问控制。本章将对零信任安全网关的技术原理进行详细介绍。

4.2.1 零信任架构的中心

无论是 NIST、BeyondCorp,还是 SDP,在所有零信任架构中,最核心的部分都是“安全网关”,安全网关的基本作用有两个。

1)分隔用户和资源

用户与资源处于不同的网络中,用户想获取资源,只能通过安全网关进入业务系统,安全网关就像门卫,放行合法的,拦住不合法的。用户不能直接接触业务系统,必须先经过安全网关的认证才能与业务系统连接。

2)执行安全策略

当用户的访问请求转发到安全网关后,安全网关解析出请求中的用户信息,向管控平台询问用户的身份、设备、行为等信息是否合法,并根据结果进行放行或拦截。

由于所有的访问请求都先经过安全网关,再到达业务系统,所以安全网关可以挡住大部分针对业务系统的攻击。由于所有的连接都集中在一个地方,所以在发现异常行为后,对异常行为进行封堵或打击也更加容易。

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

4.2.2 Web代理网关

BeyondCorp 是最早落地的零信任项目。BeyondCorp 网关的名字叫“访问代理”(Access Proxy)。实际上,最初的BeyondCorp访问代理只是一个“Web代理”,只支持Web网站的接入,不支持C/S架构的应用。这个网关可以用类似Nginx的代理服务器实现。

1.Web代理网关的功能

1)转发请求

这是代理服务器最基础的功能。Web 代理网关根据用户访问的域名不同,将请求转发到Web代理网关后面的不同服务器。具体来说,首先要将用户的访问流量导流到Web代理网关上,例如,把业务系统的域名DNS对应到Web代理网关的IP地址,当用户访问业务系统域名时,流量自然会被发送到Web代理网关的IP地址上。Web代理网关在收到用户的访问请求后,通过数据包中的域名信息识别出用户的访问目标,然后判断请求的合法性,将合法请求转发给业务系统的真实服务器,并将返回的数据按原路发给用户(另外,为了兼容性,应支持转发时记录用户源IP地址。)

2)获取身份

客户端通常会在cookie或数据包头部加入代表用户身份的token。如果只修改数据包头部,那么Web代理网关可以提取信息进行校验,不会影响正常的业务逻辑。Web代理网关可以通过解析数据包头部信息获取用户身份,设备信息也可以用类似的方式进入网关。

3)验证身份

Web代理网关可以将访问者的身份信息发给管控平台,由管控平台进行对比和判断,并返回验证结果。这一步会严重影响 Web代理网关的性能,为了提升验证速度,可以在Web代理网关上也存储一份身份信息。

4)放行或拦截

Web代理网关根据验证结果决定将访问请求转发到真实的服务器或报错页面上,BeyondCorp的报错页面会引导用户自助申请权限。

2.Web代理网关的好处

1)互联网收口

只有Web代理网关是开放的,企业的业务系统不直接暴露在互联网上。Web代理网关前面是互联网用户,后面是企业网络中的各类应用资源,用户访问应用必须经过Web代理网关的校验和转发。

2)预验证、预授权

只有通过身份验证的用户才能接入企业资源,其他人会被拦在外面,完全接触不到企业资源,相当于在企业资源外加了一层防护罩。

3)不会暴露业务系统的真实IP地址

用户只能通过域名访问业务系统,只有Web代理网关知道业务系统的真实IP地址。用户只与Web代理网关直接交互,与业务系统不处于同一网络。

4)持续监控

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

4.2.3 隐身网关

SPA模块相当于一个具有隐身功能的网关。隐身网关的作用类似于防火墙,对用户的身份进行检测,对合法用户打开防火墙的端口。对非法用户来说,所有端口都是关闭的。

图4-16

如果把隐身网关放在Web代理网关之前,则可以增强安全网关的“隐身”防护能力,抵抗针对Web代理网关的扫描和攻击,如图4-16所示。

隐身网关的工作流程如下。

(1)默认关闭所有端口。如果非法用户对隐身网关IP地址进行扫描,那么会发现端口都是关闭的。

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

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

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

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

4.2.4 网络隧道网关

一个完整的零信任方案应该支持B/S场景和C/S场景。如果只有Web代理网关,那么无法支持C/S架构业务系统的访问,远程运维连接SSH、连接数据库等工作都难以进行。当然,RDP和SSH也有Web形式的方案,可以让这两种协议也经由Web代理网关,但从用户体验和使用习惯上来讲,这些并不是最佳方案。

图4-17

另外,企业里可能有些老旧的客户端或者浏览器插件使用的是自己的通信协议,这些场景中的问题无法用Web代理网关解决,只能在客户端的网络层抓包,再通过网络隧道转发。

因此,零信任网关一般有支持网络隧道的组件,如图4-17所示。在用户访问Web网站时经由Web代理网关,在其他C/S架构的场景下经由网络隧道网关。

很多零信任产品是用成熟的VPN技术来实现网络隧道网关的,BeyondCorp也把C/S架构的场景交给了VPN。VPN的原理简单来说就是通过设置虚拟网卡和路由表,拦截所有流量,由虚拟网卡将流量转发给网关,由网关进行身份和权限校验,然后将合法的流量转发到业务系统的服务器上,进行正常通信。为了提升用户体验,还可以增加隧道保活、断线重连等机制。

4.2.5 Web代理与隧道网关的关系

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

Web代理网关可以在应用层进行安全策略控制,对不同应用、不同URL设置不同的安全策略。Web代理网关的管控粒度比隧道网关更细。

所以,隧道网关与 Web 代理网关是相互补充的关系。如果因为隧道网关能支持所有场景,就放弃Web代理网关,那就是“丢了西瓜捡芝麻”。

4.2.6 API网关

隧道网关可以覆盖所有访问场景,但无法管理服务器之间的访问。服务器之间的访问需要API网关来管理,如图4-18所示。

图4-18

当第三方服务器调取被保护资源的API时,需要进行身份验证和安全过滤。具体流程如下。

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

(2)通过API网关的身份验证。多数API是HTTP或HTTPS的,所以这个过程与通过Web代理网关的身份验证过程类似。第三方服务器在通信时,将自己的身份信息插入数据包的头部,API 网关从数据包头部获取身份信息,并转发给管控平台进行验证,根据验证结果决定是否放行。

(3)通过API网关的安全过滤,检查是否存在敏感数据泄露、SQL注入、PHP注入、恶意代码、XSS攻击等情况。API网关要对异常行为和网络攻击进行实时拦截。

(4)正常通信。合法的请求会由API网关转发给API服务资源。

4.2.7 其他代理网关

零信任安全网关可以通过不同的组件来覆盖更多场景。例如,运维场景、物联网场景等。运维代理网关和物联网网关的架构如图4-19所示。

图4-19

在运维场景下,运维代理网关需要支持SSH、RDP等协议,支持对服务器、数据库进行运维,可以对用户的行为进行监控。除了满足常见的安全运维需求,运维代理网关还要支持细粒度的访问控制策略。例如,当通过运维代理网关操作带有机密标签的数据时,触发二次认证或者上级审批等操作。

在物联网场景下,物联网网关需要支持常见的物联网通信协议,支持对接各种协议的物联网设备,把各类协议(如 ZigBee、Lora、蓝牙)统一转换为标准协议(如 MQTT、HTTP)与后端系统进行通信,满足常见的物联网通信、边缘计算需求。物联网网关还要支持细粒度的访问控制策略,贯彻零信任的理念。例如,对物联网设备的身份进行校验,对设备的安全状态进行检测,基于多种因素进行授权。

4.2.8 网关集群

到这里已经形成了一个完整的零信任安全网关。不过这只是单机版,只适用于中小型企业。大型企业还有高性能和高伸缩性的需求,支持水平扩展是零信任安全网关必须具备的核心能力之一。

图4-20

(1)高可用:所有流量都要经过网关转发,一旦网关出现问题,所有用户都会受影响,所以必须有高可用方案,一个网关坏了,自动切换到另一个。

(2)支持集群:大型企业用户量大,一个网关性能肯定不够,所以必须支持集群,通过负载均衡增加并发数,支持动态扩容,线性增强整体性能,提升高可用性。

(3)支持多数据中心部署:业务系统的服务器分别部署在多个数据中心或者多个公有云上,如图4-20所示。用户可以通过零信任客户端直接访问各个数据中心的业务系统。

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

网关的集群方案与零信任架构中的管控平台密不可分。管控平台管理所有网关,决定用户在什么情况下该连接哪个网关。网关间的负载均衡策略、数据同步等机制比较常规,在此不再赘言。

图4-21

4.2.9 加密传输

零信任客户端和零信任安全网关之间通过加密协议进行流量传输,避免流量被窃听、被篡改。安全网关最常用的协议是HTTPS,在此基础上,SDP标准中提到应该实现mTLS加密,避免中间人攻击,国内不少厂商还会在此基础上再封装一层UDP进行传输。下面将对这几种加密传输方法的原理进行简单介绍。

1.SSL卸载

零信任客户端与零信任安全网关之间通常使用HTTPS进行通信,也有些企业的业务系统希望使用HTTP进行通信。因此,零信任安全网关应该支持SSL卸载,安全网关对前半段和后半段分别使用不同的协议进行传输,用户与网关之间使用网关颁发的证书进行通信,如图4-21所示。

反过来,将零信任安全网关的SSL卸载应用于未使用安全传输协议的企业,可以起到保护作用,企业应用无须改造即可实现数据在互联网上的安全传输。

2.mTLS加密

mTLS是一种需要客户端和服务端双向认证的加密协议。普通的TLS只要求客户端验证服务端的证书,服务端不用验证客户端。其实,TLS标准中是包含mTLS的,只不过大部分网站是面向公众的,允许匿名访问,验证客户端的证书意义不大,所以为了使用便捷,大部分网站只支持单向TLS。

在零信任架构中,用户群体相对固定,如果特别担心传输的安全性,那么可以使用 mTLS抵抗中间人攻击等安全风险。当用户连接业务系统时,要先上传身份证书,通过验证后,才能建立连接,访问相应的系统。由于黑客没有客户端证书,所以即使黑客监听、拦截了通信流量,也无法伪装成用户与服务器通信。

图4-22

mTLS的流程如下。

(1)网关和客户端安装各自的加密证书。

(2)当建立连接时,双方交换、检查对方的证书是否合法,检查内容包括公钥、签名、CA、域名、有效期等。

(3)双方协商接下来的通信要采用什么加密方案。

(4)在使用密钥加密后,进行通信。

3.国产加密

在国内,安全网关除了支持AES、RSA等国际加密算法,还需要支持国产加密算法,保障数据传输安全,如图4-22所示。在国产加密算法中,SM1、SM4、SM7、祖冲之密码(ZUC)使用对称算法;SM2、SM9使用非对称算法;SM3使用散列算法。SM1是通过硬件实现的,最常用的是SM2、SM3、SM4。很多企业使用开源的GmSSL支持SM2、SM3、SM4国产加密算法。

4.UDP加密传输

有些零信任方案选择了最新的 WireGuard 协议进行通信加密。WireGuard 协议简单理解就是在正常的HTTPS通信上进行封装,将正常通信的TCP包作为body部分,构造一个新的UDP包,通过UDP在互联网上进行加密传输。

WireGuard的通信流程如图4-23所示。

(1)零信任客户端创建虚拟网卡,抓取用户流量。

图4-23

(2)通过SPA UDP敲门,向隐身网关申请放行。

(3)与网络隧道网关建立连接。WireGuard将抓到的TCP数据包进行UDP封装,在封装过程中进行加密。WireGuard采用Cryptokey Routing加密方法,客户端和网关各有一对公钥、私钥,并将公钥发给对方。通信时先用私钥进行加密,对方再用公钥解密。公钥、私钥与用户和设备绑定,每个设备都用一套独立的公钥、私钥。这种强度的加密基本是不可破解的。

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

(5)验证成功后,使用用户的公钥解开UDP包,还原成TCP数据包,通过HTTP转发给企业应用。由此可见,用户到企业应用之间使用TCP通信,只不过在传输过程中从用户到网关这一段进行了UDP封装。

WireGuard协议的好处如下。

1)隐身

通信过程使用UDP,与SPA技术的UDP敲门搭配,在整个通信过程中都不用开放TCP端口(一般WireGuard只需要开放UDP 51820端口)。

2)效率高

WireGuard 协议的特点就是代码非常简洁。WireGuard 只有四千行左右的代码,传统 VPN至少有几万行代码。代码少,就意味着运行更快、更稳定,效率更高,漏洞更少。

3)双向加密

WireGuard协议采用双向加密,与mTLS一样,能够更好地抵抗中间人攻击。

4)“实名制”网络

上文从加密角度介绍了WireGuard协议的Cryptokey Routing技术。其实这种技术与零信任的持续身份认证原则也特别契合。WireGuard 公私钥加解密的过程能证明数据包的身份。这相当于让网络中流动的所有数据包都具有身份,没有身份的包会被零信任抓出来丢弃掉。也就相当于给网络做了“实名制”认证,真正做到了针对每个包的持续身份认证。

图4-24

4.2.10 关键能力总结

零信任安全网关通常会部署在企业网络的入口,对企业影响非常大。因此,是否支持各种协议、是否支持高可用,以及加密通信的性能和稳定性,是零信任安全网关最重要的评价指标。上文已经介绍了零信任安全网关的组件和原理,下面将对零信任安全网关需要具备的能力进行总结,如图4-24所示。

(1)网络隐身:默认关闭所有端口,只允许合法用户建立连接。

(2)加密传输:通过各类加密算法保护通信传输的安全。

(3)代理转发:接收用户的访问请求,支持各类业务访问场景的统一代理转发。

(4)持续校验:在流量转发过程中,识别每个访问请求的用户身份和申请访问的目标,根据管控平台下发的安全策略,进行身份和权限的校验。

(5)基础能力,包括以下5项。

a)自身防护:作为网络的入口,安全网关可能成为各种攻击的目标。因此安全网关应该具备一定的自身防护能力,8.8节将对此进行详细介绍。

b)集群部署:支持企业的高可用、集群、分布式部署需求,保障安全网关的快速、稳定运行。

c)日志记录:实时上报用户的访问日志,包括用户身份、设备信息、访问时间、目标资源、占用流量等,以便管控平台进行安全审计、风险分析和信任评估。API 代理会记录API调用者的身份、IP、访问时间、API服务响应、流量大小等信息。

d)会话控制:管理用户的会话连接。根据管控平台的指令,执行中断会话等操作。

e)流量控制:为保障安全网关的稳定运行,对访问请求的长度、频度、时长、并发数、大小、速度等指标进行管控。 K4ZdAkQAlcSjaLziWBqHe72Mr0A7y2j4ENH/PE8dYLTkfyzxCzJGpfMwsYxS1qA9



登录后阅读更多精彩内容
登录
点击中间区域
呼出菜单
上一章
目录
下一章
×