这本《零信任网络》上架两个月,一直是程序员们最青睐的网络安全书

《零信任网络》上架两个月了,在京东30日新书热销榜中位列第13位。因为这本书一直稳定的受到程序员们的青睐,所以诚挚的推荐给大家。

零信任网络 在不可信网络中构建安全系统

 

在充斥着威胁的网络中构建可信的系统,是网络安全从业者多少年来孜孜以求的目标。在设计和构建可信系统的过程中,人们在解决一些根本性安全问题时遇到了挫折,而这些安全问题一直困扰和折磨着网络安全从业者。因此,我们非常希望业界同仁直面这些根本性的安全问题,更加积极主动地推进能够解决这些问题的安全系统的建设。

为了实现这个目标,建议在建设和维护安全的计算机网络时采取全新的立场:安全应当与系统的运营管理从根本上融为一体,而不是建立在系统之上;安全应当自始至终与系统并存,要为系统赋能而不能成为其运行的障碍。正因为如此,本书提出了一系列在系统设计时需要考虑的安全设计模式和注意事项,以使得系统具备足够的安全弹性,能够应对现今主流的攻击。

将这一系列设计模式和注意事项作为一个整体,得到的就是零信任模型。在这个模型中,默认的信任是不存在的,每一个访问请求,无论是来自咖啡馆里的一台个人终端电脑,还是来自数据中心的一台服务器,都需要经过严格的检查,并确认其拥有合法的授权。采用零信任模型,可以从根本上解决外部攻击者在网络中的横向移动问题、令人头痛的VPN配置管理问题,以及防火墙集中式安全策略管理带来的管理开销问题等。零信任模型与传统安全模型存在根本性的差别,我们深信它代表着网络和基础设施安全架构的未来。

《零信任网络》的目标不是阐述一两个特定场景的安全设计方案,而是试图定义一个建立在“不可信网络”基础上的安全模型。因此,本书的侧重点不是介绍具体的软件或实现方式,而是探讨零信任网络的理念和基本概念。通过阅读本书,希望你能够理解零信任模型的基本概念,建立清晰的思维模型并利用这一思维模型设计和建设安全系统,甚至构建针对这类问题的可重用的解决方案。

样章试读:

1.4 边界安全模型的缺陷

直到今天,边界安全模型仍然是主流的网络安全模型,但是该模型的缺陷也越来越明显。面对几乎每天都会发生的复杂攻击,一个网络即便采用了完善的边界安全模型,也往往会被攻陷。攻击者有无数种方法把远程访问工具(Remote Access Tool,RAT)投递到内部网络中以获得远程访问权限,然后开始在内部网络中横向移动。边界防火墙就像那些为了防止间谍入侵而在城市周边修建的城墙一样,作用越来越小。

把网络分割成若干安全区域,这种安全架构设计本身就存在问题。设想如下场景:一家小型电子商务公司雇用了几名员工,并拥有若干用来处理薪酬、库存等事务的内部业务系统,还有一些用于运行网站系统的服务器。在这样的场景下,当然需要对访问权限进行分类:员工需要访问内部业务系统;Web服务器需要访问数据库服务器;数据库服务器不需要互联网访问,但员工需要访问互联网等。传统的网络安全架构会把这些访问权限组定义为不同的安全区域,然后规定不同安全区域的访问规则,如图1-7所示。既然这些安全策略是以安全区域为基础定义的,那么不同安全区域之间的网络流量就应当遵循既定的安全策略强制执行检查。

大家都能想到,通用的安全规则总是存在例外,它们通常被称为防火墙例外规则(Firewall Exception)。这些例外规则应当尽可能严格地限制范围。比如,Web开发人员希望使用SSH访问用于生产环境的Web服务器,或者HR员工为了进行审计可能需要访问HR软件数据库,等等。在这些情况下,可行的办法是在防火墙上配置例外规则,允许某个IP地址访问特定的服务器。

现在,假设这家电子商务公司的竞争对手雇用了一支黑客团队,他们想要窃取该公司的库存清单和销售数字。黑客首先在互联网上找到了公司员工的电子邮件地址,然后给他们发送电子邮件,邮件内容被伪装成公司附近某家餐厅的优惠券。几乎可以肯定会有某个员工单击邮件内容中的链接,然后黑客在其个人计算机上安装恶意软件。恶意软件回连到黑客控制的服务器,建立连接会话后,黑客就能够控制这台计算机。还算幸运,这名员工只是一个实习生,黑客获得的访问权限是有限的。

 

图1-7 企业办公网络与生产网络的交互

