一、背景
大家好,非常高兴给大家分享《办公网零信任安全建设》这个话题。
分享之前我想先简单介绍一下我们公司,趣加是一家游戏公司,主要了是面向海外市场,所以有很多同学了可能没有听过我们公司;但喜欢玩游戏的同学可能听过一个战队,就做fpx那其实就是我们公司的一个战队。
二、分享内容
我今天要分享的内容主要是三点
首先是我们为什么要做零信任安全建设,前面很多老师讲过了零信任的一些应用场景和零信任的理念,这里了我简单提一下我们趣加为什么要去做零信任建设;第二个是我们如何去设计零信任架构,零信任建设主要是结合业务去实现,这里了我想以趣加为例子,分享一下我们的建设思路;第三点是我们在建设实践过程当中具体如何去做的,做了哪些事情以及一些细节性的问题;
三、为何要做
首先让我们为什么要去做零信任建设,很多重视安全的公司了需求来源分为两类,一类是外部的驱动,另一类是内部驱动;这里我们我们趣加其实就是内部驱动,然后去做一些安全方面的事情事情
为什么这么说呢?因为我们是一个游戏公司,游戏公司是非常重视安全问题的;所以我们本身就有安全方面的一些需求,第二个的就是我们整个团队的都对安全是比较重视的,因为一款游戏的安全是可以决定游戏的生命周期的,在推广零信任的时候了团队的配合程度也是非常重要的;第三点就是我们把零信任安全建设方案那么跟领导汇报之后,领导也是非常支持我们去做这样一件事情。
3.1 安全需求
刚才说到了我们是有安全需求的,那我们趣加为什么有这样的安全需求呢,这里我举一个例子。
3.1.1 网络架构
我们公司主要将网络了分为两个网络,分别是内部的办公网络,和面向公众的网络。
基于这两个网络建设的安全体系,其中内部办公网了默认认为是可信网络,也就是说你只要连接到这个办公网络;你访问内部的一些服务,他都认为是可信的,你只需要经过简单的一些身份验证就可以进行操作;但是这里有一些问题,比如说在去年2020年哪疫情期间,很多同事都在家办公,在家办公要访问内部办公系统就得通过vpn去连接内部网络;这样的网络架构其实是有一些弱点的;
VPN只能保证这个身份的可信,但是并不能保证设备的安全性,另外很多时候连接了VPN,但访问的流量并不需要使用VPN;比如说微信以及访问一些非办公网内的网页,其实是浪费vpn的资源;我们在想如何不使用vpn,保证安全性的同时又能访问到内部办公网内部的服务,这个时候零信任的理念其实是非常合适的。
3.1.2 零信任理念
这里了我总结了几点零信任的一些理念,这里列了四条
第一点是默认不信任,默认不信任用户也不信任设备以及不信网络,我们之前的一个办公网的结构了其实就是默认信任网络,以及默认信任所有设备;这一条理念其实是可以补齐我们的一些短板
第二点是动态的访问权限,我们之前的内部办公网只要你连接到这个网络,并且身份经过简单的一次校验就可以操作后面的权限,这里也能加强我们的身份验证,因为它在登录之后还是一直是持续在验证;比如说我认为某个用户不合法,我随时可以把这个用户删除,它之后的访问就立即给他前端了。
第三点是减少资源的暴露面,缩小攻击的范围,之前我们要访问内部服务,只需要链接办公网就可以直接连接服务,然后服务自己去权限控制,有一些服务其实安全性是挺弱的,比如说弱口令等等,攻击的范围还是是比较广泛的
第四点也就是持续的评估与安全响应,通过多个维度来判断某一个请求是否足够安全。
3.2.3 建设目标
结合网络现状和零信任的一些理念相结合,我们提出了三点建设目标
首先是让员工更安全和便捷的访问公司内部服务,第二点是确保访问者的身份和网络环境是安全的才允许访问,第三点是解决访问日志分散无法追溯用户的行为,那么主要是要做到这三点,这是我们建设的初衷。
3.2 重视安全
前面提到了我们游戏公司非常重视安全,注重安全的原因主要是安全能够直接影响公司的收入,这里我举两个游戏行业的例子
3.2.1 源码泄露场景
首先说一下源码泄露案例,如果源码泄露会发生什么事情
很多同学可能听过传奇私服或者玩过这个传奇,在2002年的9月份传奇的源码通过意大利服务器源码泄露了,很快就传到国内,在短短的半年里就有500多家私人搭建传奇服务器,很多玩家开始从官服转到私服中去,传奇运营商收入大大受到影响,因此不再给传奇的开发商支付代理费用,导致这个开发商面临破产风险,后来甚至被收购。从这个例子里可以看到一款游戏的安全可以决定它的生命周期。
3.2.2 高危漏洞场景
还有一个高危漏洞场景,在美国Def Con 2017的会议上,有一个黑客跟媒体透露他在过去二十年里面,利用网络游戏漏洞去赚钱的一些方法
并且现场演示在调试器中输入命令,给他游戏里的账户增加了很多很多的金币;不同的游戏使用不同的方法增加货币,相同的是添加的金币或者道具主要通过第三方市场进行交易来获利;在这个例子中可以看到一款游戏的安全性,可以直接影响公司收入营收;所以我们团队本身是非常重视安全的,老板的安全重视程度也给我们强有力的支撑,让我们能够安安心心的去建设零信任安全。
四、架构设计
在确定好做零信任建设的事情之后,我们主要做了三件事情
第一点是确定理想的一个目标,确定好目标之后就是熟悉现有网络架构;因为零信任并不是一个产品,把这个产品开发完成完就完事了,它非常贴合业务线,所以要熟悉当前的网络结构,然后再把目标和现状两者相结合得到一个可以实施的目标方案;
4.1 理想中的目标
这张图是我们理想中的目标效果,在图中可以看到我希望所有的访问用户的都通过安全网关代理去访问这些内部服务
在代理访问之前,我们会去验证访问者的身份是否合法,同时验证这个设备是否为内部设备,以及他的请求参数当中有没有非法请求,另外了还有一些他的一些异常行为,比如说他平时都是在工作时间去访问这个服务,突然有一天他在凌晨一点两点去访问这个服务,这个时候了我们就会将他的这个安全等级变低,需要他二次验证来提升安全评分;
实现这些目标,需要做到左边的几项,比如说资源统一管理和统一控制外部访问,比如说我们需要去统一管理这些用户,统一控制这些设备,统一让用户通过安全网关进行访问内部服务;所以这些业务需要配置一些防火墙限制,只允许安全网关去访问它;另外两点是希望动态调整访问控制策略以及希望能减少VPN的使用。
4.2 熟悉现有架构
确定好理想目标后,得熟悉一下现有的网络结构,目前的网络现状主要是网络可信和身份验证两个机制,所以我着重了解这两个。
4.2.1 网络准入
先来说一下pc设备,比如说windows mac linux这些设备要接入内部网络可以有三种方式,首先是在家办公的场景会通过vpn去连接,连接vpn的时候需要登录账号,第二个是在公司办公的场景一般是通过wifi连接我们的网络,连接wifi之后还会需要通过访问登录账号和密码来确认身份,最后一种是办公网的网线接入;其实手机之类的移动设备接入方式和电脑基本一致,还有一些哑巴设备比如说打印机摄像头主要是通过网线去连接内部网络。
这里了讲一下目前网络的几点问题
第一点是一个用户连接到我们内部往来之后,如果他也想访问某一个服务,完全是靠这个服务本身进行权限控制,没有统一的身份去控制它是否能够访问;有一些系统是有一些弱口令或者薄弱账号的,这是从安全性角度思考;
第二点是vpn的稳定性无法保证,比如有些员工在高铁上,需要访问办公网内部的服务,这个时候得先通过VPN连接到内部往来,VPN是个长链接不一定稳定一直稳定;同时还有一些流量并不是需要通过vpn才能访问的,但都通过VPN显然增加了网络直接耗费;
第三点是用户和设备和应用程序都在同一个网络中,这是不合理的,应该是我们不同的部门在不同的一个网络隔离区域中,比如开发部门有一个开发网络,行政部门有一个行政的网络,网络之间需要有一个隔离。
4.2.2 身份认证
身份认证主要是账号验证这方面,账号我们主要由两部分组成
一部分是公司的统一账号,另一部分就自建账号,目前正式员工都有这样一个统一账号,但是一些外包人员他就想访问某一个业务,会在业务系统上给他开了一个自建的账号,还有一部分系统因为使用开源系统,改造起来比较麻烦,还停留在自建账号上。
4.3 调整后的方案
在熟悉现有结构后,结合之前理想中的目标,我们需要设计一套可落地的架构,主要是这个图,在图中可以看到,所有的请求都通过通过终端去访问办公网应用,都要经过一个安全网关
这个安全网关他主要是一个代理的作用,在代理之前的他会调取安全策略中心的评估数据,通过这个数据判断请求是否合法,如果不合法会抛弃掉这个人请求;判断请求是否合法主要依赖于安全策略中心,安全策略中心的决策主要是依据设备管理中心和身份证的重心的数据
设备管理中心主要存储终端的安全基线数据,同时对设备签发证书,终端则会上报安全数据,比如进程是否安全、网络是否安全以及是否有锁屏,证书管理来主要是验证这个设备是否公司的合法设备。
比如有人使用私人设备去访问公司的办公网络,我们是不允许的,设备管理中心就会给此设备评分比较低;另外一个依据是身份证在中心,主要是验证一下用户的一个身份信息是否合法,综合这些信息就得到了一个安全评分,安全评分比较低的时候我们可能会通过人脸识别或者其它的多因子认证来提升他的一个安全评分,最终决策此请求是否可以访问我们办公网的应用
4.4 建设模块
刚才我们通过架构图简单降到了5个模块的作用,现在我们仔细来看一下这五大模块
4.4.1 身份认证中心
身份认证中心主要的作用是提供身份认证,除了平时的常规认证外,里面应该有一些加强的二次认证方法,多维度来确保身份的可信;这里我们主要是使用第三方的身份认证服务,阿里云的Idaas服务和谷歌的google身份认证器。
4.4.2 安全策略中心
安全策略中心刚才已经讲到,他主要是判断下这个请求是否可以访问,主要是依据这个身份认证和设备风险动态生成的安全策略,并且需要实时更新策略;
另外有些应用安全等级需要比较高,比如财务系统可能要求二次多因子认证来增加安全评分。
4.4.3 安全网关
安全网关的主要作用是代理外网的流量到内部,安全网关在进行转发前会先判断一下已经登录,如果没有登录会让请求跳转到idaas系统,让用户先进行登录;
再次请求时候会调用安全策略中心的安全评分,如果它的评分比较低会阻止此请求的访问;如果是合法的可以对这个请求进行一些流量钩子,比如访问一个wiki系统,可以在这加一些水印。
当流量都经过安全网关的时候,可以将日志存储起来,放到日志分析平台中进行统计分析,将来可以追溯和审计。
4.4.4 设备agent
设备agent主要就是收集终端的一些安全信息,比如系统信息,网络连接信息、是否安装杀毒软件,将这些信息上报到我们的设备管理中心的服务器。
4.4.5 设备管理中心
设备管理中心主要是存储设备上报一些的安全信息,以及这些设备进行认证,判断设备了是不是我们公司的内部设备等等,给安全决策中心提供数据支持。
五、建设经验
零信任建设不是一个短期能够完成的事情,谷歌建设的零信任建设花了近十年时间,前面何艺老师在完美世界建设零信任也花了四年的时间,因此零信任不是短时间内能完成的,不过现在零信任相对来说已经有一个基本的架构了,所以我们建设起来会快很多,但是呢也是一个周期的。
5.1 分阶段实施
零信任建设拆解下来大致需要去做6个事情
我们趣加在建设零信任的时候是分阶段去实施的,主要分成了四个阶段,其中Q1为第一阶段,首先是要有一个安全网关,并且支持身份验证,这是最基础的功能点,然后就是去接入一些业务去验证这个模式的可行性,在这个过程中会收集到很多需求,将其改进之后继续推进业务的接入,我们第一阶段的事情已经落地了;目前正在建设第二阶段,第二阶段主要是业务的全量接入,和终端软件的第三方购买评估,业务已经接入完成,终端还在评估中。
5.1.1 第一阶段
第一阶段的主要是搭建一个安全网关,实现最基本的需求,比如流量转发和登陆,以及身份认证,接入部分办公应用验证这个模式是否可行。
5.1.2 第二阶段
第二阶段了主要是接入全量应用进来,同时我们需要去调研这个终端的的产品,他需要支持这个基线检测、证书签发、TLS双向认证。
5.1.3 第三阶段
第三和第四阶段目前来说了我们只是一个规划阶段,还没有去落地实施,这部分我不去过多讲解了
5.1.4 长期实施
有些事情可以在各阶段都去做,并没有依赖关系
比如说整合业务的需求,支持更加细致一些权限控制访问,还可以去丰富代理网关的能力,包括流量拦截和行为分析统计,内容注入,比如说水印等;第三个是丰富用户行为审计能力,结合业务访问行为和终端安全日志,全面监控安全风险。
5.2 细节性建设
这里我讲一些我们建设细节,主要推荐几个开源工具
5.2.1 openresty
前面我们讲到安全网关,安全网关主要是转发的一个作用,这里很多同学会想到Nginx服务器,我这里也是用的Nginx服务器,不过对Nginx进行了一个封装的服务,叫做openresty,它更方便我们去执行一些lua脚本
5.2.2 NginxWebUi
如果使用Nginx形式进行转发,肯定会涉及到Nginx配置文件,配置文件如果使用vim编辑器去转发编辑,很难免会出错;所以最好是有一个界面,可以在界面上操作并生成配置文件。
这里我推荐一个开源工具叫NginxWebUi的开源项目,可以在图形界面当中就完成了一个反向代理的配置
5.2.3 配置分发
我们趣加在全球有二十多个节点,每个节点都有服务器,如果我们将代理网关放在一个节点,代理速度会非常慢,所以我们不可能把节点都部署一个节点;当多个节点的时候,配置文件同步就需要一个方案了
我们的方案是首先由NginxWebUi生成配置,有一个程序会监听文件夹的修改,如果有修改会将这些配置提交到gitlab仓库;同时会通知到各个节点并把版本号传递过去,节点会从gitlab服务器拉去最新配置,检测配置文件是否会报错,如果不报错则会重启Nginx,并将节点所使用的版本传递到中心去。
作者:汤青松
日期:2021-5-14
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。