读零信任网络:在不可信网络中构建安全系统20攻击者视图
1. 攻击者视图
1.1. IETF要求所有提交的RFC都必须包含“安全风险考虑"
-
1.1.1. 明确指出了潜在陷阱、危险和警告,这对系统的实现和部署至关重要,有助于运营者确保最终的系统不会偏离设计之初的安全特性
-
1.1.2. 表明系统设计者对于可能存在的攻击进行了深入思考:一个没有经过深入的安全考虑的系统,看似安全但可能存在严重的安全漏洞
-
1.1.3. 讨论了如何处理和管理可见的安全风险
1.2. 引入安全风险考虑并不意味着该系统本身是不安全的,相反,它标志着从整体上来看,系统更加安全
1.3. 通过一些手段措施可以减少某些对零信任网络的攻击,然而对于某些攻击,最多只能检测而不能防御
1.4. 任何系统都易受到资源充分的攻击者的影响,当攻击足够高级且难以防范时,唯一能做的就是有效地、精确地检测这些攻击
1.5. 对于志在必得的攻击者来说,要攻破零信任网络是完全有可能的
1.6. 零信任模式最终将替代边界模式,更有效、更具扩展性、更安全地解决计算机网络安全问题
2. 身份窃取
2.1. 在零信任网络中,几乎所有的判定和操作都是基于认证后的身份进行的
2.2. 如果合法用户的身份被盗窃或损害,那么攻击者就可能成功伪装并通过零信任认证和授权检查,当然,这并不是大家希望看到的场景
2.3. 应该谨慎考虑选择哪种方式保护各组件
2.4. 零信任网络需要同时认证设备和用户/应用,所以攻击者为了访问某资源就必须同时窃取两种身份,相较于目前使用传统方法保护的系统而言,零信任网络有更高的攻击壁垒
2.5. 身份的安全性不仅仅是零信任面临的难题,更是业界广泛关注的问题,其重要性不容忽视,零信任模型的本质就是在为减少这种威胁而努力
3. 分布式拒绝服务攻击
3.1. DDoS
3.2. 零信任网络主要关注认证、授权和机密性,通常与网络资源的访问控制密切相关
3.3. 零信任架构的目标是认证和授权网络中的所有事物,并未提供拒绝服务攻击(DoS)的预防措施
3.4. 即使是采用零信任架构,接收数据包的系统仍然可能遭受DDoS的攻击
- 3.4.1. DDoS攻击仍然是零信任网络需要面对的问题,虽然现在有一些更好的方法来防范DDoS攻击,但仍然不可掉以轻心
3.5. 有些零信任网络基于预认证协议实现了面向互联网的端口隐藏
-
3.5.1. 其基本原则是在“拒绝所有”的默认规则下实现访问端口的隐藏,并且仅仅在收到(认证通过的)信号后才开启一个小范围的例外
-
3.5.2. 在很大程度上有助于隐藏服务端口,但是它并不能从本质上减少DDoS攻击的威胁
3.6. 零信任网络天然存储了预期网络流的大量信息,这些信息可以用来计算访问控制策略,并将其用于传统的网络过滤系统,对流量进行保护
-
3.6.1. 可以从上游设备的角度出发,利用策略设定粗粒度的强制规则,仅允许对少量系统开启访问例外规则
-
3.6.2. 相较于传统方法,这种方法有双重优势
-
3.6.2.1. 配置是完全自动化的
-
3.6.2.2. 可以保证无状态的网络流过滤机制
> 3.6.2.2.1. 避免了昂贵的硬件设备和复杂的状态复制,这些过滤点更像是流量清洗而非防火墙
> 3.6.2.2.2. 这种方法只有在大型网络的场景下才有意义
3.7. 如果系统位于共用机房中的一小部分机架或是基于云部署,那么使用DDoS防护服务应该更合适
4. 枚举终端
4.1. 零信任模型属于天然的无边界网络,因为边界对于不可信的内部网络没有任何意义
4.2. 由于零信任架构具有点对点的特征,因此攻击者通过观察各系统与终端之间的通信信息就可以描绘出网络的拓扑图
4.3. 一旦通过网关,网络流量就暴露了,这就是基于边界模型的网络的典型特征
4.4. 零信任模型保证的是网络机密性而非隐私性
-
4.4.1. 意味着可以观察到正在进行的会话并推断它们的存在性,零信任可以保护具体的会话内容不被窥视或泄露
-
4.4.2. 如果公共网络需要一定程度的隐私保护,那么零信任网络可以选择站点到站点的隧道通信模式,这种部署模式使得隧道两端的主机更难被探测和观察
-
4.4.3. 如果选择隐藏网络的一部分信息,暗示着对这部分的信任度更高
4.5. 在专注于保护网络隐私的系统中,连会话是否发生也是无从知晓的
- 4.5.1. Tor就是典型的提供网络隐私保护的系统
4.6. 机密性和隐私性是截然不同的两个概念,对网络隐私性的保护不在零信任模型关注的范围内
5. 不可信的计算平台
5.1. 信任计算平台本身(如云硬件、虚拟机管理程序)和信任设备在本质上还是有一定区别的
5.2. 不可靠的计算平台完全不能做到有效防御
-
5.2.1. 设想一个系统使用的硬件会有意产生弱随机数(加密的基础)
-
5.2.2. 防御这种类型的攻击首先需要发现问题,但这远远不够,在大多数情况下攻击者会隐藏他们的攻击能力
5.3. 虽然不可能彻底防御计算平台自身存在的恶意攻击,但零信任系统仍然可以防御这类平台的一些简单攻击
- 5.3.1. 通过加密持久化数据和内存交换文件,可以减少计算平台上的恶意者的简单攻击,同时也可考虑调整平台运营者的可信程度,这样可进一步减少攻击的可能性
6. 社会工程学
6.1. 社会工程学攻击通过欺骗可信实体,使其在可信任设备上进行恶意操作来对系统发起攻击,这也是零信任网络需要关注的范畴
-
6.1.1. 可能是钓鱼攻击,通过精心设计的、看上去并非恶意的文字通信进行欺骗
-
6.1.2. 可能是客户服务部门面临的面对面的欺骗
-
6.1.3. 零信任网络对于这类难以察觉的社会工程学攻击具备一定的防御能力
6.2. 对于敏感程度低的资源,内部活动的行为分析是防范这种威胁的主要机制
- 6.2.1. 需要指导用户像一个攻击者一样思考并质疑异常请求
6.3. 对于敏感程度高的资源,类似Shamir密钥共享的组认证/授权机制有助于预防由用户组中单一个体无意识行为导致的潜在攻击
- 6.3.1. 对于日常使用而言这种机制可能非常烦琐,所以最好只对真正重要的资产采取这种方式
7. 人身威胁
7.1. 零信任网络可以有效减少虚拟世界中的许多威胁,但是现实世界中的威胁又完全是另外一回事了
7.2. 没有安全专家会建议用户冒着生命危险保护他们具有访问权限的信息
7.3. 最好方法就是保证单独个体造成的危害仅仅影响敏感性较低的数据和系统,对于价值较高的资源目标,使用组授权模式可以有效预防这些威胁
7.4. 对于一些难以觉察的物理威胁(如某人可以在无人保护的笔记本电脑中插入USB设备),最好的解决办法就是对设备和证书进行持续更新
- 7.4.1. 扫描未定期轮换的设备也有助于减少这种类型的攻击
7.5. 如果攻击者可以在真实世界中接触到某些设备,那么他们就有机会做出许多破坏性操作
-
7.5.1. 并不意味着我们可以对这些威胁放任不管,至少对零信任来说,认证/授权有关的安全数据对于减少这些威胁大有裨益
-
7.5.2. 即使攻击者可以直接接触到设备,也可以通过某些具体措施减小这种危害的影响和持续性,在零信任网络中可以采取这些措施
8. 无效性
8.1. 无效性是计算机科学的一大难题
- 8.1.1. 无论如何,无效性问题至少是可以解决的
8.2. 在零信任网络语境下,无效性主要是指获得过授权的某个长期行为一直在持续,但其授权原本应该已经无效
8.3. 行为的定义在很大程度依赖于系统所选择的授权机制
-
8.3.1. 如果授权的粒度是基于每条请求的,那么行为可以被看成是一个应用级的请求或操作
-
8.3.2. 如果授权对象是网络流(如一个TCP会话),那么行为可以看成是一个网络会话
8.4. 可以对短期行为进行更细粒度的授权,这意味着执行组件会对应用级请求授权而非新的网络会话
8.5. 周期性地重置网络会话,并强制设定一个最长生命周期,当应用和用户重连时,该会话需要重新授权
8.6. 使执行组件有能力追踪正在运行的行为,并在一段时间后向策略引擎发送一个授权请求,如果授权引擎判定该行为不能继续获得授权,那么执行组件将强制重置该会话
8.7. 这些机制仍然依赖于“拉取”模式,执行组件会强制周期性地发起授权请求
8.8. 执行组件中配置的最长轮询时间即是相应会话无效的最快时间
8.9. 最好的方式是通过“推动”模式或基于事件的响应模式
- 8.9.1. 这两种方法的复杂性和使用它们时面临的诸多挑战已经抵消了其带来的好处
9. 控制平面安全
9.1. 如果控制平面受到攻击的影响范围足够广,则可能完全破坏整个零信任架构,因此保证这些系统的安全性非常重要
9.2. 对攻击者来说,破坏策略引擎比破坏一个储存历史访问数据的数据库更有用
-
9.2.1. 对于前者,可能导致整个零信任授权系统的破坏,使得攻击者可以授权任何他们想授权的访问
-
9.2.2. 对于后者,攻击者可以通过伪造访问模式来提高他们的信任等级
9.3. 对于敏感的系统(如策略引擎),应该从一开始就进行严格控制
-
9.3.1. 组认证和授权模式是一个不错的选择,应该重点考虑
-
9.3.2. 更改不应该太频繁且应该可以广泛地通知和警告,对控制平面的变更不可能悄无声息
9.4. 从管理的视角对控制平面进行隔离,这也许意味着控制平面运行在一个专门的云供应商账户之下,或被置于有着更严格访问控制策略的数据中心内
-
9.4.1. 通过这种机制,可以实现更细致的访问审计,将其管理平面可能导致的风险降到最低
-
9.4.2. 若将控制平面与其他网络隔离,网络架构就倒退回基于边界的模式了,这种保证控制平面安全性的方法是一种很糟糕的选择,是没有选择的选择
9.5. 随着网络成熟度的提升,可以对控制平面自身进行基于零信任的策略控制