黑客并没有停下脚步,他们开始在内部网络中四处搜索,很快发现该公司正在使用一款文件共享软件。并且,所有员工的计算机都没有使用这款软件的最新版本,而这款软件的当前版本存在一个漏洞,可以被利用来实施攻击。就这样,黑客逐个攻陷员工的计算机,并继续搜寻具有更高权限的计算机。当然,如果黑客拥有更高级的攻击知识,那么这个过程会更有针对性。最终,黑客找到了该公司的Web开发人员所使用的计算机,并在这台计算机上安装了键盘记录器,目的是窃取Web服务器的登录凭据。接下来,黑客使用收集到的系统登录凭据,通过SSH登录到Web服务器,使用Web开发人员的sudo权限,从磁盘读取数据库的口令并连接到数据库。最后,黑客转储数据库的内容并下载数据,删除所有日志文件。如果该公司的IT运维人员运气好的话,也许能发现这次数据泄露事件。黑客的任务完成了,完整的攻击过程如图1-8所示。

 

图1-8 攻击者在办公网络中横向移动,最终进入生产网络

黑客这么容易就成功了?是的,正如上面这个示例所揭示的那样,网络中多个层面的失败最终导致了这次数据泄露事故。或许有人认为,这不过是一个人为设计的攻击案例,但事实上类似的网络攻击成功案例非常普遍。然而,这个案例中令人惊讶的部分却往往被人忽视:在整个攻击过程中,网络中的安全防护措施在发挥什么作用?防火墙的部署是经过精心设计的,安全策略和例外规则严格限制了范围。从网络安全的角度看,一切都做得非常正确,那为什么攻击还能成功呢?

 示例中的攻击过程

① 通过钓鱼邮件锁定企业的员工。

② 攻陷办公网的员工计算机,获得Shell。

③ 在办公网络中横向移动。

④ 定位拥有特权的计算机。

⑤ 安装键盘记录器的特权计算机本地提权。

⑥ 窃取开发人员的口令。

⑦ 从特权计算机攻击生产应用主机。

⑧ 利用开发人员口令在生产应用主机上提升权限。

⑨ 从应用程序中窃取数据库口令。

⑩ 通过失陷的应用主机外泄数据库中的数据。

经过仔细分析,就会发现传统的网络安全架构不足以抵抗这种攻击。恶意软件通过拨号器回连的方式可以轻松地穿透边界安全设备,不同安全区域之间的防火墙在执行安全策略时只使用了源和目的地址作为判别依据。虽然边界安全模型仍然具有一定的安全价值,但是它在网络安全中应当扮演什么样的角色,是否继续将其作为网络安全的主要机制?这是我们需要重新思考的问题。

当然,首先要寻找现有的解决方案。边界安全模型是公认的保护网络安全的方法,但这并不意味着没有更好的方案。在网络安全方面出现的最糟糕的情况是什么?这个问题的答案虽然有些绝对,但还是可以回答:信任出了问题。

1.5 信任在哪里

如果要考虑边界安全模型之外的其他方案,那么首先必须准确地理解什么是可信的,什么是不可信的。信任级别(Trust Level)定义了所需安全协议强度的下限。但事实上,安全协议强度超出需求的情况是很少见的,因此尽可能减少信任是更明智的做法。一旦信任被内置于系统中,就很难消除。

什么是零信任网络?顾名思义,就是一个完全不可信的网络。我们几乎天天和这样的网络打交道,那就是互联网。

互联网给我们带来了很多安全方面的经验教训。当然,网络管理员对互联网服务器和本地服务器的安全防护方式大不相同,但为什么会这样?如果导致这种区别的问题能够解决,甚至只是部分解决,那么我们在安全方面做出的妥协还值得吗?

零信任模型认为,主机无论处于网络的什么位置,都应当被视为互联网主机。它们所在的网络,无论是互联网还是内部网络,都必须被视为充满威胁的危险网络。只有认识到这一点,才能建立安全通信。由于大多数管理员都有建设和维护互联网主机安全机制的经验,因此至少有办法阻止针对某个特定IP地址(主机)的拦截或篡改攻击。自动化系统使我们能够把这一级别的安全防护机制应用到基础设施中的所有系统。

1.6 自动化系统的赋能

构建零信任网络并不需要太多新的技术,而是采用全新的方式使用现有技术。自动化系统是建设和运营零信任网络的关键组件。

控制平面和数据平面之间的交互需要自动化系统来处理。如果策略执行不能动态更新,那么零信任网络就无法实现,因此,策略执行过程的自动化和速度是问题的关键。

实现自动化处理的方法有很多种,专门开发的自动化系统是较理想的,不过像传统的配置管理系统(CMS)这类工具也能够胜任。配置管理系统的广泛应用是构建零信任网络的重要基础,因为这类系统通常管理维护设备清单库,并能自动化处理数据平面中的网络策略配置。

由于现代的配置管理系统既可以维护设备库,又能够处理数据平面的配置自动化,因此利用这类系统可以很快迈出构建零信任网络的第一步。

1.7 边界安全模型与零信任模型的对比

边界安全模型与零信任模型存在根本上的差别。边界安全模型试图在可信资源和不可信资源(本地网络和互联网)之间建一堵墙,而零信任模型则“认输”了,它接受“坏人”无处不在的现实。零信任模型不是依靠建造城墙来保护墙内柔弱的身体,而是让全体民众都拥有了自保的能力。

