面对日益增加的内网攻击威胁,一些模糊了边界,窃取信任的攻击层出不穷;又加上云原生的威胁,导致以防火墙,路由,网关等传统的边界划分手段,已经是力不从心;最后近些年的新技术,弥补了零信任的一大短板。使得国外的零信任发展越来越趋于完善,从而获得很多产出,使得我们去借鉴。
为了将要更好的面对新技术的发展。小白我,一个不知名的安服工程师开始对零信任方面的技术和规划进行了,稍微系统的学习,总结出来了一点自己的看法(如下图所示)。
在内网环境复杂化的今天,我们国家整体的内网安全建设水平(懂得都懂)处于一个正在发展的水平,而零信任不亚于一针"强心剂"有力的支撑了未来我国内网安全体系的发展。并且随着信息化建设的不断深入,内网安全问题层出不穷。面对日益繁多的网络攻击,传统网络防护手段越来越难以支撑。在企业大量上云平台的情况下,用户在云平台应用中进行访问服务时,防火墙需要将应用访问端口映射到互联网,导致业务系统暴露直接在互联网上,很容易受到来自互联网侧的网络攻击;其次内部网络规划也越发精细化,虽然分工管理维护上轻松不少,但是一旦出现安全问题各部门间协调难度较大;最重要的问题是传统接入方式VPN需要安装插件,过程复杂,经常出现异常。
而零信任网络主要是利用现有的软件组件和定制化软件,以全新的方式集成在一起构建起来的;它可以通过软件的统筹方式,使得传统的防火墙,路由器,交换机等设备进行一个加持。可以这样理解:我们只要通过AI+静态规则的零信任服务器,就可以调动传统的安全设备,对企业的访问和数据交换进行监控,以降低内网被攻击的概率。
由于零信任模型没有基于网络位置建立信任,而是在不依赖网络传输层物理安全机制的前提下,有效地保护网络通信和业务访问,也使得VPN,内网穿透这种攻击手段失效,从而大大降低被黑客攻击的可能性。以保护消费者的个人隐私和公司的机密消息不外泄。
零信任架构的支撑系统称为控制平面,其他部分称为数据平面,数据平面由控制平面指挥和配置。访问受保护资源的请求首先经过控制平面处理,包括设备和用户的身份认证与授权。细粒度的控制策略也在这一层进行,控制平面可以基于组织中的角色、时间或设备类型进行授权。如果用户需要访问安全等级更高的资源,那么就需要执行更高强度的认证。
当然,首先要寻找现有的解决方案。边界安全模型是公认的保护网络安全的方法,但这并不意味着没有更好的方案。在网络安全方面出现的最糟糕的情况是什么?这个问题的答案虽然有些绝对,但还是可以回答:信任出了问题。这个问题的答案,归根结底还是效率问题(和安全/效率成为了一个博弈),除非出现新的技术,使得信任的成本大大的降低,否则零信任就只能和现在的5G一样成为空中阁楼,难以短时间变为现实,又因为政策的需求,我们能否考虑搭上AI和数据安全的浪潮,规划出新一代的标准呢?
零信任通过使用AI引擎成功的帮助我们解决了这个问题,我们知道因为公司的业务可能随时间的变化也是不断改变的,所以如果单单使用人工+静态肯定是无法适应的。我们可以依靠这个超级大脑解决这个棘手的问题。
零信任授权体系架构包括4个核心组件(如下图所示):
策略执行组件(辅助者) 策略引擎(超级大脑,决策者) 信任引擎(执行者) 数据存储系统(源数据提供者)
策略执行组件在整个零信任网络中大量存在,部署时需要尽可能地靠近工作负载。策略执行组件直接影响授权决策的结果,在实际场景中,可以由负载均衡器、代理服务器甚至防火墙充当策略执行组件的角色。策略执行组件和负责授权决策的策略引擎进行交互,确保网络访问请求的主体通过认证,并将每个访问请求的上下文传递给授权引擎完成授权决策。策略引擎依据事先制定好的策略,对请求及其上下文进行比较并做出决策,根据决策结果通知策略执行点对访问请求放行还是拒绝。
策略引擎调用信任引擎,利用各种数据源分析并评估风险。风险评分类似信用等级,能有效防护未知威胁,通过风险评分可以提升策略的安全性和鲁棒性,又不至于因为考虑各种边界场景而引入复杂性。授权决策时,策略引擎将信任引擎作为一个重要的外部组件进行调用,Google公司的BeyondCorp项目率先采用了信任引擎技术。授权决策依据的大量数据都存放在数据存储系统中,各种数据库构成了授权决策的权威数据源,基于这些数据,可以将所有请求的上下文清晰地描绘出来。一般使用认证阶段已经确认的实体标识信息作为数据库的主键,用户名和设备序列号都是常用的实体标识。这些数据库,包含了用户数据、设备数据等,策略引擎和信任引擎高度依赖这些数据,数据存储系统是授权决策过程的重要支撑系统。
策略引擎是零信任授权模型中进行授权决策的组件,它接收来自策略执行组件的授权请求,并和预先制定好的策略进行比较,决定请求是否被允许,并将决策结果返回策略执行组件进行强制执行。(受各种现实因素的影响,将策略引擎和策略执行机制合并到一台主机上部署的情况也时有发生,一种可能的场景是作为策略执行组件的负载均衡器通过进程间通信(IPC)机制而不是网络远程调用发起授权请求,这种架构可以降低授权决策的时间延迟,此优势在某些场景下很有吸引力。)
信任引擎是对特定的网络请求或活动进行风险分析的系统组件,其职责是对网络请求及活动的风险进行数值评估,策略引擎基于这个风险评估进行进一步的授权策略,以确保是否允许此次访问请求。信任引擎一般会混合使用基于规则的静态评分方法加机器学习的混合方法,来应对复杂多变的情况。
数据存储系统存储的数据是系统当前和历史状态的权威数据源。数据库存放的信息被控制平面的各个系统使用,是授权的一个重要的决策依据;零信任网络一般具备多类按照功能划分的数据库,其中主要分为两大类:清单库和历史库。清单库是记录资源当前状态的权威数据源,用户清单库存放所有的用户信息,设备清单库则记录公司所有在册的设备的最新信息。
小提示:控制平面本身的安全性较高,因此,整个网络代理生命周期都应该限制在控制平面内以便充分地保护其数据安全,控制平面的系统应该在逻辑上和物理上都与数据平面隔离,应该定义明确的边界,并且不要频繁变更。
通用的安全规则总是存在例外,它们通常被称为防火墙例外规则(Firewall Exception)。这些例外规则应当尽可能严格地限制范围。比如,Web开发人员希望使用SSH访问用于生产环境的Web服务器,或者HR员工为了进行审计可能需要访问HR软件数据库,等等。在这些情况下,可行的办法是在防火墙上配置例外规则,允许某个IP地址访问特定的服务器。
VPN的作用是对用户进行身份认证并分配IP地址,然后建立加密的传输隧道。用户的访问流量通过隧道传输到远程网络,然后进行数据包的解封装和路由。或许人们从来没有想过,在某种程度上,VPN是一种不会遭人怀疑的后门。但是零信任对VPN是一个毁灭性的打击,但是VPN的优点,它并没有包容进来,反而通过增加一部分算力,极大的提升了网络访问的安全性!
零信任代理是应用级代理服务器,用来保护零信任网络,它是处理认证、授权以及加密的基础设施。这些代理的部署方式是保证零信任网络安全的关键所在。零信任代理分为反向代理和前向代理两种工作模式,运行时可以同时采用这两种工作模式,也可以只采用其中的一种。在反向代理工作模式下,代理接收来自零信任客户端的连接请求,并接收初始连接,校验此连接是否应该被授权,授权通过后,把客户端请求传递给后端的应用系统处理。在前向代理工作模式下,非零信任感知的组件需要向另一个零信任系统发出网络请求。因为非零信任感知的组件不能和零信任控制平面交互,所以不能正确地初始化该请求,只能通过认证代理完成请求的初始化。
所有网络流量在处理前必须经过认证 所有网络流量在传输前应当被加密 必须由网络中的端点系统执行认证和加密 必须枚举所有网络流量,这样系统才可以执行强制访问控制 应当使用网络中安全强度最高的认证和加密算法套件 认证不应当依赖公共PKI供应商,而应当使用私有PKI系统 应当定期执行设备扫描、为设备安装补丁以及轮换设备
我们挑选了几个代表性的问题,来进行分析,这有助于我们更加全面的了解零信任!
例如,802.1X和可信网络连接(Trusted Network Connect, TNC)这类网络准入控制技术关注的焦点是网络的准入而不是服务的准入,因此不属于零信任模型的范畴。所以当我们开展零信任的时候,我们需要对协议的选择,进行一部分的取舍,尤其是在公司是部分改造的情况下,我们并不能采用一刀切的方法,对其进行大规模私人认证的改造。
安博通网络流量安全分析系统在传统流量采集、流量分析、流量回溯的基础上,集成自研的威胁情报技术,并应用深度学习技术,降低误报率。我们知道深度学习技术是机器学习技术的一种,而机器学习是实现人工智能的必经路径。深度学习概念源于人工神经网络的研究,其通过组合低层特征形成更加抽象的高层表示属性类别或特征,并以发现数据的分布式特征表示。
研究深度学习的动机在于建立模拟人脑学习分析的神经网络,它模拟人脑机制解释数据,如图像、声音、文本等。基于深度学习的恶意文件、恶意URL、DGA域名等检测技术无需沙箱环境,可以直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络进行训练和检测。但是由于环境复杂多样,我们不一定可以取得很好的效果,再加上静态规则可能会存在的干扰。
另外零信任网络的哪些组件和实体需要被评分?这个问题很有趣。是对每个单独的实体(如用户、设备或应用程序)进行评分,还是将网络代理作为一个整体进行评分?或者同时对网络代理和构成网络代理的元素进行评分(这很考验AI的智能化)?
而且这种通过规则逐项评估信任评分的方式是一种较好的基础方案,但是仅仅通过一组静态规则是不够的,它们不能满足零信任网络对未知攻击进行防御这一预设目标。因此,成熟的信任引擎除了使用静态规则,还大量采用机器学习技术来实现信任评分功能。这里我们是否可以利用AI智能的学习方法,做出相应的恶意诱导,导致AI生成的策略出现Bug!
小提示:尤其是最近,还有AI识别投毒的"反后门攻击",这给零信任危机也带来了,不小的挑战参考链接:
https://mp.weixin.qq.com/s/0swCFuVf612p88MACXeTmw)。
构建零信任网络并不需要太多新的技术,而是采用全新的方式使用现有技术。零信任网络有3个关键组件:用户/应用程序认证、设备认证和信任。第一个组件包含了用户认证和应用认证两层含义,因为并不是所有的操作都由用户执行,比如在数据中心内部,很多操作由应用程序自动执行,在这种情况下,通常把应用程序等同于用户看待。其实这种方法的雏形就是像安全狗一样给网站管理发信息提醒管理员,网站上的敏感操作是不是,管理员自己做的。没意义的关键在于效率,关系网小还可以,一旦关系变复杂,只能呵呵了。
我们熟知的认证有:密码认证,生物认证,父子延续认证。但是我们知道,安全圈有这样的一个悖论,只要注意效率,难免会造成安全的隐患。所以我们也要考虑一下,我们设计的认证它带来的成本和下降的效率,我们的客户是不是可以接受。
策略执行组件有两大职责。第一,和策略引擎交互完成授权决策,比如,负载均衡器收到一个请求时需要通过授权并获悉此请求是否被允许。第二,授权决策结果的强制执行。这两大职责在零信任授权架构中既可以通过一个组件实现,也可以由两个系统组件来分别实现。但是我们执行这些策略,或者说我们通过AI生成的策略,该什么时候进行优化,或者说升级与修正。
不光是AI的算法,我们也需要考虑硬件设备的寿命,这又是一笔不小的开支!
零信任的防御方法有两种:一种策略锁死;另一种是公开透明化,监督。
目前,应用较广泛的身份认证机制是安全工程师们都非常熟悉的X.509标准。该标准定义了数字证书的标准格式,并能够通过信任链认证身份。X.509证书是TLS协议(以前是SSL协议)用来验证连接的主要机制。既然涉及到了证书,那么会不会存在,密钥的破解和证书的伪造呢?
也就是说,虽然身份凭据的合法性可以得到验证,但是其机密性无法得到保证。因此,实践中最好使用存储在不同位置的多个秘密,根据这些秘密的组合授予访问权限。在这种情形下,攻击者必须窃取多个秘密才能完成攻击,这增加了攻击的难度。为身份认证凭据设定有效期限,不仅能够最大限度地缩减凭据泄露或密钥被盗的影响范围,还可以给管理员更新密钥和重建信任创造更多的机会,争取更多的时间。管理员更改或更新密钥/口令的行为被称为凭据轮换(Credential Rotation)。虽然解决了上述问题,但是表面的可用性和实效性又有多少呢?
PKI服务供应商有很多类型,其中证书授权中心(CA)和信任网络(WoT)是较受欢迎的两类供应商。CA的信任依赖于数字签名链,用户能够根据数字签名链回溯到初始的可信根节点。WoT没有使用信任链的形式,而是允许参与通信的系统断言对等方身份的有效性,最终形成相互背书的网状结构。用户可以遍历信任网站,寻找自己需要的、能够信任的数字证书。WoT在PGP系统中得到了广泛使用,但本书更关注CA这类PKI系统,因为CA的流行程度远远超过信任网络。
所以我们为了出现上述问题,我们需要开发一套属于自己的认证协议(这个成本是巨大的)!!!
零信任网络的策略和传统的网络安全策略虽然有几分相似,但它们在很多方面却截然不同
零信任策略尚未标准化 尚无策略描述标准 由谁定义策略
零信任网络的授权策略往往粒度很细,如果仍然由系统管理员对所有策略进行集中定义和管理,那么管理员将不堪重负。因此,需要将策略定义和管理的权责开放给资源或服务的所有者,以便分担管理员的策略维护压力。这个时候可以考虑伪造协议(必定存在兼容标准一类的)或者利用策略分配的漏洞(本质还是人的错误)进行攻击!
零信任模型认为,主机无论处于网络的什么位置,都应当被视为互联网主机。它们所在的网络,无论是互联网还是内部网络,都必须被视为充满威胁的危险网络。只有认识到这一点,才能建立安全通信。由于大多数管理员都有建设和维护互联网主机安全机制的经验,因此至少有办法阻止针对某个特定IP地址(主机)的拦截或篡改攻击。自动化系统使我们能够把这一级别的安全防护机制应用到基础设施中的所有系统。控制平面和数据平面之间的交互需要自动化系统来处理。如果策略执行不能动态更新,那么零信任网络就无法实现,因此,策略执行过程的自动化和速度是问题的关键。使用AI才可以达到这样的目的,如果设定的底层标准出现问题,恐怕这又是一个供应链级别的漏洞!所以怎么考虑这方面的安全问题呢?有待我们去提高,而且web3.0的到来,又会是一波浪潮,其本质也是零信任。
如果代理发出的访问请求被批准,那么零信任模型的控制平面会通知数据平面接受该请求,这一动作还可以配置流量加密的细节参数。访问流量的机密性也非常重要,至少要采用设备级加密或者应用程序级加密中的一种,也可以两种方式同时采用。通过这些认证/授权组件,以及使用控制平面协助完成的加密通道,就可以确保网络中每一个访问流量都按照预期经过了认证、授权和加密;没有经过认证、授权和加密完整处理的流量会被主机和网络设备丢弃,以确保敏感数据不会泄露出去。另外,控制平面的每个事件和每项操作都会被记录下来,用于完成基于访问流或访问请求的审计工作。
这样的话有一个疑问?如果真的打进去了,会不会导致加密研判工作变的困难呢?认真思考NAT技术和私有地址空间,很明显零信任模型使其安全参数失去了意义。的确,提出者也不是傻子,这个问题很有意思。但是,如果网络访问请求的路径中部署了负载均衡设备或代理服务器,那么就能够看到应用数据,也就有机会进行深度包检测和授权操作。但是这种方法,真的可以在半零信任半传统的防御中完全杜绝吗?
如果在自动化部署的场景中引入了人工环节,那么对签发和部署请求进行授权就很有意义了,虽然每次请求都由人工确认是理想的做法,可以杜绝未授权的签名请求被批准,但是人无完人,人类很容易疲劳并且也有很多其他缺点,为避免人为犯错,建议每个人只负责对他们自己发起的请求进行审批确认。通过使用一次性动态口令(TOTP)可以在单个步骤中完成部署和签名授权。生成部署请求时可以提供一个TOTP并将其传递给签名服务进行验证,这种简单而强大的机制确保了新证书签发过程的可控,同时其需要的额外管理成本较小。因为一个TOTP口令只能使用一次,所以TOTP验证失败是一个重要的安全事件,可以杜绝安全隐患。
机构刚开始部署多因子认证设施时,经常采用基于时间的硬件动态口令令牌。随着智能手机的流行,越来越多的用户倾向于使用智能手机上安装的软件形态的多因子认证安全令牌。使用安全令牌的协议(如U2F)能够有效防御钓鱼攻击,同时对于用户来说其易用性也更好。所以,应尽可能选择安全令牌系统代替传统的TOTP。但是上述都建立在公司不追求绝对的效益上面!
零信任网络的情形与之类似,用户在大多数情况下以最小特权模式访问网络资源,只在需要执行敏感操作时才提升权限。比如,经过身份认证的用户可以自由地访问公司的目录或使用项目计划软件。但是,如果用户要访问关键的生产系统,那么就需要采用额外的手段确认该用户的身份,确保该用户的系统没有被攻陷。对于风险相对较低的操作,特权提升过程可以很简单,只需重新提示用户输入口令、要求出示双因素认证令牌或者给用户的手机推送认证通知。对于高风险的操作,可以选择通过带外方式要求相关人员进行主动确认。
客户端以不可信的方式开始访问会话请求,并在访问过程中通过各种机制不断积累信任,直到积累的信任足够获得系统的访问权限。比如,用户通过强认证能够证明所使用的终端设备属于公司,这可能积累了一些信任,但不足以获得账单系统的访问权限。接下来,用户提供了正确的RSA令牌,就可以积累更多的信任。最后,设备认证和用户认证相结合计算出的信任评分满足要求,用户就可以获得账单系统的访问权限了。这个恰恰是我们的攻击点,我们的信任是不是可以恶意的刷取呢?
基于信任评分的策略模型也不是没有缺点。其中一个问题是,单一的评分值是否足以保护所有的敏感资源。用户的信任评分能够基于历史行为而降低,同样也可以基于历史的可信行为而增加。那么,攻击者是否有可能通过在系统中慢慢建立信任,从而获得更高的访问权限呢?很有趣的思考?确实使用不同的策略会产生不同的效果,但是不同的策略会不会起冲突呢?不好说!
控制平面和数据平面是网络系统经常使用的概念,其基本思想是,网络设备有控制平面和数据平面两个逻辑域,这两个逻辑域之间存在清晰的接口。数据平面的作用是转发网络流量,它需要高速处理数据包,因此其处理逻辑相对简单,通常使用专用硬件。控制平面可以看作是网络设备的大脑,系统管理员用它来配置管理网络设备,因此控制平面会随着策略的变化而变化。控制平面的强可塑性导致其无法处理高速网络数据包流量。因此,控制平面和数据平面之间的接口定义需要遵循这样的原则:任何在数据平面执行的策略行为,都要尽可能减少向控制平面发送请求(相对于网络流量速率来说)。
网络代理指在网络请求中用于描述请求发起者的信息集合,一般包括用户、应用程序和设备共3类实体信息。在传统实现方案中,一般对这些实体进行单独授权,但是在零信任网络中,策略基于这3类实体信息的组合整体进行制定。用户、应用程序和设备信息是访问请求密不可分的上下文,将其作为整体进行授权,可以有效地应对凭证窃取等安全威胁。类似于黄金票据那样的万能票据攻击可能会非常的方便!
如果使用基于攻击者视角的看,则可以把攻击者按照能力(造成的损害)从低到高如下:
碰运气攻击者:这类攻击者又被称为“脚本小子”。他们往往利用那些众所周知的漏洞和工具发起攻击,广撒网,碰运气。 定向的攻击者:此类攻击者针对特定的目标发起针对性的攻击。他们经常通过鱼叉邮件、社交工程等手段发起攻击。 内部人员:拥有合法凭据的系统用户。外包人员、非特权的企业员工等,往往会被定向攻击者"搞定"。 可信内部人员:可信度很高的系统管理员(概率小,危害极大)。
未来零信任的攻击方向
枚举终端 社会工程学 身份窃取 分布式拒绝服务攻击(DDoS)
我们知道,不论怎么改变,设备的认证都会带有密码。一旦存在弱口令,那么就算设备足够完善,也可能出现严重的问题。因为零信任网络需要控制网络中的端点设备,所以它对互联网威胁模型进行了扩展,充分考虑了端点设备被攻陷的情形。面对端点设备可能遭受的攻击,通常的应对方式是首先对端点操作系统进行安全加固,然后采用端点系统安全扫描、系统活动行为分析等方式来进行攻击检测。此外,定期升级端点设备中的软件,定期更换端点设备的登录凭证,甚至定期更换端点设备本身等,也能够缓解针对端点设备的攻击。那最简单的口令问题怎么办呢?
我们还会遇到一些很难防御的、相对小众的威胁,如利用虚拟机管理程序的漏洞复制虚拟机内存等。防御这类威胁需要付出相当大的代价,可能需要专用的物理硬件,因此大多数零信任网络的威胁模型排除了这类攻击。我们应该明白,在网络安全方面虽然有许多最佳实践,但是零信任模型仅需要保证用于认证和授权操作的信息的机密性,如存储在磁盘上的凭据的机密性。
虽然我们可以使用上述的多重认证手段搭配解决。但是,我们不要忘记了,安全圈里的名言"出问题的永远是人!",我们知道人才造成是安全风险的最不可控的因素。在整个攻击过程中,网络中的安全防护措施在发挥什么作用?防火墙的部署是经过精心设计的,安全策略和例外规则严格限制了范围。从网络安全的角度看,一切都做得非常正确,那为什么攻击还能成功呢?个人认为在攻防演练越来越成熟的时候,除非是供应链级别的0day,其他的在行业类造成的影响有限,同时培养的成本及其高昂(实验室一群人,开发一波人,产品.....)所以不是太划算;这个时候钓鱼社工就是一个付出成本较小,收益占比较高的事情!!!
零信任非常适合在云环境中部署,原因很明显:你完全不需要信任公有云环境中的网络!在零信任模型中,计算资源不依赖IP地址或网络的安全性即可进行身份验证和安全通信,这种能力意味着可以最大程度地把计算资源商品化。确实在数据上云的同时,我们也可以考虑如何获取这些东西?
由于零信任模型主张加密所有通信数据,哪怕通信双方位于同一个数据中心内部,因此管理员不需要操心哪些数据包流经互联网,哪些不流经互联网。安全性确实提高了,但是安全产品怎么分析他的特征值啊人们甚至可能连自己都无法完全信任,但是至少可以确信所采取的行动的确是自己所为。因此,零信任网络中的信任往往源自系统管理员。“零信任网络中的信任”这句话听上去似乎有些自相矛盾,但是理解这一点却非常重要:如果不存在与生俱来的信任,那么就必须从某个地方产生信任并小心地管理它。
如何确定一个新生成的服务是自己的而不是其他人的?为了达到这个目的,管理员就必须将责任委托给供应系统(Provisioning System),授予它创建新主机和为新主机授予信任的能力。通过这种方式,我们就可以相信新创建的服务确实是自己的,因为供应系统已经确认过该服务是由它创建的,并且供应系统还可以证明系统管理员已经把这样的权力授予了它。能够返回给系统管理员的这一串信任通常被称为信任链(Trust Chain),而系统管理员被称为信任锚(Trust Anchor)。
信任委托非常重要。借助信任委托,人们可以构建自动化系统,在无须人为干预的情况下,以安全可信的方式管理大规模增长的零信任网络。首先,系统管理员是可信的,然后他必须为系统赋予一定程度的信任,使该系统能够以管理员的身份执行后续动作。
如果管理员寄了,那么零信任也跟着寄,而且它的加密通讯,有恰恰提供了很好的隐蔽性!
这个是我们无法拒绝的!!
参考链接:
《零信任网络:在不可信网络中构建安全系统》
https://www.freebuf.com/articles/es/220633.html
https://www.freebuf.com/articles/network/258315.html
https://www.4hou.com/posts/gX5D
https://blog.csdn.net/zhangxm_qz/article/details/113503046