边界安全模型事实上为受保护的内部网络赋予了一定级别的信任,这种做法违背了零信任模型的基本原则,会导致一系列问题的发生。当认为网络“可信”时,管理员往往会放松警惕(他们也是人)。可信区域内部的主机很少有自我保护的能力,因为既然这些主机共享同一个可信区域,也就意味着它们之间是互相信任的。现在,人们逐渐认识到这种假设是错误的,我们不仅需要保护主机免受来自外部的攻击,还需要保护它们免受相互之间的攻击。

既然零信任模型假定整个网络完全不可信,那么就必须假定攻击者可以使用任意IP地址进行通信。因此,仅使用IP地址或物理位置作为标识符来保护资源是不够的。所有主机,甚至处于相同“可信区域”的主机,都必须提供正确的身份标识。攻击者并不仅限于发起主动攻击,他们还可以执行被动攻击,通过监听网络流量获取敏感信息。在这种情况下,仅有主机的身份标识是不够的,还需要对网络流量进行强加密处理。

零信任网络有3个关键组件:用户/应用程序认证、设备认证和信任。第一个组件包含了用户认证和应用认证两层含义,因为并不是所有的操作都由用户执行,比如在数据中心内部,很多操作由应用程序自动执行,在这种情况下,通常把应用程序等同于用户看待。

设备的认证和授权与用户/应用程序的认证和授权同样重要,这一特性很少出现在采用边界安全模型保护的网络中。在传统的网络中,设备认证通常会出现在VPN或NAC技术中,但是在端到端的场景下很少用到。

 NAC技术

NAC(网络准入控制)是一种边界安全技术,某目的是在终端设备访问敏感网络时对其进行强认证。802.1X和可信网络连接(Trusted Network Connect, TNC)这类网络准入控制技术关注的焦点是网络的准入而不是服务的准入,因此不属于零信任模型的范畴。更符合零信任模型的做法是,采用类似的机制在设备访问服务时进行强认证(TNC技术涉及一部分,详细内容参见第5章)。虽然NAC技术仍然可以应用于零信任网络中,但它距离远程端点太远,并不能满足零信任模型中设备强认证的需求。

最后,零信任模型需要计算出“信任评分”(Trust Score),并将应用程序、设备和信任评分绑定在一起形成“代理”(Agent),然后基于代理实施安全策略,进行访问请求的授权。代理所包含的信息非常丰富,因此可以执行非常灵活的、细粒度的访问控制。安全策略中包含信任评分,可以灵活适应各种条件下的访问控制需求。

如果代理发出的访问请求被批准,那么零信任模型的控制平面会通知数据平面接受该请求,这一动作还可以配置流量加密的细节参数。访问流量的机密性也非常重要,至少要采用设备级加密或者应用程序级加密中的一种,也可以两种方式同时采用。

通过这些认证/授权组件,以及使用控制平面协助完成的加密通道,就可以确保网络中每一个访问流量都按照预期经过了认证、授权和加密;没有经过认证、授权和加密完整处理的流量会被主机和网络设备丢弃,以确保敏感数据不会泄露出去。另外,控制平面的每个事件和每项操作都会被记录下来,用于完成基于访问流或访问请求的审计工作。

边界安全模型也可以提供类似的安全能力,但是这些安全能力仅在网络边界上部署和实施。传统的VPN就是一个很好的例子,它同样提供了类似的安全特性,用来实现内部网络的安全访问。但是,这种安全能力在网络流量到达VPN设备之后就会终止。很显然,网络管理员知道互联网安全应该怎么实现,只是他们没有把这些安全措施贯彻到整个网络。

假如一个网络全面部署并实施了零信任安全模型中的安全能力,那么这种全新的安全范式会让我们对安全产生新的认知和理解。采用密码学技术对身份进行强认证,意味着对于任意连接都可以不用在意它的源IP地址到底是什么(从技术上讲,网络连接的IP地址仍然可以用于风险的度量——稍后章节将对此进行详细讨论)。如果采用自动化技术解决了配置管理的棘手难题,那么VPN基本就没有什么用了,“私有网络”这个概念也将不复存在。内部网络中的主机和互联网主机没有什么区别,都采用相同的手段进行保护。认真思考NAT技术和私有地址空间,很明显零信任模型使其安全参数失去了意义。

最后,边界安全模型的根本缺陷是缺乏全局性防护和安全策略强制执行,就像用安全的外壳包裹着软弱的躯体,我们真正想要的是知道如何认证身份、如何防止沟通交流被窃听的坚硬的躯体。但是,拥有坚硬的躯体也并不一定意味着不需要维持安全的外壳,尤其是在高度敏感的应用场景下。不过,零信任模型的确将安全水平提高到了一定的程度,即使降低或取消这些安全外壳也不是不可行的。零信任模型中的绝大多数安全功能都能够对最终用户透明,这看起来甚至解决了安全性和易用性的矛盾:零信任模型更安全、更易用。事实上,解决是否易用问题的责任被推到了管理员身上。


版权声明:本文为epubit17原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。