信息安全策略最佳实践-全-
信息安全策略最佳实践(全)
原文:
annas-archive.org/md5/5b3e514c57bef38b0fe4f8e2a395c7ee译者:飞龙
前言
本书将涵盖信息安全(InfoSec)领域的各种主题,并帮助你将组织的战略需求转化为可操作的改进措施,从而保护其最有价值的资产。
你将学习到广泛的 InfoSec 范式,包括风险管理的基础知识、实施流程和控制、信息系统的安全设计,以及管理确保组织安全得以维护的日常活动。
完成本书后,你应当能够将你的 InfoSec 认证理论转化为切实可行的实践,确保组织的安全性。除此之外,深入探讨本书中涉及的任何主题,将有助于你在信息安全领域的职业发展。
本书适合谁阅读
本书适合那些希望开始(或已经开始)从事信息安全(InfoSec)工作的读者。也许你已经在学习行业标准认证课程,如 CISSP 或 CISM,但你希望找到一种方式,将这些概念(以及似乎无尽的缩写词)从理论转化为实践,并在组织的日常工作中开始做出改变。
本书涵盖内容
第一章,信息安全与风险管理,确立了信息安全的核心原则,并确保该学科的核心话题得到充分理解。
第二章,保护资产安全,实施有效的流程,确保你能够识别组织的资产,并避免信息安全专业人员常遇到的常见陷阱。
第三章,设计安全的信息系统,探讨了如何评估架构和系统中的漏洞,并通过控制措施,包括加密,来缓解这些漏洞。
第四章,设计与保护网络安全,涉及设计安全的网络系统、选择合适的网络组件,并确保它们能够满足组织的需求。
第五章,控制访问与身份管理,探讨了组织的物理和数字访问管理,以及选择和实施适当身份和访问管理控制的各个方面。
第六章,设计与管理安全测试流程,介绍了通过测试现有实施方案并利用发现的问题来优化 InfoSec 程序,从而养成持续改进的心态。
第七章,管理安全运营,介绍了如何将维护信息安全的日常任务与组织战略对齐。
第八章,提高软件安全性,介绍了在采购和开发软件过程中实施安全实践。
为了充分利用本书
带着您对保护信息系统的好奇心和兴趣。这本书涵盖了非常广泛的主题,为您提供了进一步自主探讨的机会。如果某个主题引起您的兴趣,请确保深入探索在线内容。
完成本书后,请质疑书中的结论,不要接受任何事物作为不变的规则,并根据您和您的组织的需求调整所有解决方案。
下载彩色图像
我们还提供了一份 PDF 文件,其中包含本书中使用的带有彩色图像的截图/图表。您可以在此下载:www.packtpub.com/sites/default/files/downloads/9781800566354_ColorImages.pdf。
使用的约定
以下是本书中展示提示和信息说明的方式:
提示或重要说明
以这种方式显示。
请与我们联系
我们欢迎读者的反馈。
customercare@packtpub.com。
勘误表:虽然我们已尽力确保内容的准确性,但错误仍然可能发生。如果您在本书中发现错误,我们将非常感激您能报告给我们。请访问 www.packtpub.com/support/errata,选择您的书籍,点击勘误表提交表单链接并填写详细信息。
copyright@packt.com,附带链接到相关材料。
如果您有兴趣成为作者:如果您对某个主题有专业知识并且有兴趣撰写或参与编写一本书,请访问 authors.packtpub.com。
评论
请留下评论。阅读并使用本书后,您为什么不在购买网站上留下评论呢?潜在的读者可以通过您的公正意见来做出购买决策,我们在 Packt 也能了解您对我们产品的看法,作者也能看到您对他们书籍的反馈。谢谢!
欲了解更多关于 Packt 的信息,请访问 packt.com。
第一部分:信息安全风险管理与治理
在本节中,我们将建立信息安全的核心原则,并确保与该学科相关的主题得到充分理解。
本节包含以下章节:
-
第一章,信息安全与风险管理
-
第二章,保护资产的安全
第一章:信息安全与风险管理
由于这是本书的第一页,我应该告诉你为什么你可能想购买这本书,而不是其他书籍。如果以下内容符合你,那么本书将帮助你在职业生涯中取得进展:
你可能正在寻求开始(或最近刚开始)从事信息安全工作。也许你一直在参加课程并为行业标准认证(如 CISSP 或 CISM)进行学习,但你希望找到一种方法,将那些概念(以及看似无尽的缩略语)从理论转化为实践,并开始在你所在组织的日常工作中做出改变。
在本书中,我们将帮助你将认证理论转化为可操作的实际变化,以使你的组织更安全,并帮助你在信息安全专业领域取得职业进展。
这有打动你吗?这本书现在已经加入你的购物车了吗?太好了,那我们开始吧。
本章将讨论对信息安全专业人士决策有重大影响的主要主题:风险管理和治理结构。虽然这听起来不像充满激动和兴奋的内容,但如果你能够掌握本章中提到的基本内容,我实际上可以保证你很快就能成为一台高效、运转顺畅的风险管理机器。如果这都不能让你继续往下读,那还有什么能呢?
让我们稍微正式一些,列出我们将在本章中讨论的主要主题:
-
基本的网络安全术语
-
理解为什么风险管理如此重要
-
执行基本的风险评估
-
考虑法律法规、调查和合规结构
-
创建策略的验证方法
那么,让我们开始吧!
基本的网络安全术语
在深入一些较为复杂的话题之前,我们首先需要建立一个通用的术语集,确保我们讲的是同一种语言,以便简化本书中的思想。否则,本书可能会变得过于复杂,甚至几乎无法解读。我的写作意图是减少模糊性,确保你能与我保持同步。
例如,在第一页,我说过本书将帮助你“在你所在组织的日常工作中做出改变”。在这句话中,我们可以看到一个常见的网络安全术语:组织。无论你的信息安全知识是由公司、政府、企业、小型公司、非营利组织、课外团体或其他结构所运用,它们都属于“组织”这一总括术语,而这就是我们在本书中使用的术语。
让我们看看其他一些基本术语。比如信息如何定义?信息包括数据,但也可以包括常识或知识产权。例如,经过头脑风暴会议后写在白板上的新公司口号,现在被视为“信息”,即使它不是“数据”(即以二进制形式存储在硬盘上),它也应该受到保护。
这逻辑上引出了安全,即保护状态。信息可以通过多种方式进行保护,最常见的是一个三角形或“三元组”的概念,称为CIA 三元组。你可能从其他信息安全书籍和培训中见过它,但CIA代表机密性、完整性和可用性。它们在信息安全的日常操作中非常重要,这就是为什么它们再次被提到:

图 1.1 – CIA 三元组
机密性是指保持信息的秘密性,确保只有被授权的人才能查看它。完整性是指确保信息未被未经授权的更改。可用性意味着那些有权限的人可以及时访问信息。CIA 三元组之所以通常以三角形(如前面的图示)表示,是因为这三个原则作为一个互相联系的系统共同作用,代表了一个资产或一组资产的安全性。
常被忽视的 CIA 三元组中的“N”是不可否认性,它的意思是,如果一个实体创建(或更改)了某些信息,那就是权威且不可争议的。这是证明数据来源的能力。
现在我们已经讲解了一些基础内容,我想讨论一下为什么风险管理对你和你的组织很重要。
理解为什么风险管理很重要
在本书中,我们将不断提到风险。为了确保我们在同一频道,花时间定义并讨论各种风险管理话题,以及它们为什么重要,是很值得的。
首先,我们将定义风险为潜在的损失。构成风险的要素有资产、威胁、漏洞、可能性和影响,我们将在本节中定义并探讨每一个要素,并在本书中不断提及。
暂时来说,信息安全风险可以总结如下:
“信息安全风险是潜在的损失,通过威胁利用信息系统资产中的一个或多个漏洞的综合影响和可能性来衡量。”
想象一下,通过理解威胁利用漏洞的可能性,再结合该威胁利用该漏洞的影响,你可以衡量与该安全事件相关的风险水平。你的组织每天都会面临许多风险,这些风险可能已经有了风险评分和年化成本,这些都是通过进行风险评估来确定威胁利用漏洞的影响,以及威胁利用该漏洞的可能性。
考虑以下简化公式:
风险 = 影响 x 可能性
组织希望通过称为风险管理的过程来最小化潜在损失,通过该过程它们识别、评估和优先考虑风险,并实施多层次的缓解控制,减少损失的影响和可能性。
那么,为什么风险管理对信息安全重要?风险管理并不是要消除组织面临的所有风险,或者为了形式而增加官僚主义。风险管理为组织的日常运营提供了透明度和问责制,并使组织的风险与其战略目标保持一致。风险管理还帮助组织为可能对其成功产生负面影响的不利事件做好准备。
在现代背景下,信息系统是大多数组织进行业务操作的核心,因此信息安全风险管理正成为每个组织整体风险管理重点的更大组成部分。
为了有效地涵盖风险管理,首先需要深入探讨几个关键的风险主题和定义。让我们开始吧!
了解资产
让我们来看看我之前写的那句总结风险的长句:
“信息安全风险是指通过威胁利用漏洞在一个或多个信息系统资产中的潜在损失,这个损失是通过威胁的影响和可能性的结合来衡量的。”
从风险的构成结构来看,我们可以看到,首先,你不能没有资产就谈论风险。你的组织拥有许多资产:数字资产、物理资产,甚至声誉资产。在本书中,我将资产定义为对组织有价值的任何事物。不同的资产有不同的风险,因为不同的资产有不同的威胁、不同的漏洞,以及在资产丢失、曝光或修改(或其处理方式)时产生的不同影响。
现在,有些公司资产可能与信息安全风险没有显著关联,比如几年前公司聚会上的一箱 T 恤。让我们先专注于将你组织的“皇冠明珠”信息资产记录到资产登记表中;随着进展,我们可以随时添加更多资产到登记表里。
资产登记表或资产清单是列出组织资产的文档。创建这样的文档(并保持更新)将有助于风险管理过程中的各个方面,因为在这个资产登记表中,你将开始构建与资产处理相关的各种组织方面,并基于这些资产识别风险。文档中的信息可能包括资产所有者、资产分类、资产价值等。
在我们深入探讨之前,我认为值得展示一下如何为我们的组织创建一个极其简单的资产登记表。它最开始可能看起来像这样:

本质上,在这份文档中,我们将为每个资产分配一个 ID、一个简短的名称、一个描述以及与该资产相关的任何备注。我们可以根据需要添加“资产所有者”、“资产分类”或“资产价值”等栏目。这取决于你的需求,以及你希望如何构建本书中将要涉及的各种文档。
如果你正在寻找一些灵感,考虑把哪些资产放入你的资产登记表,一些典型的信息资产可能包括信息系统,例如服务器、软件、支付终端、路由器或笔记本电脑。然而,这也可以包括信息本身,例如数据集、图像、蓝图、公式,或者其他知识产权或(IP),例如。
现在我们已经讨论了资产,让我们继续了解威胁。
了解威胁
回顾那个关于风险的长句子,我们可以看到,没有威胁就没有风险。威胁及其威胁行为者(即威胁行为的实施者)可能包括恶意黑客窃取公司记录,不忠员工将机密卖给竞争对手,严重风暴摧毁你的办公地点,或会计部门的那位善良女士打开了一个 PDF 文件,从而在整个组织网络中释放了勒索病毒。
每个资产可能与多个威胁相关联,而且每个威胁行为者可能有不同的目标和能力,这意味着他们可以利用不同的攻击方法。随着不同方法的出现,伴随而来的是不同的可能性和不同的缓解控制,因此每个可行的威胁应该在一种叫做威胁建模的活动中考虑,在这个活动中,我们记录了组织中各个资产所面临的各种威胁和威胁行为者。
首先,从一组默认的威胁开始,考虑以下内容:恶意外部人员、恶意内部人员和意外的内部人员有威胁行为者,而环境威胁则没有。
在思考威胁行为者时,考虑他们的能力、兴趣和战术。以恶意外部人员为例,你还可以进一步细化,将他们分为更具体的类别;例如:
-
单独行为者可能经验丰富或缺乏经验,但随着主要黑客团体和政府机构发布复杂工具,曾经被称为"脚本小子"的行为者现在也能够访问或更改你的信息,甚至使其无法使用。
-
团体行为者是可能的分布式团队,具有资金支持,可能包括黑客激进分子、犯罪组织甚至竞争对手。
-
国家支持的行为者拥有时间、国家资助和国家工具,是最复杂的威胁,但他们有特定的利益,这些利益可能与其他两组的利益不同。
让我强调一点,没有明确的“正确方法”来做这件事,因此你需要确保创建适合你组织的内容。如果国家支持的行为者当前对你的组织不是一个相关威胁,你可以在文档中为他们创建一个占位符,并注明他们当前不是相关威胁。将来,如果一个以前不相关的威胁变得相关,你已经有了占位符,可以用新信息进行更新。
这里需要提到的另一点是(显然)天气模式,如飓风和洪水没有威胁行为者,因此没有利益或战术。然而,它们确实有可能通过可用性中断或数据丢失直接影响信息安全。你可以评估它们发生的可能性,并了解它们是否会影响你的资产。洪水会破坏地下室,这意味着存储在你地下室的信息资产更有可能受到这种威胁的影响。
我们将在第三章,设计安全的信息系统中深入探讨威胁,包括各种威胁行为者类别及其动机,因此让我回到讨论风险基础的内容。
理解漏洞
既然我们已经讨论了资产和威胁,接下来我们必须理解的风险要素是漏洞。没有漏洞,就无法形成风险,原因如下(正如我们之前提到的):
“信息安全风险是指可能的损失,通过威胁利用一个或多个信息系统资产中的漏洞的联合影响和可能性来衡量。”
那么,关于 漏洞,我们指的是资产的弱点,威胁可以利用这些弱点。漏洞可以根据资产类别有所不同,硬件资产可能受到过热或磨损的影响,而软件资产可能因为代码缺陷而存在漏洞。本书将更深入地探讨漏洞的构成以及如何缓解它们,因此在深入讨论之前,我将停留在这一简化的定义上。
我们现在已经涵盖了一些风险管理中的关键概念,并了解了作为信息安全专业人士,风险管理为何如此重要。接下来我想讨论的是,如何在实践中进行一个非常基础的风险评估,并且我们如何利用风险评估来了解我们组织面临的风险。
执行基本的风险评估
在本节中,我们将简要介绍如何通过利用之前提到的公式 风险 = 影响 x 可能性 来实际计算风险得分。通过现在的讲解,我们将在 第二章《保护资产安全》中更深入地探讨这一主题,并能够回答以下问题:
“我们为保护组织的三项最宝贵资产采取了哪些缓解控制措施?”
然而,从我们目前所讲解的内容来看,我们尚未准备好深入探讨如何将信息安全管理体系(ISMS)实施到我们的组织中。话虽如此,我们将在下一章结束时深入讨论!在此之前,值得介绍的是,如何以非常简化的方式评估风险。
设想你被聘为凯奇普公司的信息安全官员。凯奇普公司的“皇冠级”资产就是你们的番茄酱秘方。假设凯奇普公司的顶级竞争对手(他们卖的番茄酱非常糟糕)不知怎么的成功获取了你们的秘密配方并偷走了它。这样做的影响会是什么?这种可能性有多大?
我们知道,风险是威胁利用漏洞的影响和可能性的综合结果。通过了解我们的资产、其漏洞以及可能面临的威胁,我们可以开始计算风险。
仅以这个例子为例,我现在可以告诉你,凯奇普公司的番茄酱配方存储在该组织的网络附加存储 (NAS)中,可以通过访问域名“networkstorage.theketchupcompany.com”并通过网页浏览器从外部访问,无需用户名或密码即可访问。此外,我还可以说,竞争对手若能够访问这个秘密配方,每年将导致凯奇普公司损失超过 5%的年收入。
首先,我想借此机会在 The Ketchup Company 的资产登记表中添加两个资产,如下所示:

好的,现在进行一些基本的整理工作。接下来,让我们用这个示例场景进行一个基本的风险评估,并实际涵盖我们迄今为止讲解的一些概念。
定义和计算影响
为了计算风险,我们需要定义组织如何看待可能面临的各种影响,这些影响可能是由安全事件引起的。这些值将依赖于你的组织,并应与具有详细财务和运营了解的相关利益相关者讨论。
对于一个简单的入门示例,可以尝试这个:
如果组织因安全事件失去超过 5%的年收入,则被认为是“灾难性的”,而 3%-5%为“高”,1%-3%为“中等”,0%-1%为“低”,低于 300 美元为“微不足道”。
使用这些定义,我们可以创建一个影响定义表,如下所示:

这是一个相当基础且不成熟的示例,说明我们如何定义发生安全事件时可能产生的影响。收入百分比可能不是最好的衡量标准,因此你可以考虑定义的金额范围,或净收入百分比等。这不一定是完美的,但这个示例让我们初步了解风险管理,为本书剩余部分中扩展各种基于风险的主题打下基础。
定义和计算可能性
接下来,为了理解可能性,我们必须定义组织如何看待各种可能性的等级。对你的组织来说,每年一次是高可能性,还是低可能性?
对于一个简单的入门示例,可以尝试这个例子:
5 的可能性得分被定义为“每年发生一次或更多次”,1 的得分为“每 10 年或更久一次”,中间的年份分别得 2、3 和 4 分。
参考以下表格来查看可能性定义表的示例:

这样,我们成功地定义了为The Ketchup Company评分可能性的方式。记住,定义影响和可能性的最佳方式取决于你的组织,但正如我们所说,这只是为了为本书剩余部分中扩展各种基于风险的主题打下基础。
计算风险
现在,我们可以回到我们的示例,尝试确定竞争对手访问凯丘普公司(The Ketchup Company)秘密番茄酱配方的可能性和影响评分。根据我之前提供的细节,我们知道配方存储在公司的 NAS 上,并且这个 NAS 可以从外部访问。实际上,我们知道任何访问"networkstorage.theketchupcompany.com"域名的人都可以访问配方,不需要用户名或密码,我们还知道,竞争对手能够访问这个配方将导致公司损失超过 5%的年收入。
首先,让我们确定这个示例的影响。参考我们为影响定义创建的表格,我们可以看到,年收入损失 5%意味着与该事件相关的影响评分是“5”或“灾难性”。
我在这里提供了表格供参考:

现在,影响评分已经确定,接下来的步骤是确定该事件发生的可能性。您可以通过历史记录来尝试确定可能性。您可以向组织中的利益相关者提出以下问题:
-
这个事件以前发生过吗?
-
这个事件发生的频率是多少?
-
发生的时间是什么时候?
有时,如果您的组织以前没有记录过违规或信息安全事件,或者他们没有足够的可见性来判断事件是否发生,那么就没有历史数据可用。
有时,您的组织会获得一个新资产,伴随着新的漏洞,或者新的威胁出现,从而带来新的风险。
在这些情况下,调查并理解资产、威胁、漏洞以及各种风险事件的影响和可能性非常重要。我们将根据需要经常进行这些工作,以了解组织面临的风险。
让我们来看一下我们的示例系统。实际上,配方的访问可以通过网页浏览器完成。访问配方的 URL 很容易被分享给组织外部的任何人查看。此外,它还可能通过谷歌搜索结果被找到,或者通过自动化系统发现networkstorage子域名。任何人都无需用户名或密码即可访问配方。
在这种情况下,假设我们考虑了我们的威胁行动者的动机(在这种情况下,是一位拥有糟糕的番茄酱的竞争对手)和能力(有传言称他们曾从芥末公司偷取了他们的芥末配方)。有了这些信息,我们可以确定,考虑到当前的配置,以及目前缺乏任何安全控制来保护配方免受未授权访问,我们的竞争对手很可能在明年内找到这个配方。
如果我们参考之前创建的可能性定义表,并考虑我们之前提供的与可能性相关的信息,我们可以确定这个特定示例的可能性分数是“5”。
请查看下表以获得提醒:

所以,现在我们已经为示例定义了影响分数和可能性分数。接下来,我们必须计算风险。在此之前,值得展示基于不同影响和可能性水平的风险分数的可视化表示。如果我们将之前提到的风险 = 影响 x 可能性公式以风险矩阵的形式呈现,我们将看到类似下面的内容:

图 1.2 – 风险矩阵
让我们解读这个图表:
-
x轴表示影响,包括我们之前表格中定义的每个影响水平对应的数字“分数”。
-
y轴表示可能性,包括我们之前表格中定义的每个可能性水平对应的数字“分数”。
-
通过将来自影响轴的一个数字与来自可能性轴的一个数字相乘,你会得到一个风险分数。在本例中,范围是从 1 到 25。
这是我们在本章中多次提到的风险公式的常见说明方式,因为它有助于通过不同的影响和可能性水平,直观地展示风险水平的递增。
如果我们对我们的示例进行计算,其中我们确定事件的影响得分为“5”,事件的可能性得分为“5”,那么我们该如何操作呢?是的——就像简单地将“5”乘以“5”,得出一个风险分数“25”。
好的,但接下来我们该怎么做呢?这个风险水平可以接受吗?是不可接受的吗?让我们来看看下一步。
风险承受度、风险处理和风险接受
由你的组织相关方决定接受的风险水平,这也称为组织的风险承受度。
显然,我们需要适当地定义影响和可能性,以反映组织的风险承受度。如果一个风险被确定为具有最高的可能分数,就像我们的示例,但相关方似乎并不介意,这意味着他们对于影响和可能性的定义在我们的表格中没有得到适当反映。
在风险矩阵图中,我们还可能注意到的一件事是那条深黑色的线,它将高于“7”的风险分数与其他分数分开。这就是风险承受度或风险接受水平,它在风险矩阵中被直观地表示出来。在这种情况下,组织的相关方已经决定,任何风险的风险分数超过“7”都被认为是不可接受的,并需要进一步的风险处理。
风险处理是我们选择控制措施来调整风险级别的方式。我们可以“规避”、“降低”、“转移”或“接受”风险。让我们看一下:
-
风险规避是通过完全消除风险的可能性来实现的,通常通过不执行任何会导致风险的行为来达到。
-
风险降低是通过降低影响或可能性级别来实现的,通常通过缓解控制。
-
风险转移是通过将全部或部分风险转移给第三方来实现的,例如通过外包或保险。
-
风险接受发生在组织意识到某个风险不需要进一步缓解,或者进一步缓解该风险不可行时。
缓解控制是我们用来保护每个资产免受威胁的手段。它们可以包括各种方法和工具,但如果我们继续使用“番茄酱公司”的番茄酱配方可以通过网络访问的例子,一种风险降低的方式可能是实施一个缓解控制,要求输入密码才能访问这个秘密配方。
一旦采取了缓解控制措施,你的剩余风险就是在应用缓解控制后剩下的风险级别,因为缓解控制通过降低威胁能够访问配方的可能性,从而改变了风险。
一旦剩余风险降低到风险接受水平以下,我们可以认为剩余风险水平是可以接受的,从而实现风险接受。
让我们进一步考虑一些漏洞,譬如以下内容:
-
一个有缺陷的密码输入页面
-
一个弱密码,"
hunter2" -
一个不需要我们登录的直接链接到配方
我们需要为这些内容计算风险得分,以了解组织面临的风险。为了记录各种风险,我们可以为组织创建一个风险登记册。通过这样做,我们将构建出组织的信息安全管理体系(ISMS)。这听起来是不是你经历过的最有趣的事情?
正如我们在本节开始时所说的,我们将深入探讨如何构建资产登记册和风险登记册,详见第二章《保护资产安全》。现在,继续讨论一个对下一章有用的概念更为合理:信息安全专业人员面临的各种法律法规和合规要求。
考虑法律法规、调查和合规结构
在信息安全领域,一些行政程序和监管结构可能非常复杂,或让人感到压力山大。考虑到合规性时,无论是监管和法律要求、审计、问卷调查还是责任问题,都可能让人觉得这完全是另一个工作。许多时候,组织内可能没有专门负责这些合规结构的人,因此,你可能需要比任何其他人都更加熟悉如何应对这些挑战。
我想讨论一下这些结构将如何成为你日常责任的一部分,以及我们如何利用预定义的要求来确定组织的可接受风险水平。此外,在本节结束之前,我还想强调持续改进在合规性中的重要性,以及这一要求如何帮助你和你的团队将优化作为重点。
合规性结构
我们需要探讨的信息安全团队的职能,主要是理解贵组织信息安全计划的要求。这些要求可能来自政府机关、立法机构或认证机构。以一些标准为例,许多组织负责确保在处理个人数据时遵守隐私相关法规和法案。目前全球已有数百条相关法规,而到你阅读本书时,相关法规数量还会增加。以下是一些隐私法规的例子:
-
通用数据保护条例(欧盟) (EU GDPR)
-
儿童在线隐私保护法案 (COPPA)
-
健康保险流通与责任法案 (HIPAA)
-
加利福尼亚消费者隐私法案 (CCPA)
这些法律和法规被视为法律义务,未能遵守其要求可能会带来巨大的财务和声誉影响。
大多数隐私法规在处理个人身份信息 (PII)或受保护的健康信息 (PHI)时,都会侧重于透明度。有些法规专注于年轻人,而其他则专注于特定法域的人群,如加利福尼亚州、巴西或欧盟。大多数法规要求你为数据主体提供审查和撤销访问任何个人数据的能力,同时要求你的组织公开信息的处理方式、地点以及由谁处理。
除了那些政府的合规要求外,还有一些由国际标准化组织(ISO)等机构提供的标准,旨在创建信息安全的最低可行基准。这些标准可能包括ISO 27001,我们之前已简要提到过,主要关注如何管理信息安全,或ISO 27018,它专注于为云隐私提供实践规范等等。通常,符合这些标准要求的组织可以通过第三方认证机构进行审计,并且能够获得符合标准要求的认证或资质。
这些认证在客户(包括潜在客户和现有客户)以及合作伙伴公司中被高度重视,尤其是在企业对企业(B2B)的世界中,作为第三方证明组织已达到最低的安全基准。例如,许多将其 SaaS 销售给其他企业的组织,会展示他们持有来自认证机构如英国标准协会(BSI)、德勤或类似咨询公司的ISO 27001认证。这些不同的标准有不同的目的,适用于不同的组织。
为了跟上所有要求,使用结构化的解决方案来编目组织中的所有要求并快速报告环境的当前合规性是非常有价值的。这些规定的变化可能每天都会发生,并且根据组织的不同,这可能意味着保持最新状态需要一支全球分布的团队,全职工作并将法律要求转化为一个单一的合规要求矩阵,随后由组织内部进行审计。在撰写本文时,来自 750 个监管机构的每日更新已经超过 200 次。
当前有许多软件解决方案由不同供应商提供。基本上,这些软件通过在您的环境中提供自动化和持续的评估扫描,简化了您的合规管理流程,用以监控您的数据保护控制措施,同时为您提供分配任务和记录每个要求进展的功能。这些工具可能会为您提供推荐的操作和如何实施能提升合规状态的控制措施的指导,并将您现有的控制措施映射到不断变化的合规要求中。大型组织持续面临合规风险,这可能意味着每年损失数百万美元/欧元/英镑,因此许多企业愿意为这种工具付费。
了解法律和监管要求
许多法规或标准中的要求并不完全是软件解决方案能够自动追踪的类型。比如,软件解决方案怎么知道您在员工离职面谈时是否关闭了所有账户和服务的访问权限?了解您的组织如何实际管理各项合规要求通常需要与组织中的每个团队合作。是的,这包括法律和人力资源团队,并且还需要进行内部审计,确保您的组织言行一致。
所有这些控制措施都与您的信息安全计划相关,应定期记录并审核更新。当我说“定期”时,您可以根据自己的理解来定义,但请牢记贵组织的合规要求。例如,一些标准要求提供年度审查和政策及控制更新的证明。
假设番茄酱公司员工最近有点运气不错,他们成功地将大量的个人身份信息(PII)迁移到云端。一些数据主体是欧盟公民,另一些则位于加利福尼亚,因此这次迁移前的准备工作包括了以下几个方面:
-
正在进行的处理和存储类型
-
处理和存储这些数据的原因
-
他们被允许处理和存储数据的法律依据
-
隐私政策和文档的更新
-
通知数据主体有关变更的情况
大多数数据主体可能会惊讶于他们最喜欢的番茄酱公司竟然持有他们的数据,但在这个数据驱动的社会中,不了解客户的番茄酱公司是不负责任的。
一些数据主体决定不希望其数据由番茄酱公司存储,并提交了主体访问请求(番茄酱公司在规定的时间内做出了回应),以及数据删除请求(同样,番茄酱公司也在规定的时间内做出了回应)。听起来,番茄酱公司已经顺利有效地运行了其隐私合规要求!
然而,合规性并不仅仅是关于隐私或符合标准认证。正如我们之前提到的,全球范围内有许多不同类型的法规和要求,例如萨班斯-奥克斯利法案(SOX),该法案要求公司保存财务记录长达 7 年,或联邦信息安全现代化法案(FISMA),该法案要求所有联邦机构为其信息系统制定保护措施。理解各种框架、标准、法规和法律如何适用于你的组织是信息安全团队的一项重要任务,目的是避免罚款和处罚,同时为应对信息安全风险提供良好的保护基础。
响应并进行调查
即使你所在的是一个员工非常少的简单组织,也依然有可能发生某些事件,这些事件可能发生在你的资产上(或与资产有关),需要你自己、你所在组织的其他人,或其他组织进行进一步调查。这可能包括从找出是谁删除了共享驱动器中的文件,到关于内幕交易的法律调查,或将服务器日志交给执法部门进行取证。作为员工,也是一个守法公民,遵守这些请求是在法律允许的范围内的责任。你最不希望的就是被发现妨碍调查;那样做实在是不值得的。
有许多解决方案可以帮助你遵守此类请求,包括将法律保留措施应用于电子邮件收件箱以“冻结”活动、存储快照、或确保像电子邮件或文件这样的项目在员工删除时不会被真正“删除”。借助软件和信息系统,组织比以往任何时候都更加掌控,以确保其员工遵守法律和公司高级管理层制定的政策协议。
当涉及到对未授权访问或某种完整性问题的内部调查时,有时可能需要确保帮助调查的人无法得知调查的对象和内容。这听起来非常棘手,但实际上,存在提供伪名化的工具,这使我们能够通过分配别名来追踪用户的活动。这可以防止调查人员产生偏见或与调查对象串通。
信息安全合规领域的另一个有趣的法律方面是电子发现(eDiscovery)。电子发现是一种识别和提供可以作为法律证据的信息的方法。通过使用电子发现工具,你可以在邮箱、共享组、Teams/Slack/Skype 聊天、共享驱动器和设备硬盘中查找内容。你可以精确地过滤搜索结果,以便识别、保留并与相关方共享结果,但不包括任何与调查无关的额外数据。在这些事件中,使用电子发现工具可以减少成本、时间和复杂性。如果你参与这个过程,你将与专门从事这项工作的人员合作,并且提供你对你所在环境及其结构的了解可能会成为你的责任。
进一步的合规性优化
记住,大多数信息安全标准的一个重要部分是持续改进的原则。为了使数字环境中的操作变得安全,我们还有很长的路要走,优化需要不断进行!我们需要将自己置身于工程师的思维模式,带着批判的眼光来看待世界。在本书的接下来的部分,我会不断提醒你持续改进的要求,并提供一些示例供你应用于你的环境。
以一个简单的例子为例,我们回到之前提到的例子组织——番茄酱公司。假设你(作为信息安全经理)在应对本地服务器硬盘故障的情况下,执行了一份恢复备份的事故响应手册。过程中,你注意到,备用硬盘在数据从备份恢复后会达到 90%的容量。你还注意到,如果冗余级别比 RAID-0 更高,可能会避免这一问题的发生。
首先,你查看你的风险登记册,并注意到你之前忽视了这一点。你将风险的详细信息添加到登记册中,并进行风险评估,根据影响和可能性的得分计算出风险分数,结果发现该风险水平超过了番茄酱公司正式定义的风险接受水平。
在与团队成员讨论并进行个人思考后,你决定在现有预算下,你可以购买一些硬盘并设置冗余,作为一种缓解措施。你提交了一个支持单,购买足够的硬盘来将容量四倍扩展,另开一个单来将硬盘添加到服务器中,然后将冗余级别提高到 RAID-1。它是完美的解决方案吗?不是;这是一项渐进的优化,能够降低服务器停机的风险,让你的员工能专注于未来的重要任务,而不是为眼前的紧急问题忙碌。
你完成了吗?当然没有。从那次优化活动中,你现在有了资产登记册和风险登记册的一些更新,以及对其他服务器和系统的进一步调查。如果你发现其中一台服务器正在运行 RAID-0,那是否意味着这种情况仅限于这台服务器?还是你将揭开帷幕,发现番茄酱公司的任何服务器和备份都没有冗余,现在需要进行高优先级的 IT 操作,以防止灾难性的故障?大概率这种情况介于这两者之间……但是,调查结果将引导你为组织启动一个项目,项目可以分解为小而可实现的目标,这些目标合并后形成的结果大于其各个部分的总和。优化后的解决方案是你可以通过展示组织面临的风险水平来为其争取资金,如果漏洞没有得到有效缓解的话。
一旦项目完成,你将进行一次风险评估,看看新的优化冗余水平是否将数据丢失的风险降低到可接受水平,记录你的结果,并向相关利益相关者展示项目成果以及改进的经济影响。听起来你正在运用风险管理的理念,并持续改善你组织的风险姿态——做得好!
创建战略的成熟方法
在本节中,我们将介绍一些成熟的方法论,确保创建信息安全战略时能取得高水平的成功。我们将讨论创建信息安全政策、程序和操作手册,以及建立和维护安全意识项目,作为任何信息安全专业人员的职责管理第三方风险,报告和持续改进,作为突出已取得进展的重点,这也是信息安全专业人员必须考虑的内容,尤其是在网络攻击日益增多、数字化依赖度不断增加的时代。考虑到这些话题,你正在为成功奠定基础,并有机会根据长期目标或环境变化来改进和调整战略。首先让我们来谈谈如何创建ISMS。
创建信息安全政策、程序和操作手册
信息安全政策、标准、基准、指南、程序和操作手册是任何信息安全策略的支柱。我们已经在本章中阐明了这一点。话虽如此,如何制定这些内容呢?一个人如何管理并创建这些充满术语、指导方针和政策的文件,以供像“Ketchup 公司”这样的组织使用呢?
创建信息安全管理体系(ISMS)是你和你的组织在信息安全风险方面获得适当可见性的一个重要任务。我将在第二章《保护资产安全》中进一步讲解创建 ISMS 的过程。
在那之前,请记住,完成马拉松、爬坡或任何日常工作中的比喻性挑战的关键是一样的:你从迈出第一步开始。每次专注于一个小时,逐步构建适合你组织的结构,将确保更好的可见性和更少的未知因素。当你在日常工作中的交流和经验中遇到与信息安全相关的主题时,记下它们并保持笔记。注意人们说了什么、做了什么以及发生了什么最常见的情况,并利用这些信息来帮助你的ISMS项目。
建立并维护安全意识、教育和培训项目
信息安全政策需要为组织的所有成员所理解。任何新成员需要立即了解相关要求,之后还需定期提醒。此外,请记住,你需要对关键员工进行整个信息安全项目的培训,而其他员工则需要根据他们的工作角色培训相关要点。你要确保组织在发生任何故障时不会只依赖你(而仅仅是你)。你也希望能享受假期,对吧?更重要的是,你希望即使在你离开后,企业仍然能够作出反应,并且希望员工了解他们在信息安全相关主题和情境中的责任。
因此,你将需要创建培训材料,确保组织成员了解并接受其信息安全要求的教育和培训。对于新成员,取决于你组织的性质和规模,你可以安排几小时介绍自己并讲解组织的信息安全政策,或者你可能需要将这一过程更加正式化,制作文档或培训视频,以便扩展。通常,组织的新成员会签署一份协议,承诺遵守已讲解的政策和实践,该协议会存档并每年更新。
许多人在这个行业中说,员工是组织中最大的漏洞,并暗示如果员工被钓鱼骗局欺骗,那是员工的错。例如,针对这一点,我要说,"我们怎么能责怪受害者呢?" 让我们看几个我们可能想要问的问题:
-
是否有充分的培训措施?
-
是否进行了钓鱼模拟测试,以识别处于风险中的员工?
-
在他们的日常工作中,是否有可用的安全方法来执行任务?
信息安全团队的责任很可能是确保组织成员了解他们面临的威胁。有很多有效的方法可以将一个本来可能成为负担的人,转变为你安全策略的拥护者,只需通过展示这个领域有多么有趣,并提供激励。这就是创建引人入胜且有趣的培训材料的价值,这个想法在你的整体信息安全战略中永远不应被忽视。
管理第三方风险
说实话,云计算是未来发展的方向。新闻快讯,对吧?即使是最慢、最谨慎的企业也在向云端迁移。银行都在向云端迁移!政府也在向云端迁移!你可以举出任何例子。从亚马逊 Web 服务(AWS)、谷歌云平台(GCP)到微软 Azure 进行托管,再到Office 365 和 G Suite 用于文档管理,再到成千上万种不同的 SaaS 产品用于项目管理、源代码库、会计软件、人力资源管理、数据丢失防护、安全信息和事件管理(SIEM)等,现代信息管理解决方案正越来越多地转向共享责任模型,您的组织所面临的部分风险成为了第三方的责任需要缓解。那么,那个第三方云计算会计软件是如何确保其资产安全的?他们是否提供了相关信息?仅仅因为你没有在自己的服务器上托管软件,并不意味着在安全性、合规性、尽职调查和风险降低方面你就可以完全免除所有责任。你的组织的数据正在由第三方控制的资产处理,但它仍然是你责任的一部分,需要考虑。
利用各种软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)解决方案带来了新的要求:跨越国际边界传输个人身份信息(PII)可能会触犯法律。第三方以明文形式存储贵组织的数据,在内部人员威胁查看这些信息时可能会造成灾难性的后果。将平台托管在一个你并不知情、未打补丁并且容易被网络上已知漏洞攻击的第三方服务器上?这又是一个影响贵组织成功的风险。你如何应对这个问题?难道不应该是云服务提供商(CSP)的责任来更新他们的系统或加密你的数据吗?除非他们已经同意这样做,否则很可能不是。你如何确保一个组织言行一致,做到言之成行、行之成言?
首先,当你拥有具有法律约束力的服务水平协议(SLAs)时,你会感到最安心。SLAs 是第三方的承诺,他们将维持一定标准的服务,确保可用性、机密性和完整性等方面的要求。例如,云 IaaS 的 SLA 通常规定,如果因故障导致可用性低于 99.9%(或 99.99%、99.999%)的月度或年度标准,第三方将降低客户的费用。这种情况有时被称为“三个 9”、“四个 9”等等。它是一种帮助贵组织降低可用性风险的方式,通过抵消因可用性损失带来的财务损失。在某种程度上,你的 SLA 是一项具有法律约束力的控制措施,你可以据此报告并确保其有效性。SLA 在销售过程中是可以协商的,有时可能在客户和供应商之间来回谈判,双方可能进行多次修订和反复推敲,直到达成一致。如果你在 CSP 工作,你可能会发现自己是负责谈判 SLA 的那位信息安全专业人士。
除了服务水平协议(SLAs)外,你还可以使用被称为供应商安全评估问卷(VSAQ)的工具,它可以由当前或潜在的供应商填写。VSAQ 的作用是询问一套标准问题,进行尽职调查和记录保存。这些问卷的回答应在采购阶段考虑,以风险为分析的核心。通常,VSAQ 会涵盖供应商的安全计划、他们为保护自身资产所采取的控制措施、员工的培训和安全意识以及供应商定期进行的审核类型(及审核结果)。VSAQ 是一个记录你支付的公司信息安全负责人意见的方式,该公司负责处理或存储贵组织的机密数据、业务流程以及 PII 或 PHI。
你有责任证明,在将数据处理和存储外包给第三方时,已经在每一个决策中尽到了应有的谨慎和注意。如果第三方发生了安全事件,你需要能够证明你是基于第三方问卷答案的证词做出的明智决策。如果他们没有按照你希望的方式处理特定威胁,要记下这一点,并且可能还需要与他们的信息安全团队讨论。你可能会发现,实际上的改进计划已经列入了发展路线图。
不要担心讨论 SLA 或 VSAQ 时显得麻烦。任何值得你投入时间的供应商,都必须回答过类似的问题,并与其他组织谈判过类似的条款,甚至可能已经准备好了相关答案。如果你在云服务提供商(CSP)工作,并负责亲自回答这些 VSAQ,那么你完全有理由将你对这些问卷的回答进行归档,并创建一个 VSAQ 常见问题(FAQ)。这将为你节省无数重复劳动的痛苦时光。在我之前担任 SaaS 供应商角色时,我准备了一份隐私和安全白皮书,回答了 VSAQ 中提出的所有问题,附带了图示和技术细节,然后我将其传递给每一位潜在客户,让他们浏览并填写自己的问卷。在 GDPR 生效的“开始日期”临近时,这非常有帮助,因为有成千上万的客户急于证明尽职调查和谨慎,自己制定 VSAQ 版本并发送给所有供应商。
Google 的 VSAQ 网页应用程序(opensource.google/projects/vsaq)允许供应商通过应用程序填写答案,或者从文件中加载答案,然后提交对标准 VSAQ 问题的回应。不幸的是,我并没有看到足够多的供应商或客户使用这种格式。如果能统一标准,创建“黄金标准”的 VSAQ,并让我们大家继续致力于提升组织安全性,那将节省大量时间。另一种类型的问卷是云安全联盟共识评估倡议问卷(CAIQ),可以在cloudsecurityalliance.org/artifacts/consensus-assessments-initiative-questionnaire-v3-1/找到。
将这些信息保存在你的信息安全管理体系(ISMS)中非常重要,以备第三方发生安全事件时使用。如前所述,你需要能够展示适当的谨慎。如果你能证明风险已经被评估并认为是可以接受的,这有助于证明你并没有疏忽。虽然看起来可能有些多余,但监管机构和利益相关者将希望了解导致决策的细节,因为他们可能需要向董事会成员、利益相关者、客户、监管机构、执法部门或政府机构解释相关问题。
持续改进与报告
另一个需要记住的重要事项是持续改进的理念。新的漏洞被发现,新的技术不断浮现,系统也在不断变化。随着新漏洞的出现以及新威胁的产生,你组织中所有已实施的结构和控制措施都需要不断改进,以减少信息安全风险。保持对威胁和漏洞的最新了解非常重要,同时确保你的资产和风险登记表也保持更新。
如果组织中的任何控制措施失败或可以被规避,那你会处于什么位置?如果答案是“完全暴露”,那么你就没有足够的深度防御。这是一个需要理解的重要概念:双重锁定。充分的深度防御可能不会减少风险,而是允许某个控制措施失败,但你依然可以将剩余风险降到最低。
除了深度防御之外,以工程师的视角看待世界对信息安全专业人员也是非常有益的。你可以改进流程和系统,使其更轻便、更快、更自动化、更有效、更具可扩展性、更易访问,并且减少错误。减少某个控制措施的成本可以让你建立更多的深度防御,并减少复杂性,而复杂性是安全的敌人。
为了跟踪你的进展,你可以保留风险登记表的历史版本,可能按财务季度、半年或年度保存。这样,你将获得一个关于在组织中产生的影响的优秀数据集,并且有助于你为过去一年中他们悬而未决的加薪请求提供依据。制作图表,放入 PowerPoint 演示文稿中,定期向组织中的利益相关者更新进展、成功案例和阻碍因素。根据你的组织情况,如果你处于信息安全的顶层职位,你可以将 CIO、CTO、CFO,甚至可能是 CEO 纳入这些对话中。同时,法律和人力资源部门对内部威胁、法律义务及其他合规要求也会感兴趣。不要浪费他们的时间,确保内容保持非技术性和高层次,适合只关心最终结果的 C 级高管:“这花费多少,能节省多少?”你可以通过风险报告来展示你的项目的投资回报。
有时,你会发现一些非常感兴趣的利益相关者,他们对发现的内容印象深刻。其他时候,你会发现一些人根本不在乎,只是因为必须参加才在场。确保让所有观众都有理由关心这个话题。CFO 关心的内容和 CTO 不同,但他们都有自己的理由想保持运营正常,确保资金流入。
概述
本章讲解了那些对信息安全专业人员决策产生重大影响的主要话题:风险管理和治理结构。当我介绍这些内容时,我说过这可能听起来不像是一个充满刺激和兴奋的热门话题,但我相信现在你读到这个总结时,你对这个问题的看法已经稍微有所改变。我可以说,只要在掌握本章中的基础知识上多加练习,我对你做出的承诺——你将迅速成为一个高效、运转良好的风险管理机器——定会成真。
在下一章,我们将讨论如何保护资产的安全,这现在已经是一个更为可实现的任务。你已经了解了各种核心概念,我们接下来将利用本章中所覆盖的所有内容,推动建设一个更加成熟的 ISMS(信息安全管理体系),并通过专注于有效的流程,进一步提升你的技能,确保你能在资产生命周期的各个阶段识别和保护组织的资产,同时避免信息安全专业人员常遇到的一些常见陷阱。
让我们开始吧!
第二章:保护资产的安全
本章开始时的原始概念是问你“如果你不知道组织拥有哪些资产,你怎么保护组织?”。我们都知道这个问题的答案是“你无法保护”,我们之间可能已经被问过一千次这个问题,所以我不打算再问了。相反,我将向你展示如何在你的组织中构建适当的流程,以便发现并保护其资产。
这些不同的流程组合成了我们所说的信息安全管理体系(ISMS)。我们在第一章中讨论了各种关键概念,信息安全与风险管理,但总体上,与大多数组织所需的结构相比,这些内容的结构性要少得多。我们希望通过 ISMS 能够恰当地识别和分类组织的资产,并确保通过实施适当的控制措施,考虑到纵深防御的原则,保护这些资产的安全,涵盖机密性、完整性和可用性三个方面。
本章将重点讨论这些话题。我们将探讨如何利用有效的流程来实施一个高效的信息安全管理体系(ISMS)。这一体系通过根据业务需求确定的政策和程序,确保风险降到可接受的水平。
以这个目标为前提,我认为按照以下四个阶段的结构进行本章讲解是合理的:
-
如何实施信息安全管理体系(ISMS)
-
识别和分类组织信息资产的适当过程
-
根据资产的价值,通过适当的控制措施来保护这些资产,监控变化并适应这些变化
-
资产处置,无论是通过归档还是销毁
所有这些要点将以一种帮助你避免信息安全专业人员在过程中常见陷阱的方式进行讲解。
现在,基本的准备工作已经完成,请允许我继续讲解实际内容。
实施信息安全管理体系(ISMS)
实施信息安全管理体系(ISMS)需要结构、规划、果断和协作。存在一个极为重要的问题,“谁负责什么?”,这个问题应该被提出并记录。我想简要讨论一下高层管理的角色,以及我们如何将我们的发现转化为关于风险的有效沟通,传达给相关受众。改进这一点应该能让你在未来的缓解策略中更加有权威性。
一旦业务目标被转化为 IT 目标,并且获得了适当的支持,我们就可以进入实际的政策制定阶段,这些政策将作为你组织的信息安全“规则”。在能够系统地定义安全的“基线”、组织资产、减少风险并将信息安全要求传达给组织成员时,这一点至关重要。
接下来,我想谈谈评估和改进这一政策,牢记信息安全的经验法则是持续改进和优化。在这样一个快速变化的领域,保持对事物的掌控并适应变化将带来回报。
所以,系好安全带!我们要谈论治理和政策!我知道这听起来多么激动人心。
高层管理职责
首先,需要记住的是,涉及信息安全的任何事情,最终高层管理才是负责的。实际操作中这意味着什么呢?嗯,他们雇佣了你。作为一个听到信息安全责任日益增大的 CEO,雇佣一个信息安全专业人士来委派这些责任是最合乎逻辑的做法。
高层管理在信息安全中的另一个作用是有效地传达组织的战略目标。牢记这些目标,你就能够将所有的信息安全要求与这些目标对齐。
所以,现在你已经被雇佣了,并且决定由你负责理解与特定组织相关的风险,并以易于理解的方式将这些风险传达给 CEO、CIO、CTO 或其他C 级高管。这是一种非常正常的情况,但话说回来,我也遇到过一些负责组织安全的人,他们似乎从未向 C 级高管报告自己的发现,然后抱怨公司没有重视安全。是的,当然没有!他们怎么可能重视呢?
现在,责任落在你身上,你需要评估组织面临的风险,并将其转化为一个合理的商业案例,向公司高层管理人员说明,方式要易于理解。记住,这些人是高层管理人员!他们的童年不是在浏览网页,而是在老河边玩棒球、在本地药店喝气泡水。至于他们日常使用“计算机”,也许仅限于电子邮件和(最近)移动设备,对他们来说这一切都显得神奇无比。
我的观点是:你需要了解你的受众。与 IT 部门沟通风险时,可以使用更多技术性的参考和讨论,而向其他业务部门展示时,则需要一种更易理解的方式,聚焦于组织影响。
一般来说,根据我的经验,往往花费过多的时间在技术描述上,而不是展示业务面临的可理解风险水平。将 IT 风险发现正确转化为组织影响,最终会为你的职业生涯带来很多价值,因为目前很少有 IT 和信息安全专业人员能够有效做到这一点。
当你向高层展示你的发现时,你可以使用这个例子作为传达风险的模板:
-
你今年可能会失去这么多钱:£100,000+
-
除非你保护这个系统:NAS 服务器
-
来自此威胁:外部恶意行为者通过未知的 Web 应用程序漏洞访问系统
-
采用此缓解措施:Web 应用防火墙(WAF)
-
完成它的成本是:每月 £84.42,或每年 £1,013.04
-
实施需要这么长时间:3 天
现在,考虑到这些沟通内容,我想谈谈我们将要创建的ISMS,以及如何在我们的组织中实施结构。然后,我们可以收集前面模板中提到的关键类型信息,以便沟通风险水平,并确保组织资产的安全。
开发 ISMS
ISMS 是一个定义明确的处理信息安全的方式。它确保通过系统化的方法,准确发现、衡量、遏制和减轻组织中的信息安全风险,从而确保组织能够有效防范恶意行为者、意外丢失和监管影响,并且将风险作为决策过程的核心。
ISMS 包含了根据业务需求确定的正式文档,例如操作要求、规章制度、保留期限、员工能力和业务解决方案。这些文档定义了您组织在信息安全方面的政策、程序、基线和指导方针。这是实现风险导向、成熟的信息安全项目的一个极其重要的步骤。因此,确保该 ISMS 到位并且正常运行是信息安全团队的责任。
本书的其余部分将帮助你开发和补充这些文档的内容,并使其能够实际应用,但结构并不是以任何特定方式固定不变的。你可能希望以一种能够简化符合特定法规要求的方式来构建这些文档。现有许多信息安全框架和标准,按照其中一个或多个标准来构建你的政策将会呈现出一系列逻辑性的要求。例如,一种方法是遵循ISO/IEC 27001(ISO 27001)国际标准来构建你的信息安全管理系统(ISMS)。在本章中,我将利用 ISO 27001 标准的要求帮助我们创建文档并定义政策,以构建我们的 ISMS,但请记住,也可以根据你的组织及其背景,利用其他标准和指南。
本质上,我们希望创建一组文档,这些文档将汇集在一起,定义组织的要求,并作为我们的 ISMS。这些文档的主题可以包括以下内容:
-
组织内负责人员如何创建和更新信息安全政策、程序、基准和指导方针
-
组织如何识别、分类、监控和处置信息资产
-
组织内负责人员如何识别和衡量其信息资产所面临的风险,并选择控制措施来减轻这些风险
-
你组织的信息资产所面临的剩余风险和未减轻的风险等级
通常,ISMS 中的文档会在新系统的配置、新员工的入职过程或组织成员的日常工作中被引用。例如,在上一章中,我们讨论了风险评估方法论、风险处理方法论、风险处理计划和风险评估报告等可能需要在你的 ISMS 中使用的文档。
为了开始创建这个系统,我们可以从 ISO 27001 标准要求的几个关键文档开始,专门处理以下主题,我将这些主题分为若干小节。请记住,理解你组织的要求,并将文档和流程与这些要求对齐,以确保 ISMS 的有效实施,是你的责任。
高级别的信息安全文档
当涉及到信息安全和 ISMS 的高级别政策时,你需要根据组织所需的结构程度,考虑制定几个关键文档。请记住,采用结构化的信息安全处理方法,我们可以更有效地降低组织面临的风险等级。
组织的背景
为了了解如何构建您的 ISMS,您应该能够概述您正在为其构建 ISMS 的组织背景。您还将使用此文档来定义组织对 ISMS 的要求。从组织的需求开始,您正在制定与组织的业务目标一致的政策和程序,这些目标由高层管理层定义。
您可能希望考虑任何可能影响组织 ISMS 目标的内部或外部因素。这些因素可能包括以下内容:
-
组织的性质,即组织参与的工作类型。这些问题(以及其他问题)可能与信息安全风险相关:
-
组织中是否存在政治性质?
-
组织提供哪些产品和服务?
-
组织的增长前景如何?
-
目前面临哪些威胁?
-
哪些供应商正在被使用?
-
组织需要考虑哪些立法?
-
-
信息或资产,例如定义组织的核心资产。考虑以下因素如何影响您组织的风险和信息安全:
-
您的组织处理或控制哪些类型的信息?PII、PHI、IP、财务信息,还是其他类型?
-
当前使用哪些系统来处理和存储信息?
-
-
人员,包括工作的性质。考虑以下因素如何影响您组织的风险和信息安全:
-
招聘是如何进行的?
-
人员是如何培训的?
-
当人员变动或离开组织时,如何处理?
-
考虑到这些因素后,您将更有能力设计一个符合您组织需求的信息安全管理系统。
ISMS 的范围
无论您是否遵循 ISO 27001 标准,您都可能希望定义您的 ISMS 范围。原因是,您将需要向关键利益相关者(如高层管理人员、组织成员、审计人员,甚至可能是您的客户)沟通哪些业务部分会被 ISMS 涵盖。
如何定义您的 ISMS 范围?您应将其与组织的范围及其任何组织需求对齐。可以问一下“哪些业务方面将受益于将其纳入 ISMS 范围?” 与组织中的关键利益相关者就此话题进行沟通,将帮助您理解为什么要(或需要)开始实施这个系统,包括理解风险、法规压力或客户需求。
您还可以考虑定义组织中特定的“超出范围”的过程(或领域),这可以包括贵组织无法控制的外部第三方处理活动——只要您确保第三方的做法符合您的风险承受能力。
一般而言,评估您的信息安全管理体系(ISMS)并决定贵公司是否符合认证要求的认证机构,会更倾向于看到“整个组织”都包含在 ISMS 的范围内,但这并不是硬性要求。只要您“言行一致”——也就是说,贵组织在实践中遵循 ISMS 中设定的要求,且实践符合标准——您就会符合要求。
适用性声明
不需要过多复杂的结构化说明,适用性声明是关于贵组织风险与可用控制措施之间关系的总结,并常以表格形式展示,以便将风险评分降至可接受的水平。
考虑到我们是采用基于风险的方法来选择和应用控制措施,在进行相关的风险评估之前,我们无法有效地完成适用性声明。然而,创建文档并列出可用的控制措施将有助于为该过程提供背景信息。
根据 ISO 27001,我们将查看在《附录 A》中涵盖的 14 个类别下的 114 项控制措施,并定义每项控制是否适用于贵组织。控制措施可能是适用且已实施、适用但尚未实施,或不适用。适用性声明文档应包括对所做决策的合理性说明。
本文档中的控制措施包括多种结构化贵组织 ISMS 的方法,并为如何通过政策、程序和定义来降低贵组织的风险提供了极好的见解。利用 ISO 27001 的附录A将有助于您开发 ISMS 并增强组织的安全性,但并不会提供如何具体实施这些控制措施的细节。
请参考以下表格,其中包含一个条目,说明如何构建适用性声明表格:

为了清楚地定义贵组织如何采取基于风险的方法处理信息安全,您需要为《附录 A》中的 114 项控制措施每项都添加一个条目。必须决定每项控制是否(或不)适用于贵组织,如果适用,贵组织如何实施(或计划实施)该控制措施。
关于如何实施附录 A 中所列的 114 项控制措施的进一步指导,您可以参考ISO 27002,这是 ISO 27001 的补充文件,为这些控制措施的选择、实施和管理提供指南。
信息安全政策
高级信息安全政策文件的逻辑延续将是信息安全政策本身。
正如我们在前面的表格中所看到的,我们的适用性声明表,减轻信息安全风险的第一个附录 A 控制措施是定义一套信息安全政策,并由管理层批准、发布,并传达给员工及相关外部方。
信息安全政策的总体目标是定义组织信息安全的目标,包括对组织资产的机密性、完整性和可用性所要求的可衡量要求。因此,确保信息安全政策适用于并与组织相关至关重要。制定无人能遵守或根本不会遵守的文件毫无意义;这些文件存在的唯一目的是降低组织面临的风险水平。
信息安全政策的另一个方面是承诺持续改进的理念,正如我们在第一章中提到的,信息安全和风险管理,以确保随着技术、流程和威胁的变化,组织能够保持保护状态。
其他关键定义和文件
其他定义和文件,您最好在信息安全管理体系(ISMS)中包含以下内容:
-
安全角色和职责的清单,定义谁负责组织中的安全事项。我们希望明确谁将实施控制措施,或者例如数据所有者和数据用户的职责。
-
法律、监管和合同要求的清单,特别提到关键文件和网页。如果您的组织必须遵守针对特定客户的服务水平协议(SLA),或者组织处理的数据受欧盟通用数据保护条例(GDPR)约束,那么在您的信息安全管理体系(ISMS)中以特定方式跟踪和记录这些要求将非常重要。
-
内部审计政策和程序,包括内部审计员必须遵循的具体流程,以有效检查组织的信息安全管理体系(ISMS)及已实施控制措施的有效性。
-
纠正措施的政策和程序,包括改进组织安全的具体和系统化流程。它应包括如何(以及由谁)发现、报告、记录和处理任何信息安全问题。
此外,我们还需要定义一种方式来存储和呈现以下信息:
-
业务影响分析
-
培训、技能、经验和资格的记录
-
监控和测量结果
-
内部审计结果
-
管理评审结果
-
改正措施结果
-
用户活动、异常情况和安全事件的日志
一旦我们有了这些具体的定义,我们可以继续处理 ISMS 的其他部分,包括资产管理、风险管理和业务连续性及事件响应。我们从资产管理这一关键话题开始。
资产管理文档
我从资产管理开始,而不是风险管理,其中一个原因是你可能曾听过的老生常谈:“如果你不知道组织拥有何种资产,如何保护它们?”。
这是一个陈词滥调,但这并不意味着它不成立。在你的 ISMS 中,你必须定义一种方法,不仅要了解你组织拥有的信息资产,还要明确如何分类这些信息,以及如何以安全的方式处理这些资产。只有这样,你才会开始充分理解你组织面临的风险,并能够采取控制措施,将风险降低到适当的水平。
通常,管理信息资产的生命周期会遵循以下四个步骤。我已在括号中列出 ISO 27001 的要求:
-
将信息资产添加到资产清单中(A.8.1.1)
-
根据法律要求、资产价值、关键性和敏感性对这些信息进行分类(A.8.2.1)
-
对这些信息进行标记(A.8.2.2)
-
以安全的方式处理这些信息(A.8.2.3)
我将从第一阶段开始,即资产清单。
资产清单
你绝对需要有效地 catalog 并持续更新你组织的资产清单。在第一章中,我们讨论了资产可能归类的不同类别,这些定义的目的是确保你考虑到任何对组织有价值的内容,这些内容可以纳入 ISMS 的范围,或者用更通俗的话来说:任何信息,以及存储、处理或访问这些信息的设备或系统。
一旦你为组织列出了资产,你将需要对这些资产进行分类和优先排序,然后为每个资产(或资产组)指定一个资产所有者。如何结构化这一过程取决于你和你组织的需求,但请记住,资产所有者是负责(并拥有)保护资产的责任(和权力)的人。这并不意味着资产所有者不能委派日常活动,但最终责任仍在他们身上。
此外,您可能希望为您的资产分配值或关键性评分,以简化优先级排序和风险管理过程。资产关键性可以帮助更好地理解潜在风险,并得出更准确的影响评分。因此,这有助于确定应应用哪些控制措施以及应用的顺序。话虽如此,资产关键性并非 ISO 27001 的要求,因此请确保它符合您组织的实际需求,并记住,复杂性是安全的敌人。
在管理您的资产清单时,还需要记住的一点是保持其更新。此清单作为减少组织风险的工具,因此必须不断更新,以反映资产、资产所有者、价值、关键性评分或任何其他对组织完整资产清单至关重要的信息的变化。
本章稍后我们将深入探讨您可能希望如何在组织中对资产或信息进行分类,以及信息资产的角色,所以我们接下来将讨论 ISMS 文档的下一个要求——信息分类政策。
信息分类政策
本政策旨在定义组织内信息资产分类的要求和流程。它是 ISMS 中的关键文档,必须(再次)满足组织的需求,并与组织面临的风险水平成比例。
我们的目标是根据组织的法律要求以及资产的价值、关键性和敏感性对信息资产进行分类。从一般经验来看,我发现大多数组织大约会有四个分类选项,这样既能提供灵活性,又不会过于复杂,但根据组织的不同,分类的范围可能会更广(或更窄)。
ISO 27001 对所需的分类级别没有具体要求,但您可以根据您的地理位置或行业将分类与其他要求或最佳实践对齐。
一个典型的分类等级设置可能包括以下内容:
-
机密
-
限制性
-
内部
-
公开
在您的政策中,您可能会定义资产所有者根据本文档中设定的定义,负责对信息进行适当分类。
基于分类的标签
您的组织可以承诺根据资产的分类对实体和数字信息资产进行标签,并且可以在信息分类政策中设定执行此操作的要求。
在本章的后期(以及整本书中),我将介绍我们如何根据信息的分类和风险来对信息进行分类、处理和保护的各种方法,但正如你可能已经注意到的,信息安全管理系统(ISMS)中的一切都应该反映你的组织及其需求,这并没有固定的处理方式。
可接受使用政策
现在我们已经列出了组织的资产,并了解了这些资产如何分类和标记,我们应该明确这些资产应如何被组织成员、承包商和第三方使用,以符合你在 ISMS 中定义的信息安全要求。这个可接受使用政策应作为组织成员信息安全培训和教育的一部分,并且应对所有受其要求约束的成员可访问。
一些可能包括在可接受使用政策中的例子包括适用于员工的任何安全规则,例如以下内容:
-
一般使用和资产所有权政策
-
电子邮件安全政策
-
公司资产政策,如笔记本电脑和移动设备
-
使用第三方软件的政策
-
雇佣终止时归还资产的政策
-
可移动媒体(如 USB 驱动器)的处理政策
-
媒体安全处置政策
本文档应根据组织的需求以及组织成员在日常活动中如何与信息系统互动的方式来制定。此外,这些政策应与组织所面临的风险水平相适应。为了确保信息资产的适当处理,应该考虑资产分类,并定义如何处理每种分类的资产的适当政策。
风险管理文档
现在我们已经了解了组织的资产,我们可以定义一项政策,规定如何评估、处理和报告这些资产面临的风险。为了确保你的 ISMS 的有效性,这份风险管理文档必须清晰,并且必须符合你的组织的需求和能力。如果不符合,你的 ISMS 很可能无法有效地保护你的组织免受面临的威胁。还需要牢记,复杂性是安全的敌人,因此,减少文档和流程中的任何复杂性到最小程度是至关重要的。
我已经在第一章**信息安全与风险管理中介绍了重要的风险管理话题,但为了简单回顾我们在上一章所讲的内容,我们需要进行风险评估,以了解组织面临的风险,包括确定这些风险的影响和可能性。我向你保证,我将在整本书中进一步展开这些话题,包括在第三章中讨论威胁和控制类型,设计安全的信息系统。目前,我们仅仅是在关注文档和流程。
从总体上讲,组织管理风险的流程可以归纳为以下几个步骤:
-
风险识别
-
风险评估(及优先级排序)
-
风险处理,包括存储文档化证据
-
监控和审查风险,包括管理审查
首先,让我们讨论风险识别、评估和处理文档。
风险评估方法和风险处理方法
通过创建风险评估方法和风险处理方法文档,你能够明确地定义组织进行风险评估的具体方式和时间,谁负责每个步骤,如何计算风险等级,以及如何将任何不可接受的风险降至适当水平。
你可能会决定,为了满足你组织的需求,风险评估需要每年进行一次,或者在发生重大变化时进行。这是我见过的一个相当典型的选择,但它不一定是每个组织的最佳选择。正如我们多次提到的,关键是要根据组织的具体情况定制每一项政策和程序。
如果我们回想起第一章**信息安全与风险管理中那句关于风险的长句:
信息安全风险是通过威胁利用信息系统资产中的一个或多个漏洞而导致损失的潜在可能性,结合了威胁的影响和可能性来衡量。
我们记得,没有资产和威胁,就无法定义风险。在这些文档中,我们可以定义如何识别和衡量风险,是否根据威胁情景,或者根据与组织相关的每一项信息资产来进行风险评估。你在组织中有一份资产清单,在你的资产清单中,你应该利用这些信息,并在风险管理文档中进行引用。
此外,我们可以在此文档中定义可能性和影响的等级和定义。我在第一章**信息安全与风险管理中举了一个如何进行定义的例子,这是你有机会使用该例子,利用其他框架,或者为评估这些等级创建你自己的临时系统。
您可能还想包括风险矩阵,并在上面清晰地显示由高层管理定义的风险承受水平。
当我们审视风险处理时,您可能会记得可以进行以下操作:
-
避免风险
-
通过安全控制措施降低风险
-
转移风险
-
接受风险
您可以在文档中描述这些过程,以确保组织的其他成员理解他们何时以及如何选择每种处理方式。请记住,您有一份适用性声明文档,其中列出了适用于您组织的控制措施,并确保在您的风险处理方法中引用该文档。您还可以定义一旦风险水平降低到可接受的程度,您的组织如何接受风险(并记录该接受)。
通过为您的组织定义有效的风险管理流程,并应用持续改进的原则,您通过增加组织面临的风险的可见性,提高了信息安全管理体系(ISMS)的有效性。
风险评估报告
您需要能够计划和优先处理风险,同时将风险评估的结果传达给相关利益相关者。这意味着您应该根据不同的受众群体,基于风险管理活动准备各种报告。
例如,在定期向高层管理汇报时,您可以提供风险评估的高级概览,因为该群体最终负责确保 ISMS 在其组织内的有效实施,但不一定对具体细节感兴趣。您可以包括最重要的资产及其固有风险等级,应用的风险处理措施(或提议的措施),以及处理后的剩余风险。
在更详细的报告中,可能需要提供您组织每个资产的状态,以及适用性声明控制措施及其状态。此外,如果某项控制措施正在实施过程中,您可以报告该实施的进展。
第三方安全文档
在第一章,信息安全与风险管理中,我们讨论了在组织内管理第三方风险的重要性,因为越来越依赖供应商提供信息系统和云解决方案以进行业务活动。
在我们的第三方安全政策中,我们希望明确规定组织如何处理第三方风险管理,并描述如何监控、审查和审计供应商的安全性。
这可能包括围绕服务级别协议、供应商安全评估和贵组织的尽职调查的定义和方法。
此外,你应该考虑如何对组织中由第三方管理或控制的每个资产进行分类,并且考虑如何调整你的信息安全管理体系(ISMS)和信息安全战略,以适应共享责任模型。
事件管理文档
当我们专注于事件管理文档时,我们需要明确在特定类型的事件中需要哪些内容。作为信息安全专业人员,你需要与组织的领导层合作,定义将信息安全事件视为事故所需的阈值,以及适当的响应措施。
记录这些内容的最佳方式是创建一个高层次的事件管理政策,定义适当的角色和责任,并包括任何支持性文档(如操作手册)的引用。事件管理政策应成为任何事件管理活动中的核心文档,且在信息安全事件发生时,任何员工的首要反应应是参考此文档。
考虑到在停机等事件中将需要这些文档,值得注意的是,事件管理政策以及所有其他事件管理和业务连续性文档,应该以一种即使在信息系统的可用性受到影响时也能访问的方式进行存储。如果勒索病毒在你的组织中传播,你无法再访问存储在 NAS 上的文档,那你是否有打印的副本?同样,物理副本也是如此:如果你的打印副本现在被水淹没了,你是否能通过云存储访问这些政策?
在创建高层次的事件管理政策后,两个领域中定义清晰、易于遵循、结构化的信息安全方法极其重要,这两个领域是事件响应计划(IRPs)和业务连续性管理(BCM)。
在我们已经定义了如何发现和分类资产,以及如何根据资产的重要性进行风险评估后,我们已经完成了将这些过程结构化到组织中的大部分工作。
通过了解资产的重要性以及与你的业务面临的风险相关的威胁,你可以确定并定义业务连续性和事件响应的组织需求。
我们将在第七章《拥有安全操作》中深入探讨业务连续性和事件响应的各个方面,因此我将在这里尽量避免重复,并专注于确保组织准备好应对事件所需的文档和规划的高层次要求。
事件响应和业务连续性操作手册
永远记住,在发生信息安全事件时,心跳会加速,双手会出汗,且会有很多人参与到“接下来怎么办?”的讨论中。
事件响应手册应简洁明了,任何人都能轻松跟随,并且准确反映最新的业务流程或版本的变更。这比听起来更难。可以将其视为一本“图画书”,第一页是第一步,第二页是第二步,依此类推。这是一种非常有效的方法,能提高成功响应的可能性。
你可以为各种威胁场景准备手册,例如“我们的服务器已损坏”或“我们的网站正在遭受 DDoS 攻击”等等。所有可行的、需要重复响应的威胁都可以转化为手册形式,这一点不容忽视。
此外,你不能仅仅假设这些手册是有效的。我们不能相信负责执行计划的人能够顺利完成。通过举行事件管理培训、意识提升课程并定期进行桌面演练来验证计划的可行性是非常重要的。桌面演练是组织成员在会议室中模拟真实事件的一种方式,讨论各自的职责,并寻找文档计划和程序中的漏洞。桌面演练的优势在于其成本低且易于组织,同时能够衡量各种事件的影响。为了让桌面演练更有趣,作为信息安全专业人员,你应该偶尔加入一些意外情况。当大家开始按部就班且对活动感到无聊时,可以引入一个“卡片被拒绝了,现在怎么办?”的情境。这能保持团队成员的警觉,激发参与感,并模拟现实世界中计划总是无法完全按预期进行的混乱局面。
通过记录和优化响应过程,并应用桌面演练和模拟中的发现,你能够减少诊断事件原因所需的时间,同时减轻响应团队成员的压力。
IT 管理文档
由于信息技术与信息安全之间的紧密关系,你的 ISMS 很可能包含多个 IT 管理文档的引用,这些文档可能已经在你的组织中存在,或者需要与相关利益相关者共同创建。
本文档可能包括以下内容:
-
IT 管理操作程序
-
安全系统工程政策
-
访问控制政策
-
自带设备及移动设备政策
-
密码政策
-
信息处置与销毁政策
-
维护与审查计划
-
变更管理政策
-
备份政策
-
演练与测试计划
-
信息传输政策
-
在安全区域内工作的程序
-
清理桌面和清理屏幕政策
这些文档必须准确反映你们组织的实际做法,并与确定为可接受的风险水平保持一致,这一点至关重要。
教育组织成员
尽管通过一系列文档来定义信息安全管理体系(ISMS)的要求,并利用这些文档实施系统化的流程来保护组织资产是一个很好的开始,但如果推出的解决方案阻止用户以他们习惯的方式工作,而没有任何关于理由的沟通,用户可能会感到被任意限制。
即使是最智能的系统也能被规避或摧毁,而用户可能会被迫寻找方法绕过政策或控制,以便让自己的生活变得更轻松。你的组织需要对用户进行 ISMS 培训,并帮助他们理解 ISMS 对他们角色的影响。帮助他们明白,你的目标是通过消除日常工作中的不确定性来使他们的工作变得更轻松。
正如我们之前所说,这些政策需要得到高层管理的支持,并且对未遵守政策的行为要有相应的后果。你这么做是为了保护他们的组织,因此高层管理需要关心,并且要成为信息安全管理体系的倡导者。尽量让领导团队参与到你通常会自己发送的沟通中。通过让 CEO、MD、CTO、CFO 等高层领导作为支持者,你将能够在员工中树立一个有方法和策略的形象,而不仅仅是你这个孤独的“安全员”在胡乱指责他们不要安装浏览器插件,或随便通过钓鱼测试来捉弄他们。让高层领导来承担重要的工作是提高效果的一个特别重要的概念。
此外,提高所有组织成员的总体信息安全意识也非常重要。一个好的意识提升计划将使用户能够识别各种类型的控制规避,并可能通过报告不合规的情况来防止此类行为。这是确保组织安全得到维护和有效的一个重要方面。
像所有事情一样,优化是关键,接下来让我们来评估你们信息安全管理体系的有效性。
评估 ISMS 的有效性
评估信息安全管理体系(ISMS)的有效性,以及它是否符合组织的需求,对于优化组织整体信息安全成熟度至关重要。应设定定期评估 ISMS 有效性的要求,比如每年一次,并根据先前定义的内部审计程序进行内部审计。任何不符合要求或发现的问题都应根据我们之前定义的纠正措施程序进行处理。
此外,通过每天讨论和对话中所得到的发现,并将它们纳入相同的纠正措施要求,你能够通过定义未来所需的变更来实现持续改进。
如果你的组织需要遵守来自全球机构的多个标准和法规,考虑利用技术解决方案来管理实施过程中的需求是很重要的。有多种工具可以帮助将 ISMS 和安全控制与多个法规对齐,使用这些工具能够提高 ISMS 的覆盖范围和有效性。
政策改进
ISMS 的改进阶段是我们识别当前差距并规划下一版本政策的阶段。始终记住,这项政策为你组织的信息安全计划提供了结构框架。它和其他工作一样重要,我之所以从这个(极其不枯燥,反而非常有趣和引人入胜)的话题开始,是有原因的。
我将毫不犹豫地在本书的每一步中提到持续改进的理念。定期衡量风险并应用控制措施以确保组织不暴露于不必要或不可接受的风险水平,是非常关键的。
总结来说,为了实施一个确保适当识别、分类和保护组织信息资产的 ISMS,我们必须从反映组织需求的政策开始,这些需求既包括组织层面的,也包括 IT 层面的。确保组织成员了解 ISMS 是至关重要的,这样可以避免增加未知风险的水平,例如影子 IT,这是一个描述未经 IT 部门监督部署的 IT 系统的术语,因此绕过了为确保组织安全而实施的政策、流程和控制措施。
接下来,让我们继续探讨识别和分类信息资产的话题。
识别和分类信息资产
在你的资产管理政策中,可能已经定义了你的组织如何根据信息资产的价值、关键性、敏感性和法律义务来识别和分类资产,但未特别讨论从 IT 角度如何执行这一操作。
尽管制定政策并定义这些动机是理解组织在风险承受能力方面总体立场的重要一步,明确什么是组织认为最有价值的信息,但请记住,这仅仅是“规则”,而不是实际进行资产识别和分类或保护这些资产的行动。
在本节中,我想详细说明我们如何构建规则以及信息安全管理体系(ISMS)有效的识别和分类阶段的实际操作部分。
这包括以下主题:
-
构建信息资产分类
-
确定资产的角色
-
识别和保护信息资产
-
保留政策
你即将学习一些关键信息安全原则!准备好了吗!
构建信息资产分类
在你的文档中,可能已经定义了信息资产的分类,基于组织确定的价值、关键性、敏感性和法律义务。
你可能已经制定了如下的分类层级:
-
机密
-
限制
-
内部
-
公开
你将如何确保为相关信息资产应用适当的分类,并且如何确保资产得到适当的保护和安全保障?
通常,你需要为每个资产定义特定的角色。这些角色应该在信息资产的识别、保护和处置中承担各种责任。例如,信息拥有者可能需要负责确保数据得到适当分类,并按照监管和组织要求应用相应的数据保护措施。
确定资产的角色
如果你希望在组织处理信息资产的识别和分类时更加结构化,你必须考虑为每个资产定义下表中列出的角色。像所有事情一样,你创建和实施的结构化程度应当是该组织可接受的。
需要考虑为每个资产记录的一些角色包括:

尽管对于小公司来说,可能没有足够的人力去为每一项任务分配专门的角色,但在大型组织中,这些角色(以及其他多个角色)可能是存在的。此外,你可能会有多种类型的信息拥有者,每个系统也可能有相应的系统拥有者,例如按供应商来划分。
话虽如此,如果可能,使用 KISS 原则,这是软件工程界公认的设计原则,意思是“保持简单,愚蠢”。你需要确保在 ISMS 中实现成功时,需要的工作和维护尽可能少。没有额外的复杂性,已经有很多工作要做了。
识别和保护信息资产的方法
很好!我们现在已经定义了信息资产分类的类别。一个额外的考虑因素,可能也是最重要的一个问题是如何确保信息被正确分类。
手动识别、分类和保护信息资产并不是一个可扩展或可靠的解决方案。这些资产的丧失、修改或泄露可能带来巨大的财务和声誉风险。让非信息安全人员在日常工作中负责适当地识别、分类和保护组织的信息资产是毫无意义的。
幸运的是,存在数据丢失防护(DLP)或信息保护技术,帮助我们正确识别和分类组织信息的过程。我们可以利用“内建”模型来发现和分类信息,或创建我们自己的规则。
“内建”模型可以自动识别特定类型的信息,无论它存在于何处,或以何种格式。这意味着我们可以配置我们的 DLP 或信息保护解决方案来“找到”在聊天信息中发送的信用卡号,或在公司笔记本电脑硬盘上的 .jpeg 文件中检测到的护照号码,仅举几个例子。
除此之外,通过创建我们自己的信息类型模型(或定义),管理员能够使用正则表达式和复杂的过滤器来定位包含特定于组织的信息的文件,例如类似“项目海王星”这样的关键词。
定位到这些数据后,自动的元数据“标签”会应用于信息分类,同时会施加任何适当的访问限制、通过加密进行保护、以及水印或通知,在用户访问信息时能够清晰地看到。操作系统或邮件解决方案甚至可以向用户显示通知,解释为什么他们无法将文件发送到组织外部,并链接到相关培训。
通过自动化发现、分类和保护组织信息资产的过程,我们确保信息只对那些需要访问的人可用,信息只会被获准的人修改,并且这些修改会以可审计的方式进行跟踪和存储。
与 5 年前相比,这种解决方案简直是一个梦想,那时数据丢失防护(DLP)仍然非常过时,根本无法提供如此高水平的自动化。现在,如果用户在他们的笔记本电脑上创建一个讨论敏感话题或包含个人身份信息(PII)的文件,系统会自动为该文档应用标签,这样就会激活加密并限制仅适当的用户组访问。确保自动应用适当分类应该是资产所有者的责任。
系统管理员应该能够看到与每种数据类型相关的用户、位置或程序和服务的度量数据。通过使用技术解决方案来协助这一过程,你可以监控变化,检测新的要求,并根据对组织所有信息资产生命周期的监控结果来衡量政策的有效性。
在数字领域之外,在你的信息分类政策中,你可以(例如)要求在每页物理文档的右上角指明分类,并且在文件封面或封信上也应标明分类。如前所述,政策应适应组织,因此应该有遵循政策要求的流程,并对不遵守这些要求的行为做出相应后果。无论我们是否能够自动化这个过程,确保信息的适当分类和标签通常是资产所有者的责任。
幸运的是,我们已经用通俗的语言定义了一个政策,以帮助那些负责选择、实施和配置监管这些要求的系统的人。通过在信息分类政策中设定这些要求,我们能够选择一种技术,减轻与数据外泄、内部威胁、保存政策违规等相关的风险,符合你们组织的要求。
保存政策
我想简要地谈一下保存政策,并在制定和实施信息安全管理体系(ISMS)时考虑它们。许多地区的规定要求在处理任何敏感数据时,数据不得保留超过规定的时间。你问,规定的时间是多少?嗯,不幸的是,这取决于所在的司法管辖区和数据类型。
在我们的政策中,考虑到组织的保存要求,并确保定义了保存政策是非常重要的。通过这些定义,你可以利用现有的技术解决方案来实现以下目标:
-
确保你不会允许用户销毁因特定法规要求而必须保留的信息。
-
确保可以销毁的信息能够及时且合规地被销毁。
你应该定义的一些要求如下:
-
我们应该如何存储和保留数据,以确保在需要时能够方便地访问,且易于搜索和分类呢?这包括音频文件、视频文件等。
-
必须保留哪些数据?业务管理、第三方交易、合作伙伴关系、雇佣记录。这些仅仅是冰山一角。将数据分成不同类别,并考虑一种可以将数据标签化到这些类别中的解决方案(同时进行敏感性标签标记)。
-
数据必须保留多长时间?考虑每个分类或类别,因为它们可能有所不同。
-
我们如何对信息和资产应用所有权?这可以仅通过政策来完成,但如果找到一个可靠的解决方案,自动化会更好,就像几乎所有事情一样。
使用前一节中的相同信息保护技术解决方案,我们能够自动化你组织定义的保留政策,并在 7 年未使用后自动移除文件的访问权限。
信息资产的保护
本节内容完全围绕为资产实施适当的信息安全控制措施展开。我一直在思考这一部分,试图理解如何以最佳方式为你解读。
我知道你可能有选择和实施控制措施的经验,我不希望这一章成为整本书的一半,只是单调地讲述不同类型的控制措施或所有那些想要向你推销能解决所有问题的“银弹”的优秀供应商。无论如何,我将在接下来的章节中详细讨论各种控制和理念。
相反,在本章中,我希望确保我们专注于一些有力且有效的理念,以便理解如何选择合适的控制措施,也就是说,资产根据其关键性和分类被认为是“足够安全”的。
控制措施有不同的类别,用于区分各种控制类型:
-
行政/管理控制是我一直在谈论的政策和程序。它们不像新的软件控制那样“酷”,但它们的存在是为了为像你这样的个人以及你组织中的其他成员提供结构和指导,确保没有人会被罚款或导致泄密。
-
物理控制是指通过物理手段限制对系统的访问;例如围栏、闭路电视、狗……以及大家最喜欢的:灭火喷头。
-
技术/逻辑控制是指那些限制硬件或软件层面访问的控制措施,例如加密、指纹识别、认证,或受信平台模块(TPM)。这些控制不像物理控制那样限制对物理系统的访问,而是限制对数据或内容的访问。
-
操作控制是指那些涉及人员在日常工作中进行操作的控制措施。举例来说,包括意识培训、资产分类和日志文件审核等。
有很多具体的控制措施,我们无法在本章中逐一讲解。除了 ISO 27001 附录 A 的控制措施外,关于控制措施及其分类的进一步扩展可以在此页面的链接中找到:NIST SP 800-53 Rev 5 (csrc.nist.gov/publications/detail/sp/800-53/rev-5/final),其中包括 ISO 27001 标准与NIST SP 800-53之间的控制映射。
我所能讲解的是您可以根据威胁和行业将控制措施分类并应用于风险缓解的类型。
-
预防控制旨在阻止某些行为的发生,包括防火墙、围栏和访问权限。
-
侦测控制仅在事件发生时或之后被触发,例如视频监控或入侵检测系统。
-
威慑措施阻止威胁方试图利用漏洞,例如“看门狗”标志或狗。
-
纠正控制能够将某一状态转变为另一状态。这就是处理“故障开放”和“故障关闭”控制的地方。
-
恢复控制从损失中恢复某物,例如恢复硬盘。
-
补偿控制是那些试图弥补其他控制措施不足的措施,例如定期查看访问日志。这个例子也是侦测控制,但补偿控制可以有各种不同类型。
通常,为了实现充分的纵深防御,您希望按照以下顺序配置您的控制措施:
-
威慑行为者不要试图访问他们不应该接触的东西。
-
通过预防控制如访问权限或身份验证,拒绝/阻止访问。
-
侦测风险,确保记录侦测信息,例如通过端点保护软件。
-
延迟风险再次发生的过程,例如密码输入的“尝试次数过多”功能。
-
纠正此情况,通过响应漏洞,例如采用事件响应计划。
-
从受损状态恢复,例如通过备份发电机恢复服务器的可用性。
此外,在持续改进的过程中,我们还应该监控每个资产的价值变化。原因是,如果资产随着时间的推移或在某些重大事件中变得更加或不再重要,我们可能需要重新思考保护这些资产的控制措施。
此外,作为脚注,在我们研究控制时,我们也应该考虑恢复的因素。我的意思是,我们希望能够从任何不利的情况或资产及其价值的变化中恢复过来。举几个例子,我们讨论的是备份、冗余、恢复流程等。
一个需要牢记的概念,尤其是在云计算时代、SaaS、PaaS、IaaS、第三方解决方案和其他“别人电脑”的所有形式下,就是要确保服务水平协议(SLA)被明确定义,并且有关于最大允许停机时间的协议,以及未能履行这些协议的处罚。这是补偿性控制的一个例子。
作为第三方解决方案的消费者,你需要争取反映你风险承受能力的 SLA。同时,你还需要考虑到,将这些资产捆绑在一起,会增加可用性的风险。如果其中一个服务无法在线,而你无法执行任务,那就是可用性的丧失。如果你是云服务供应商,你需要考虑你的可用性,以及现实中能提供给客户的服务内容,并从商业角度考虑需要什么。
数据安全
当我们专注于数据安全时,数据有三个关键的状态,它们各自具有独特的安全要求:传输中的数据、静态数据和使用中的数据。
传输中的数据
传输中的数据或称为运动中的数据,是指正在传输的数据,无论是网络内部还是从网络传输到外部,经过物理电缆或无线连接,或者从一个应用程序传输到另一个在同一台计算机上的应用程序,或者任何其他可能发生的数据传输,我就不再继续解释,以免让我们俩的理智崩溃。
还有传输中的信息的概念,这就像人们在饮水机旁交谈,或者 USB 驱动器被移动到另一张桌子上……但我们不必为此开玩笑。在这种情况下,我说的是“数据”而不是“信息”,是有原因的。
静态数据
为了简化理解,我们将静态数据定义为正在存储但当前未被使用的数据。当你考虑到数据库作为一个不断增长和变化的实体,以及机器学习模型利用数据在一个不断演化的逻辑“变形虫”中时,事情开始变得有些复杂。但正如我所说,让我们保持简单。
使用中的数据
使用中的数据是正在被系统或用户处理的数据,通常以非持久性的内存形式(如 CPU 缓存或 RAM)存储和引用。
各种状态下的数据加密
加密是我们可以讨论的最强有力的控制措施之一,适用于静态数据和传输中的数据。为了有效地保持数据的机密性,采用加密可能是必须的。实际上,为了满足如 PCI-DSS 或 ISO 27001 等标准的要求,它必须被使用。
除了这些要求之外,加密控制作为一种缓解策略极为有用。确保你了解不同类型的加密,这不仅仅意味着理解“对称”与“非对称”加密,还包括不同的加密标准,以及用于保护传输中数据的机制,如TLS,与保护静态数据的机制,如 AES-256。
哈希是一种用于数据完整性的加密函数,它(例如)允许以一种方式存储密码,确保输入与比较的数据相同,但不存储输入的明文。此外,哈希有助于通过使用校验和或消息摘要确保数据未被更改。跟上这些话题的进度应该是你的首要任务,因为随着时间的推移,你会越来越多地使用加密作为一种控制手段。
深度防御
你在组织中的一个主要关注点应该是深度防御,这是我在上一章中简要提到的一个概念,但在这里我想再次强调。我们不希望有单点故障导致完全丧失机密性、可用性或完整性。如果我们充分保护了我们的资产,这意味着即使一个控制措施失败,我们仍然可以放心,因为我们有其他控制措施来减轻风险(或者至少是其中一部分)。在实际操作中很难实现这一点,因为存在可用性问题、预算限制或选项不足。
作为防御深度如何在特定系统中实施的一个例子,假设你的组织创建了一个允许内部用户登录并在数据库中创建、读取、更新或删除数据的 web 应用程序。你如何确保未经授权的用户无法通过漏洞读取或更新数据?你如何确保应用程序保持在线且数据可用?
让我们来看看我们可能为应用程序实施的一些控制措施:
-
为了防止未经授权的访问,并根据用户类型实施适当的访问级别,你可能希望实施一种具有不同授权级别的身份验证形式。为了防止密码泄露,密码应以加盐哈希的形式存储,使用安全函数创建,并且无法反向转换为明文。
-
为了防止对 web 应用程序源代码的未经授权的更改,可以将代码库存储在源代码控制解决方案中,如 GitHub 或 GitLab。每个开发人员都可以被分配一个唯一的登录名,并要求选择一个强密码并使用双因素认证。
-
为了防止开发人员在源代码中实现后门和常见漏洞,你可以对代码库进行静态代码分析。为了检查应用程序中任何导入软件的漏洞,你还可以运行一个依赖项扫描器,以扫描包含的导入项。
-
要在应用程序运行后寻找漏洞,你可以运行漏洞扫描器,扫描常见的缺陷,检查版本、头部信息和输入消毒等问题。
-
为了检测是否发生了安全漏洞,并调查和防止漏洞再次被利用,可以实施日志记录、审计和监控策略及解决方案。
-
你是否知道你的用户是否只会在某个特定环境下访问应用程序,例如从某个特定的 IP 地址访问?你可以实施防火墙规则,将其列入白名单(或仅允许)访问,阻止其他地方的访问。
-
你也可以使用Web 应用防火墙 (WAF) 来防护常见的注入攻击和跨站脚本攻击等。
-
如何确保应用程序在需要时可用?你可能需要考虑负载均衡和跨多个位置部署。
所以,这个场景给出了各种不同的技术安全控制示例,并将管理控制作为配置策略。这是一个良好的 Web 应用程序深度防御示例吗?你是否得到了足够的保护?
这取决于风险承受能力!你可能不需要所有这些控制措施,或者根据资产分类、关键性以及组织愿意接受的风险程度,它们可能不足以应对风险。这就是为什么在前两章我们如此重视这一点:如果不了解我们的风险水平,就无法判断我们是否在缓解风险方面投入了过多(或不足够)的时间、精力和资金。
监控变化
你应该监控组织的信息资产的变化,并根据这些变化进行调整,遵循持续改进的原则。你可能会通过定期的风险评估流程来处理这个问题,例如每年进行一次风险评估,或者在发生重大变化时进行评估。
另一种方式是实施技术解决方案来跟踪配置变化、漏洞和更新,或者主动威胁。我在第七章《拥有安全操作》中讲解了安全管理和监控,因此我会让那一章来负责这个主题的深入探讨。
最终,从你的监控活动中,你会发现是时候淘汰一个资产并处理它了,接下来我将谈到这个话题。
资产处置
我们在组织中控制着多个不同的物理和数字信息资产,这些资产最终都可能会达到生命周期的终点。
那么,我们如何确保安全销毁这些资产呢?我们可能无法简单地将敏感的财务文件或首席执行官的笔记本电脑丢进垃圾桶,使这些信息资产暴露在没有保护的状态下,等待着垃圾桶潜伏的恶意攻击者。
ISO 27001 提到了有关信息销毁的两项控制措施:
-
“当介质不再需要时,应按照正式程序进行安全销毁。”(A.8.3.2)。
-
“所有含有存储介质的设备应经过验证,确保在处置或再使用之前,任何敏感数据和许可软件已被移除或安全覆盖。”(A.11.2.7)。
因此,为了遵守标准,你应该根据分类定义组织对于信息资产安全销毁的要求,并为组织成员提供具体的流程,以便他们遵循这些要求。此外,你还应保留已安全销毁信息资产的记录。
此外,存储介质或设备的处置或再利用应包括一个确保有效移除设备中任何数据残余的过程。
数据残余
数据残余是指在系统中删除数据时,系统只是将该空间标记为“可供使用”,而并未实际擦除数据。这些数据非常容易恢复,任何具有基本软件安装知识的人都可以通过商业或开源解决方案轻松恢复。
这种类型的威胁可以通过在组织内部建立某种可防御销毁来进行缓解,这是一种通过以下方法之一销毁数据的受控、合规和合法的方式:
-
覆盖,即将原始数据替换为新的或随机的数据。美国标准要求至少进行七次覆盖。
-
消磁,即去除磁盘驱动器上的磁性印记,从而擦除驱动器。这对于老式的 HDD 驱动器可能非常有用。
-
加密不仅是一种保护静态数据和传输数据的方式,还可能通过使用不存储的密钥使数据无法恢复,就像“扔掉密钥”一样。加密销毁(Cryptoshredding)是指加密数据后,再将恢复密钥加密,从而使其永远无法使用。
-
然后,当然是对硬盘的物理销毁,通常是通过类似木材切割机的设备进行,就像《冰血暴》中的史蒂夫·布西密(Steve Buscemi)那样。其他销毁方式包括焚烧、切碎、分解和粉碎等。
当我们谈论数据销毁时,并不总是意味着要进行可防御的销毁。然而,有时候,在我们销毁数据时,我们会将其存档到长期存储中。我们不会使用这些数据,但如果未来需要,它将被安全存储,通常以最具成本效益的方式来处理。这种方法对于可能在法律诉讼中需要的数据尤其有价值。你所在组织的保留期限和要求必须被理解并考虑到,以便做出合适的决策,确保数据存储方式符合法律法规并保持合规。
总结
在这一章中,我们集中讨论了与保护资产安全相关的各种话题。我们被实施信息安全管理体系(ISMS)这一引人入胜的话题深深吸引,它涵盖了从高层管理者的职责到 ISMS 的开发,组织成员的教育,政策有效性的评估,以及如何改进政策以迎接下一个版本的挑战。
然后我们继续讨论了信息资产的识别与分类——从信息资产分类的结构到确定资产的角色、识别和保护信息资产的方法以及保存政策。
我们简要介绍了如何保障信息资产的安全,包括数据安全、加密、防御深度、监控变化等内容,最后讨论了资产和数据残留的销毁问题。
就这样,我们已经完成了这一章。我甚至不确定你是如何吸收所有这些信息的,但不知怎么的,你做到了,而且你因此变得更加优秀。现在让我们继续进入下一章,我们将讨论如何设计安全的信息系统。
第二章:弥补差距:如何保护组织
在这里,我们将探讨如何实施安全控制措施,以实现我们组织的信息安全目标。
本章节包含以下内容:
-
第三章,设计安全信息系统
-
第四章,设计和保护网络安全
-
第五章,控制访问和管理身份
第三章:设计安全信息系统
在上一章,我们讨论了如何通过基于风险应用的控制来保护资产,但还有更多可以做的事情。还能做些什么呢?你问道,满怀激动。好吧……我回答,轻轻地对自己微笑:如果我们从一开始就考虑安全性来设计系统会怎么样?你的脸上顿时闪烁着光芒,星星在空中留下轨迹,世界在我们周围旋转。
不——但说真的,我们应该从一开始就考虑安全性来设计我们的系统。这就是本章的主题。顺便说一下,我并不是指像一个男人(他和你一起站在电梯里,仍然骑着赛格威滑板车)所说的“我自己设计的”,尽管他明明在室内还戴着太阳镜,一副非常酷的样子。是的,这事儿曾经发生在我身上。我指的是我们应该以一种方式来规划和威胁建模实施,确保它符合目的。
幸运的是,正如你从准备高级网络安全认证时可能已经知道的那样,存在一些安全设计原则,这些原则允许我们利用集体的知识来改善系统的整体安全态势,而不会带来额外的开销。到本章结束时,你应该能够运用这些原则,并选择适当的控制措施,有效管理安全信息系统。
此外,还存在架构漏洞,可以通过控制来避免或减轻,因此我们也需要讨论这些最佳方法。我的目标是让你能够在确定系统的安全需求时感到舒适,从而应用适当的控制措施。除此之外,你将了解你所使用的特定信息系统的可用安全功能。
此外,还有选择适当控制的实践。在第二章中,我们简要提到了这个话题,资产安全保护,我谈到了针对开发和运行 Web 应用程序的各个方面的深度防御,但我将进一步扩展,并尽力帮助你更舒适地选择和实施控制措施,以管理和减轻 Web 系统、移动系统以及嵌入式设备中的漏洞。
总结一下,在本章中,我们将讨论以下主题:
-
理解你的组织所面临的风险
-
评估和缓解漏洞的最佳实践
-
设计安全信息系统的最佳实践
好了——既然我们在引言中列出了要点,我问:我们准备好开始了吗?是的,我们准备好开始了。让我们从我们应该总是开始的地方开始——尝试理解风险。
理解你的组织所面临的风险
在本节中,我们将重点关注理解威胁、漏洞以及如何利用信息系统的方法的关键概念。这包括我们将要处理的系统类型、信息安全专业人员受雇保护这些系统免受的威胁,以及这些威胁如何利用系统中的漏洞。只有在理解了这些关键点后,我们才能进入保护部分(这听起来像是Schoolhouse Rock!的歌曲,但别担心——我会保持大体上不涉及音乐的)。
我想强调的是,当我们设计一个新系统时——无论是基于网络的、移动的、嵌入式的,还是其他类型——都有一些流程来确保我们的系统从设计上就具备安全性,并且在这些流程失败时,还会有缓解控制措施提供深度防御。
首先,让我们讨论一下关于威胁的一些关键概念。通过理解我们所面临的威胁,我们可以开始将这些知识应用于理解安全模型中的关键概念。那么,“让我们来谈谈威胁吧,宝贝”。
嘿——我说的是大体上不涉及音乐的,而不是完全不涉及音乐的。
威胁、威胁行为者和动机
对你组织的威胁可以是多种多样的,理解这些威胁是一个非常有趣的研究课题。最重要的是,了解这些威胁对于全面有效地保护组织至关重要。记住,我们不能在没有威胁和威胁行为者,以及资产和漏洞的情况下谈论风险。
随着世界越来越多地转向数字化领域,许多对组织的威胁将以网络犯罪的形式浮出水面。网络犯罪与非网络犯罪没有区别,它们都有各种动机,进而导致犯罪行为(前提是威胁行为者有足够的动机)。我使用这一限定词的原因是因为有些威胁是环境性的。没有风暴会有动机去摧毁服务器——这一点我可以非常确定。
现在,这些人类动机因情况而异,有时需要一些创造性的思维和头脑风暴来激发。我要做的,是在这一部分刺激你大脑的思维方式,让你像恶意行为者一样思考。我希望你开始设想,如果你是目标对象,如何会利用你的组织。你能想象人们会从中获得什么吗?人们可能会获得什么利益,又有哪些人会这么做?哪些群体不喜欢你的组织,为什么?也许你在世界上最仁慈的组织工作,且任何理智的人都不会有动机对其进行攻击。在这种情况下,你仍然需要考虑内鬼风险——某人可能会无意间点击一个链接或删除数据库。虽然不是恶意的,但仍然是一个威胁行为者,且该行为者已经具有一定的访问权限。内鬼风险在威胁建模时应该始终考虑,无论是恶意的还是非恶意的。
正如你可能想象的那样,我无法详细讨论所有可能的动机,但我可以为你提供一些想法。
你的组织可能面临的一种动机“群体”是那些非财务性或非政治性动机的行为者。它们可能包括寻求刺激、快乐、数据囤积或精通技术等。这些动机本质上是基于恶意行为者享受黑客行为本身,或享受黑客攻击的“收获”。有些人更关心的是是否能够成功入侵,或者想看看里面是什么,而不是关注入侵能赚多少钱。也许某个设备或服务器上有图像或视频,攻击者想要查看。也许你的组织有一位在 Twitter 上有百万粉丝的安全发言人,声称你的产品——一款硬件比特币钱包——是“无法破解”的。全球的研究人员非常有兴趣仅仅为了黑客技术本身而进行攻击,尤其是当某个大人物做出类似声明时。他们可能会发现,在被植入 root 后,你的产品并没有清除随机存取存储器(RAM),这意味着秘密短语和盐值仍然保留在 RAM 中,可以被提取出来,他们可能会在 Twitter 上发布这些信息。这给他们带来了快乐;它磨砺了他们的技艺;它帮助他们展示自己的技术,并证明那个发言人的说法是错的。
此外,还有一些寻求刺激的人,他们热衷于追逐挑战。虽然这可能看起来很奇怪,但Thycotic Software在 2014 年于BlackHat USA上进行的一项调查发现,51%的受访黑客表示,他们的主要动机是为了乐趣或寻求刺激。他们可能会专注于攻击你的组织,仅仅是为了刺激,而你能做的最好的事情,就是根据其风险级别,充分保护你最重要的资产。
另一个值得讨论的动机群体集中在政治和网络战争上,例如 黑客行动、宣传 和 破坏。在在线政治话语成为主流的时代,随着当前事件中的重大问题,包括全球大流行、美国大选以及英国脱欧(这些仅仅是在 2020 年最后几个月的事件),我们正面临这种动机类型的迅速增长。黑客行动 和 破坏 可以是个人或团体的动机,甚至到国家支持的行为者级别,获取(或摧毁)与其对立的账户、系统和资产。我们还有 宣传 作为动机,它可以由单独行为者或团体发布,甚至是最大的力量,旨在控制合法渠道,以便过滤或推动特定的信息。
进一步进入政治领域,观察外部力量对关键基础设施的攻击时,我们可以解读出破坏、控制或威胁的动机存在。我总是想起乌克兰政府在遭遇重大网络攻击时,回应时发布的 "this is fine" 模因,如下所示:
twitter.com/Ukraine/status/879706437169147906
这是乌克兰政府推文的截图:

图 3.1 – 乌克兰政府的 "This Is Fine" 推文
为什么乌克兰的多个政府机构和私人公司成为攻击目标?我不能像其他人那样自信地说出谁在攻击他们,但攻击的性质表明这些攻击符合破坏、控制或威胁动机群体,或者是黑客行动、宣传和破坏动机群体,很可能是一次网络战争行为。
最后,我们可以考虑一个以金钱利益为基础的动机。这可以从个人找到方法从加密货币交易所盗取资金,或者一群雇佣黑客在抢劫情境中花费时间和精力,就像碟中谍中的一集一样。此外,你还会遇到企业间谍,例如番茄酱公司在 第一章 中开始进行的威胁建模,信息安全和风险管理,其中竞争对手试图获得你公司拥有的宝贵知识产权。
还有其他一些基于竞争的动机也可能会被考虑,例如试图从非营利组织获取研究信息等。老实说,这个清单可能会继续下去,但正如我之前所说,这不是本节的重点。我的目标是让你思考,谁可能成为你组织的目标,为什么他们会这么做。在这个过程中,我几乎能感受到你脑海中的齿轮转动,所以我觉得我们差不多可以结束了。
最近你可能经常听到的是高级持续性威胁,或称APT。根据NIST SP 800-39,APT 是一种威胁行为者,既具有高度的能力,又具有强烈的动机,并拥有大量资源。这种威胁行为者会在组织的环境中获得并保持访问权限,以便在长时间内窃取信息或操控操作。国家标准与技术研究院(NIST)表示,他们会适应为缓解这些威胁所做的改变。我对 APT 的看法相对简单,和我读过的某些资料相比算得上是基础。大多数组织目前在保护资产方面正面临困难,尤其是应对那些仅仅是看过一些带有“如何黑客攻击”标题的 YouTube 视频的 12 岁小孩,即便在这些视频中,讲解员也会教观众如何做以下事情:
-
获取访问权限。
-
提升权限。
-
保持访问权限。
-
窃取信息或操控操作。
-
保持不被发现。
这里与 YouTube 上的脚本小子和 APT 的唯一区别是专业知识和资金。NIST 使用的其他词语只是任何恶意外部人员所采取的基本步骤。我更喜欢以我们在第一章、信息安全与风险管理中讨论的方式来看待威胁。在 APT 的情况下,我们有的是恶意外部人员,可能是团体行为者或国家支持的行为者,这意味着我们需要考虑他们获得访问权限并保持不被发现的能力更为复杂。根据你的组织和其资产的不同,这意味着你可能需要缓解不同层次的风险。
我想做的最后一个备注是:请确保你的风险登记册与适当的威胁和动机保持更新!这不仅仅是为了娱乐;这是为了有效地保护你的组织。
漏洞
回顾我们在第一章、信息安全与风险管理、第二章、资产安全保护中所讨论的内容,以及到目前为止在本章中的内容,我们可以说我一直在重复强调“没有资产、威胁、威胁行为者和漏洞就没有风险”。那么,什么是漏洞呢?我们有详细讨论过吗?我是不是理所当然地认为你是一个信息安全百科全书,什么话题都知道?
问题是,如果深入到细节层面,关于“类型”的漏洞列表会越来越长。Meltdown、Thunderclap 和 Spoiler 是一些最近发现的硬件安全漏洞,但解释它们的工作原理会占据本章太多篇幅,而这些内容实在太多了。相反,我们不妨退后几步,从更高的层次来看待漏洞。ISO/IEC 27005 指导我们根据漏洞所涉及的资产类别进行分类。这个资产类别可以包括 硬件、软件、网络、人员、物理和组织 漏洞,或者你有不同的见解!不要让我或国际标准化组织(ISO)的严格瑞士标准限制了你的思维——大胆去飞吧!话虽如此,按照他们严格的瑞士标准来做确实更容易。
你可能完全没有头绪。你可能会问:“Joseph,这些每一种漏洞有什么样的存在形式?”问题在于,这是一个庞大的话题,而我之所以鼓励你自己动脑筋并考虑各种可能性,部分原因在于已经存在的漏洞数量庞大。如果我开始列出漏洞并加以解释,这本书将会变成 1500 页,且比现在更无趣,我可不想让任何人,尤其是那些花时间阅读我这些胡乱说法的人,受到这样的折磨。
话虽如此,我想我可以深入探讨一些漏洞的示例以及如何减轻它们。毕竟,“漏洞”是本节的标题。
如果我们以硬件资产为例,可以尝试考虑可能存在的各种漏洞,包括以下几种:
物理威胁,比如湿气或灰尘;由于磨损导致的故障;或者过热,都是存在的。缺乏通风、湿度控制、冷却、润滑或质量控制等措施,都是可能被威胁行为者利用的漏洞,进而通过破坏、关闭或强制关闭硬件,造成可用性的丧失。
记住——威胁行为者不一定是恶意的人类;它们也可以是环境因素,比如“摩擦”。有效实施“润滑”或“冷却”控制措施(并在实施后进行测试以确保控制措施有效)将有助于减轻这些漏洞。
在涉及尝试访问存储——无论是硬盘还是内存——时,你面临着几种选择。在硬盘存储中缺乏加密可能导致攻击者通过物理访问硬盘来获取信息。通过加密硬盘,你能确保一种防御深度,确保即使获得了物理访问,攻击者仍需进一步的利用才能获得访问权限。
如果不保护系统内存不被读取或写入,你面临的风险包括机密性、完整性或可用性的丧失。这是一种被广泛利用的攻击方法,因此,许多现代架构和操作系统中都有内存保护控制,但这些控制有时会被攻破,需要通过对内核或操作系统的更新和修改来进行缓解。
攻击者可能会试图读取电信号以进行逆向工程或窃听目的。如果他们通过此方法获得访问受保护资源的权限,可能会导致机密性或完整性的丧失。谈到导致窃听电信号的漏洞时,我们已经进入了一个相对复杂的领域,我们应考虑这种类型的攻击的可能性。哪些层级的威胁行为者可能会执行这些攻击?对于更为复杂的威胁行为者,如国家支持的行为者,这种攻击的可能性可能更高。话虽如此,仍然存在对泄漏辐射的缓解措施,如屏蔽磁场、过滤传导信号和掩蔽空间辐射信号。
有时,漏洞是由于硬件的基本功能所致,必须通过措施来减轻风险,例如通过防止物理访问硬件的可能性来实现安全边界,尽管这显然缺乏深度防御控制。
软件可能会存在漏洞,攻击者可以利用这些漏洞,执行以下操作:
-
找到一种方式访问本不该访问的更多信息,可能是通过不安全的代码或设计缺陷。
-
能够将你的软件用作其恶意软件的传播机制,例如2020 年 SolarWinds 黑客攻击
-
利用系统中缺乏审计追踪的漏洞
缺乏输入清洗可能导致信息泄露,或者你的软件被用来通过注入攻击传播恶意软件。通常通过静态和动态代码分析,以及自动模糊测试你的软件输入来缓解此漏洞,这些输入可能导致注入攻击,同时还需要定期对你的软件进行渗透测试,尤其是在发生重大更改时。
如果你的资产缺少日志记录,可能意味着威胁行为者能够维持访问、进行更改,并从你的组织中窃取数据而不被发现。通过日志记录来缓解这个问题大多是一种侦测控制,但通过适当的安全信息和事件管理(SIEM)配置,以及在安全运营中心(SOC)中的有能力的分析师,你可能能够实时检测到正在进行的攻击并作出反应。更好的做法是将自动化响应融入其中,这并不像听起来那么难以实现,但确实需要对现有的“正常”操作有相当深入的理解。
网络 可能会被威胁行为者利用漏洞,进行以下操作:
-
监听保护不足的通信
-
通过不安全的网络架构获得访问权限
-
通过单点故障(SPF)导致可用性丧失
从高层次来看,网络安全关注的是确保网络可访问资源的可用性,防止未经授权的实体访问,并监控所有网络活动,确保任何违规行为都能得到妥善处理。这是一个需要深入研究的主题,比我们目前讨论的内容要复杂得多,因此我将继续在第四章中讨论该话题,设计和保护网络安全。
物理站点容易受到威胁行为者利用漏洞进行以下操作:
-
中断访问,导致你的员工或系统无法访问
-
绕过访问控制,非法访问你的物理资产
在你查看物理站点并考虑站点安全时,除了考虑访问控制、旋转门、闯入防护门和生物识别技术外,还应该考虑设备或控制的故障所带来的影响。另外,在发生停电或电压下降(包括低电压和电压尖峰)时会发生什么?考虑过度噪音可能带来的复杂性,确保考虑到供暖、通风、湿度控制和冷却方面的要求。正如我们在第一章中提到的,服务器与水源不兼容,但同时,你可能需要适当的防火保护。
根据NIST SP 800-30,组织漏洞存在以下几种形式:
-
治理结构
-
商业流程
-
企业架构
-
信息安全架构
-
设施
-
设备
-
软件开发生命周期过程
-
供应链活动
-
外部服务提供商
本质上,威胁者可能会发现您组织运作中的逻辑缺陷。他们可能会注意到,您并没有对求职申请者进行适当的背景调查,或者您使用外部服务提供商却没有对它们进行尽职调查,因此威胁行为者设法利用这一点,将自己置于内部威胁的位置。
此外,在本节中,可能的威胁最大的是,威胁者可能会看到您组织在安全意识方面的缺陷,并通过操纵或欺骗人员,成功地获取对您机构的访问权限,或者让人员为其更改或删除信息,或者向他们披露信息。
对不起,我不得不再次提到碟中谍,因为它实在太相关了,不提两次实在对不起自己:我所举的这些通用例子都不错,但我希望您能打破常规。假设自己是伊桑·亨特的不可能任务特遣队的成员,并考虑您将要利用的漏洞,以获取对自己机构的访问权限,以及您如何阅读或写入信息以实现您拯救世界的终极目标。如果您还没有看过这些电影,我对您无法理解这个参考的事实毫不感到同情;它们都很精彩(第二部除外)。
总结这一部分,我想说,重要的是要考虑您业务的每个方面,并与了解记录过程及其与实际生活差异的相关人员进行交流。对您自己而言,前进的关键问题是:“人员是否言行一致?”。政策和记录的过程仅仅是文档,如果那些文档只是为了取悦审计人员和安全人员而存在,那么您面临的是您的感知安全性与实际安全性之间的巨大鸿沟。
精彩的是,如果您处理得当并表现得平易近人并且能够进行积极的改变,您将鼓励一种开放、透明和诚实的工作环境,在这种环境中,人们致力于让您参与以确保他们有一个遵循规则的简便途径,并在无法这样做时告知您。这是信息安全专业人员梦寐以求的情景。
系统利用方法
我希望能够查看威胁行为者利用您机构中的漏洞进行攻击的一些方法。如果我们深入挖掘并挑选出特定的键盘记录器,那么列表会很长,因此我将依次介绍每种攻击方法的“类别”,并简要讨论每种方法。
首先,由于我刚提到键盘记录器,我想看看各种恶意软件的类型。
恶意软件是用于邪恶目的的软件。它可以包括各种不同类型的软件,其中许多单独学习起来有相当多的内容,因此我会将恶意软件部分拆开。需要记住的一点是,恶意软件并不总是利用安全漏洞秘密安装在你的终端或区域中,这是我读到的许多定义所描述的。在 1990 年代末或 2000 年代初,我自愿安装了BonzaiBuddy,它是一个在屏幕右下角的小紫色猩猩,会唱歌或者在网上搜索东西。它是微软 Clippy 的一个稍微不那么烂的版本。后来,消费者报告网络监控将其标记为bonzi.com,未经许可,显然这并不是很酷,而且还跟踪用户的各种信息,用这些信息来投放广告。我对此只能说:他们是创新者!现在,几乎每个软件都会这样做,而且这被视为正常。
将恶意软件类别分解为子类别,我们可以开始理解它们是如何工作的,以及威胁行为者可能如何使用它们。
病毒在网络安全方面是一个有趣的概念。什么是病毒?你能举出一个例子吗?查看维基百科,你可能会看到计算机病毒的页面声称病毒是自我复制的。你可能会想:“我以为那是 蠕虫。”在恶意软件的维基百科页面上,它指出病毒通常是“隐藏在另一个看似无害的程序中”,这时你可能会问:“那不是 木马 吗?”
那么,到底什么是病毒呢?似乎社区无法完全达成一致,但Malwarebytes Labs试图最终定义计算机病毒为“附加在另一个程序(例如文档)上的恶意软件,在目标系统上首次执行后可以自我复制并传播,并且需要人类的互动。许多病毒是有害的,可以破坏数据、减缓系统资源、记录按键。”
现在,这很有道理。病毒需要与人类互动和宿主程序,并附着在其他文件上(或完全用自己的副本替代文件)。木马(或特洛伊木马)可以是病毒;勒索软件可以是病毒;但蠕虫不是病毒。
蠕虫与病毒并没有太大区别,但正如我预测的那样,当你在阅读计算机病毒的维基百科文章时,可能会想到,蠕虫与病毒的区别在于蠕虫不需要人类的互动就能在系统、网络、区域等中传播。蠕虫是自我复制的。
特洛伊木马这个名称来源于维吉尔的《埃涅阿斯纪》。在诗中,希腊人奥德修斯想出了一种方法,将他的军队带进特洛伊,一个敌人严密防守的城市。他说:“兄弟们,我们做一个巨大的木马雕像,把我们藏在里面,放在他们的城门旁作为投降的信号。”在这一过程中,没有其他的希腊人指出这个计划的问题,这让我感觉他们可能只是害怕奥德修斯的反应。我想说的是:我觉得奥德修斯可能有点儿自恋。不过,特洛伊人发现了这座雕像并将其推进城市,他们心想:“这座巨大的木马挺不错的,看起来也没什么可疑的地方。”可能会让你感到震惊,但那天晚上,奥德修斯的士兵从木马上跳出来,推翻了整个城市。
我相信你会很高兴我详细介绍了“特洛伊木马”这个术语的整个经典背景故事,因为现在你可以非常清楚地理解,特洛伊木马只是将恶意软件带入你组织的“围城”的一种方式。当人们下载到最新的 PC 游戏的盗版破解版,并且 README 文件告诉他们在运行keygen时关闭杀毒软件,因为它会触发误报,而他们照做了?他们可能刚刚中了特洛伊木马。判断keygen.exe到底是一个真正的特洛伊木马,还是仅仅一个误报,确实很难,因为两者都使用混淆技术来隐藏它们的算法,并且都可能对系统做出一些更改,从而自动触发杀毒软件。
和“特洛伊木马”这个术语性质非常相似的是“后门”这个术语。后门是指系统中故意(可能是未记录的)入口点。这些后门可能允许恶意软件的投放,或者其他威胁行为者进行恶意活动。后门的问题在于,它们可能是由制造商或任何参与设计和开发阶段的合作伙伴或供应商在软件或硬件中实施的。潜在地,情报机构可能会要求制造商实施后门,以便他们能够方便地进行调查。此外,这些后门还可能由其他类型的恶意软件创建,并通过特洛伊木马传播。你还在跟得上吗?如果这部分内容有些沉重,值得坚持——继续加油。
另一个属于广义恶意软件范畴的部分是广告软件。广告软件通常会与其他你安装的软件一起捆绑,但不要把它误认为是特洛伊木马。它通常并不隐藏起来;它可能会在安装过程中显示一个对话框,你可能草草跳过,仿佛你根本没有时间阅读任何内容。
这是一个Search App by Ask与 Java 捆绑的例子:

图 3.2 – Ask 广告软件的搜索应用安装对话框
看起来这只是一个无害的页面,你接受它,因为你想尽快完成并安装 Java,但它其实是Ask.com。创作者通过向你展示广告和收集营销数据来赚钱。
好吧——算了,你的浏览器中的搜索引擎被更改了——没什么大不了的。人们可能会问:“我们为什么要担心恶意软件?”我想接下来的一些内容可能会改变他们的看法。
勒索软件是一种恶意软件,它会阻止访问系统或文件。这是一种可用性攻击,通常通过加密技术进行,并且常常像蠕虫一样,通过网络中每个兼容设备传播。受勒索软件影响的组织通常会收到以恶意链接或带有恶意附件的电子邮件形式的负载。
一旦感染,受影响的计算机将显示一个对话框,试图勒索受害者。“如果你将 X 比特币发送到这个地址,我们就会给你解密密钥…”,类似的内容。
这是 Cryptolocker 比特币支付对话框的截图:

图 3.3 – CryptoLocker 勒索软件与比特币支付选项
联邦调查局(FBI)建议人们永远不要支付赎金,但像信息安全领域的所有问题一样,我认为这取决于风险。如果不支付赎金会造成比赎金本身还要严重的损失,那么你可能会被迫支付赎金。FBI 之所以持这种立场,是因为支付赎金会创造一个市场,而且你不能确定袭击者是否真的会给你解密密钥。
话虽如此,如果其他受害者得知即使支付了赎金也没有解密发生,这将破坏该活动的收入模式,因为其他受害者就不太可能将加密货币发送到攻击者的地址。因此,攻击者的最佳利益是当他们的受害者支付赎金时解密他们的文件,我们都知道,生意兴隆。网络威胁联盟在 2015 年提供了证据,显示CryptoWall 3.0勒索软件活动背后的犯罪分子已经收到了价值“数十万美元”的比特币,并且这些情况从那时起变得越来越严重。一个名为网络安全风险的网络犯罪研究组织预测,到 2021 年底,勒索软件攻击将每 11 秒影响一家企业,年损失将达到 200 亿美元。
勒索软件令人害怕,但间谍软件更让人毛骨悚然。间谍软件本质上是一种让恶意行为者监控你计算机使用情况、窃取你的密码或支付信息、追踪你在线访问的内容或下载的文件的手段。它可能导致身份盗用或敲诈,甚至可以专门为此写本书。
通常,间谍软件最终会嵌入到操作系统中,可能以木马的形式到达,甚至是你同意安装的东西,类似于我们看到的广告软件。间谍软件通常不会有“卸载”程序,并且你可能不会知道它存在于你的电脑上。它可能是一个键盘记录器,这是一种系统监控工具,可以记录按键、系统凭证以及几乎所有其他计算机活动。键盘记录器能够抓取屏幕截图,并通过隐蔽通道将信息传输到远程服务器。
这些类型的恶意软件通常会利用设备软件或硬件中的漏洞,以获得提升的权限。每天都有新的软件和操作系统漏洞被发现,研究人员可能会联系软件或硬件的创作者,负责任地披露这些漏洞,以便给他们时间修复缺陷并发布补丁,以帮助目前受到影响的用户。有时候,创作者不会采取任何行动,或者会对披露者进行法律威胁,结果研究人员可能决定公开这些信息,试图迫使创作者采取行动。通过引起对一个活动漏洞的关注,甚至提供概念验证(POC)来展示利用漏洞的方式,增加了漏洞被恶意利用的可能性,并可能导致创作者的负面报道或用户的负面反馈。
这个故事的另一面是,研究人员可能会发现一个新的漏洞或探索一个现有的漏洞,并制作一个利用工具,然后将其出售给恶意行为者,也许作为一个名为利用工具包的软件套件,这使得技术不熟练的恶意行为者能够执行攻击,传播恶意软件或获得访问权限。
你可能听说过rootkit,或者类似的bootkit——这些都是恶意软件的花哨名称,能够提升未经授权用户的权限(可能达到管理员(或“root”)账户的级别),或者隐藏其他恶意软件的活动,防止被检测,嵌入到设备的操作系统中。这些可以帮助恶意行为者获得计算机的完全访问权限,进行机密性、完整性和可用性方面的攻击,或利用被攻破的计算机对其他网络、计算机、系统等进行攻击。
以这种方式使用的计算机被称为僵尸,而且你可能会发现,这个僵尸只是一个更大僵尸网络的一部分,僵尸网络是由一组连接互联网的设备组成,它们会执行同步攻击。这些僵尸网络在DDoS(分布式拒绝服务)攻击中特别有用,在这种攻击中,DoS 来源来自大量通常无害的互联网协议(IP)地址,且没有任何规律。因此,由于这些攻击的分布性,它们很难创建防火墙规则来应对。
逻辑炸弹是一种交付机制,它会在满足一定条件时触发恶意软件活动。举个典型的例子,系统管理员设置了一个每天执行的CronJob,要求他们输入一个密码短语。假设这个 CronJob 被设置为在网络中的所有文件加密,前提是他们在连续 30 天内没有输入密码短语,暗示他们已经被从公司移除。还有许多其他类型的逻辑炸弹,简单的例子是:"如果这个正在运行的进程被关闭,执行这个操作。"
你肯定在新闻中读到过零日漏洞。这些漏洞是指除了恶意行为者之外,所有人都完全不知道的漏洞,恶意行为者正在利用这些漏洞。术语"零日"与漏洞被利用时开发者没有时间响应和创建补丁的事实有关,即开发者没有零天的时间来应对漏洞。
所以,从理论上讲,我们可以说:
有一种新的病毒叫做"TokTik",非常有趣。它与最新版的EssentialProgram捆绑在一起,最初作为木马,仅仅是浏览器劫持的广告软件,但后来变成了恶意软件,以键盘记录器、间谍软件、rootkit的形式传播,并执行权限提升的漏洞利用,将你的网络中所有其他设备像蠕虫一样感染,将每个设备加入到他们的僵尸网络中,执行对企业的DDoS攻击。如果恶意进程被关闭,另一个进程会加密硬盘,并显示一个对话框解释勒索软件解密过程。目前,操作系统的补丁正在开发中,但许多漏洞此前是未知的,这些漏洞直到现在才被发现,也被称为零日漏洞。
然而,如果你说这些话,人们可能再也不会和你说话了,因为那听起来实在太奇怪了。
除了通过病毒(如之前提到的恶意软件例子)在你的设备上发生的漏洞利用之外,还有其他类型的漏洞利用,比如组织漏洞的利用(例如缺乏安全意识),或者软件和网络应用程序漏洞的利用。
如果不提到网络钓鱼,这一部分就不完整了。提醒一下,网络钓鱼是一种通过电子通信进行的恶意利用方式,攻击者伪装成受信任的一方,通过社会工程学引导用户点击链接、打开附件或交出信息与秘密,帮助他们达成目标。它是许多威胁行为者选择的利用机制,因为它不需要技术漏洞才能成功,而是依赖于组织的脆弱性。
通过向公司中可能不如信息安全团队成员那样注重安全的人发送电子邮件,制造一些紧急感和戏剧性,并引导他们执行恶意负载,攻击者能够通过他们的电子邮件应用轻松渗透你的组织系统,使用勒索软件或间谍软件,或者发起银行转账。这既便宜、又快速,且效果显著。
此外,值得考虑的是我们 IT 系统不断变化的格局。例如,理解云服务类型和部署模型,或者网页应用安全性,在当前的环境下都非常相关。你看,随着我们从本地服务器和在终端设备上安装程序转向云服务模式,软件(以及我们的整体资产)越来越多地通过瘦客户端访问(这通常意味着它们在我们偏好的浏览器中运行),并转变为我们所说的网页应用,作为软件即服务(SaaS)提供给用户。SaaS 应用通常需要支付月费——也就是说,一旦用户需要的功能超出了基本的免费层级,就会产生费用。
云服务提供商,如亚马逊 Web 服务(AWS)或微软 Azure,提供类似的平台即服务(PaaS)和基础设施即服务(IaaS),允许按月付费使用云计算能力。随着时间的推移,我们越来越多的资产被外包并转向云端,无论是以 PaaS 还是 IaaS 形式。PaaS 通常作为一种简化方式提供,允许用户安装和运行应用而无需进一步配置,从而外包了维护基础设施和定期更新的责任。而 IaaS 则是存在于你选择的地区数据中心中的一部分服务器,除了缺乏物理交互,系统的维护和更新责任通常仍由客户承担。
这一概念被称为共享责任模型,它展示了不同云解决方案之间的差异以及各自的责任划分。
现在,无论你是从自己的本地服务器,还是在 PaaS 或 IaaS 上部署你的 Web 应用程序,我们可以看到 Web 应用程序中存在一些漏洞类型,这些漏洞允许恶意行为者危及应用程序的机密性、完整性或可用性。开放 Web 应用程序安全项目十大(OWASP Top 10)是一个定期更新的 Web 应用程序安全风险排行榜,它很好地解释了每个风险如何被缓解。为了给应用程序安全应有的关注,我将在第八章,提高软件安全性中进一步讨论。此外,不论服务器和计算机目前物理上“位于”何处,网络和资产的设计、治理以及安全运行仍然是你的责任。我们将在第四章,设计和保护网络安全中探讨网络安全,并在第七章,管理安全运营中继续讨论。
这将引导我们进入下一步,讨论评估和缓解漏洞的最佳实践。
评估和缓解漏洞的最佳实践
对于我们在本章前面讨论的一些漏洞概念,我已经列出了应对这些漏洞的缓解措施。所有这些缓解措施都没有考虑到你自己的组织、其面临的威胁、资产的价值或利用的可能性。我基本上只是列出了你可能看到的其他组织应对这些风险的方式,也许这样能给你一些启发。
在本节中,我希望以这种方式继续讨论,但首先我想强调一点,那就是在降低风险到可接受的水平时,应用必要的缓解措施是多么重要。这才是关键!避免在系统并未面临任何威胁,或者对你或威胁行为者并不重要的情况下,花费过多的资金和精力去使系统达到“完全无风险”的状态。
话虽如此,我现在可以回到如何确保我们的系统安全,并选择适当的控制措施的讨论。
我们已经讨论了如何保护 ISO 定义的不同类别的信息资产,这些类别包括硬件、软件、网络、物理资产和组织资产。我只是想花点时间简要回顾一下每个类别,以防有更多需要讨论的内容。
硬件安全
当我们回顾硬件资产时,我们讨论了通风、湿度控制、冷却、润滑或质量控制作为从硬件破坏或关闭中实现的可用性丧失的缓解措施。我们回顾了威胁行为者不一定是恶意的人类;它们也可以是环境因素,比如“摩擦”。在那一节中,我提到过一个我想再次提及的内容,那就是在实施安全控制后进行测试,以确保控制措施的有效性。
在你作为信息安全专业人员的职业生涯中,你需要确保在选择和实施适当的控制措施后,你首先自己“测试”系统的漏洞,并修补你发现的漏洞。然后(如果资产足够有价值来证明这样做的必要性,请记住),你请外部第三方进行“测试”。这通常被称为渗透测试(pentest)或红队演练,具体取决于评估的复杂性。你还可以执行自动扫描,但这些扫描的效果还无法超越实际进行pentest,即支付给一位专家黑客来真正突破你的系统。这是一种既美妙又让人心碎的检查控制措施有效性的方法。你最终会自己想到几件事。首先,你会想:“我居然错过了这个!”,但接着,你会想:“幸好我请了其中一个好人先找到了它。”
你将接受他们的报告,实施适当的控制措施以减轻他们发现的问题,并要求他们重新测试,以确保你的新控制措施有效。这是工作的重要组成部分,并且在管理层或董事会层面的汇报中,当你谈论风险的可能性时,它能提供重要的支持。你现在有了一个实际的例子,展示了某人突破了你的系统,你现在也吸引了那些控制资金的人的注意。
我们也之前回顾了保护存储访问,无论是通过硬盘还是内存。对于内存,我们讨论了系统架构和操作系统中的内存保护控制,这些控制偶尔会被破坏,需要通过对内核或操作系统的修改来进行缓解。
数据执行保护是操作系统对内存的保护,它将内存的某些区域标记为不可执行的。做出这种区分可以通过给出内存访问违规异常来防止代码从这些区域运行,终止进程,并防止缓冲区溢出。
关于硬盘,我简要提到过,通过加密硬盘,你确保了一定的深度防御,确保即使获得了物理访问权限,仍然需要进一步的利用才能获得访问权限。
另一个值得提及的加密方面是本节硬件安全主题中的受信平台模块(TPM)。TPM 是专用的微控制器,带有集成的加密密钥,帮助保护硬件安全。它们通常包括一个随机数生成器(RNG),这是硬件基础的;生成加密密钥的能力;以及为完整性目的创建系统配置和硬件的哈希的能力。当你使用BitLocker加密 Windows 10 笔记本时,最好的方法是使用笔记本的 TPM,它还允许在启动时进行完整性检查。
受信计算基(TCB)的概念源于风险管理,其中 TCB 被定义为在安全性方面具有高影响力的所有系统组件。如果在 TCB 中发现漏洞,整个系统遭受破坏的风险会更高。在风险管理过程中,你可能会确定 TCB,前提是你认为它很重要。你可以强制要求 TCB 中的每个系统都配有 TPM 以验证完整性。
此外,操作系统利用了参考监视器的架构概念,后者强制执行一个访问控制策略,用于控制用户和进程尝试读取和写入系统的操作。该设计范式使用了一个首字母缩略词NEAT,表示以下内容:
-
不可绕过,意味着攻击者无法绕过参考监视器,未经许可读取/写入系统。
-
可评估,意味着结果和性能应该能够被分析。
-
始终调用,意味着该机制应该始终可用,并且在所有与安全相关的操作中始终被利用。
-
防篡改,意味着该机制无法被更改以绕过控制。
所有这些理念在你未来的决策中都非常有价值。我不希望你将内建的控制措施视为“已处理”或与你的角色无关。许多现有的控制措施中包含了如何安全设计任何东西的建议,从整个系统到最微小的功能。我们之前在讨论渗透测试时提到了评估。我们在 TPM 的完整性检查中讨论了防篡改问题。从微观和宏观角度看这些范式在选择合适的控制措施来防范对机密性、完整性和可用性的攻击时非常重要。
接下来我们讨论了如何保护电信号免受逆向工程和窃听的侵害。我们查看了防止泄漏辐射的缓解措施,如屏蔽磁场、过滤传导信号以及掩蔽空间辐射信号。我们还简要讨论了限制物理访问硬件,以及这种方法缺乏深度防御的问题。
软件安全
接下来我们讨论了软件,这些软件可能存在以下漏洞:
-
给用户访问他们不应该拥有的信息,无论是通过不安全的代码还是设计缺陷
-
作为恶意软件传输机制的能力
-
缺乏审计追踪,导致持续的访问、数据外泄以及无法察觉的变更
我将在第八章《提高软件安全性》中进一步讲解这些漏洞,改进软件安全性,但现在我们可以说,缓解这些漏洞通常通过代码审查、职责分离、静态和动态代码分析工具以及定期进行软件渗透测试来完成,特别是在发生重大变更时。缺乏审计追踪可以通过实施审计追踪来解决!通过使用日志解决方案,您可以跟踪软件和基于网络的活动,如访问、变更和离开组织的流量。结合 SIEM 和 SOC 中的分析人员,组织能够实时检测持续的攻击,并可能对其进行手动或自动响应。实践和测试这一控制措施是红队的一部分,其中防守方作为蓝队进行操作。对蓝队进行测试对于某些组织至关重要,再次强调,是否进行此测试取决于您的组织所面临的风险水平。我将在第六章《设计和管理安全测试过程》一章中进一步讲解安全测试。
网络安全
接下来我们讨论了网络面临的漏洞,这些漏洞可能被威胁行为者利用,无论是通过窃听保护不足的通信,还是通过不安全的网络架构获取访问权限,或导致可用性丧失。从非常高的层次来看,为了控制这些漏洞,我们关注以下方面:
-
加密以保护通信
-
访问控制以控制谁可以访问什么,访问多长时间
-
漏洞管理,用于发现并修补所有网络架构中的漏洞,以及您资产中其他设备的漏洞
-
冗余性保护以防止可用性丧失,(希望)保护单点故障
我们将在第四章《设计和保护网络安全》一章中深入探讨这个话题,所以我将把如何实施的进一步解释留到该章节中。
物理安全
物理场所存在漏洞,可能导致您的员工或系统的可用性丧失,或突破访问控制。为了防止未经授权访问您的物理资产,我们应该考虑采取深度防御的策略。
转门和人孔是入口控制,旨在防止威胁行为者搭便车利用他人的入场凭证,或在他人之后尾随进入,卡住门。
生物识别锁,如指纹扫描仪,确保授权人确实是授权人员,而不仅仅是持有钥匙或证件的人。有时,它们并不是有效的控制措施,要么因为它们回应了太多误报,把合法人员锁在外面,要么因为它们给出太多漏报,让错误的人获得访问权限。在选择这种控制时,这些问题值得考虑,并且应该针对每种使用案例提问:“哪个更糟糕,错误的人进入,还是正确的人无法进入?”
在选择适合您组织及其系统的控制措施时,我们接下来将讨论下一部分内容。
选择适当的控制/防御措施来应对黑暗势力
如果我们从讨论基于时间的控制类别开始,我相信您已经知道预防性控制和侦测性控制之间的区别:它们的名字就能说明问题。前者有助于防止未来攻击的成功,后者则有助于在攻击进行时提醒系统和人员。纠正性控制有助于恢复系统并减少泄露的影响。
当我们谈论没有时间因素的控制类型时,我们已经讨论了一些每种控制的例子:物理控制、程序控制和技术控制。我们提到过守卫、生物识别读卡器、旋转门等等。此外,闭路电视(CCTV)、运动传感器、围栏等也被视为物理控制。程序控制(或行政控制)也比较容易理解,包含培训和意识等过程(或管理);风险管理过程;招聘政策;灾难恢复计划等等。到目前为止,您已经了解了这一章中的一些技术控制示例,如加密、身份验证、TPM、数据执行防护等。几个法律和监管控制(也称为合规控制)的例子包括现存的各种隐私法律和信息安全标准,通常对于不遵守者会罚款(例如通用数据保护条例(GDPR))。
为了充分保护组织的资产免受其面临的威胁,控制措施的选择应基于以下两个因素的组合:
-
资产面临的风险水平,基于威胁利用漏洞的可能性以及该利用所带来的影响
-
您对于根据该资产的威胁向量有效应用各种控制的知识
我们希望应用所需的控制措施,确保我们覆盖了与特定资产和威胁行为者相关的所有威胁向量,但不浪费时间应用那些不相关的控制措施。如果没有必要存在某个控制措施,那么重要的是记住,复杂性是安全的敌人,需要重新考虑在没有减少风险水平方面获益的情况下增加复杂性。
现在我们已经讨论了如何评估和减轻硬件、软件、网络和物理系统中的漏洞,让我们继续下一个主题,专注于设计安全的信息系统。
设计安全信息系统的最佳实践
到目前为止,在这一章中我们只是简单地概述了我们已经拥有的所有知识(我相信你已经掌握),关于所有的威胁、威胁行为者、动机、漏洞以及现有的系统利用方法,清晰的问题仍然没有得到回答:"我如何设计安全的信息系统?"
最后!我们要讨论如何设计安全的信息系统,您将学习如何以最佳方式做到这一点的所有细节。我真的很兴奋,但也许并不是你认为的原因。你看,通过学习威胁、设备和资产以及方法,我真的相信你已经激活了许多设计更安全系统所需的思维过程,并提出了许多必要的问题。
存在许多指南,但由于本书(试图)专注于最佳实践,我将回顾我们已经涵盖的一些问题,并简化为您设计安全系统的过程。
安全设计原则
当我们考虑设计系统及其与其他系统和用户的交互适当的方式时,我们希望考虑最小权限和零信任的原则,以及默认安全和安全设计原则的思想。
最小权限原则专注于确保对系统资源的任何访问都只能用于预期目的,且时间最短。如果用户或资产无意执行某个操作,则不应授予其执行该操作的能力,因此权限可以减少到最小可能的数量。
例如,如果您的网站通过作为管理员用户运行的 Web 服务器软件向互联网提供服务,那么 Web 服务器的 ompromise 可能导致网络中的关键或敏感文件被恶意行为者读取或删除。该 Web 服务器资产是否需要能力来删除文件?它是否需要访问所有敏感文件?不需要,因此将权限减少到最低限度。
作为另一个例子,如果用户(或进程)需要读取某个系统文件夹中的文件,则应只授予该用户(或进程)读取权限,而不是写入权限。此外,他们应该只在需要的时间段内才能访问文件进行读取。这通过即时访问方法得到了辅助,这是一种强制实施最小权限原则的系统访问方法。它通过提供一个临时的单次使用帐户来允许访问所请求的资源,并在任务完成后立即撤销该帐户。这是基于风险指示器(如“这是该用户的正常活动吗?”或“该用户是否启用了多因素认证(MFA)?”等因素)来授予(或不授予)访问权限的。曾经的“管理员”时代已经过去了。原因很简单:通过减少到最小权限并利用即时访问,我们减少了受损账户的影响,并通过权限提升降低了受到攻击的可能性。
零信任是一种现代安全概念,集中在几个思想理念上。这些理念包括以下内容:
-
在你的系统中通过即时访问和恰到好处的访问原则,使用最小权限原则,并加密和保护你的静态数据,以防止未经授权的访问。
-
始终验证所有活动,通过基于我们在讨论即时访问风险指示器时提到的所有数据点进行身份验证和授权,这些数据点包括地理位置、设备指标、异常检测等。
-
假设存在漏洞,这是零信任背后的主要思想。通过前面两条所述的方法,限制所有资产的横向移动;通过端到端加密来防止任何窃听;通过日志记录和监控来检测主动威胁;并通过更新、修补和评估系统的实施情况来不断改进。
零信任在这一阶段听起来相当合乎逻辑,在理解当前世界中的威胁、漏洞和方法论之后,但正如我所说,它是一个相对较新的理念,随着时间的推移,越来越受到关注,幸运的是。如果你想要在阅读 NIST 特别出版物时找点乐子,可以参考 NIST SP 800-207 进一步阅读。
安全设计是我们在所有系统中追求的最终目标,也是本章的主要内容。这是从一开始就构建安全系统的原则。在创建安全设计的系统时,我们必须首先考虑固有的威胁、资产和漏洞,然后考虑我们已经实施的所有安全原则和控制措施,等等!
我只想趁这个机会再强调一下,之后还有大量的进一步调查和学习要做。我们将要对流程和系统进行的持续改进,也会应用到你和你的知识上。随着威胁的出现和变化以及新技术的发展,新的漏洞和缓解措施也会随之出现,而你有责任去调查它们。很抱歉在这本书中不能详细讲解所有内容,但我希望我能帮助你分析控制措施,并确保你为每一个风险选择适当的缓解措施。
回到正题,在这些原则和控制措施中,最佳选择是通过理解架构设计所实施和执行的风险来战略性地选择,以确保整个系统的机密性、完整性、可用性和不可否认性。这总是通过避免通过模糊性来确保安全来实现的,因为这最终会在内部风险或知识丰富的威胁者面前失败。我们应该对系统的设计保持开放,因为任何关于系统设计的知识都不应该妥协其安全性,因为它的设计本身就安全,并超越任何已知的攻击方法。
当我们讨论黑客时,我想提到之前在谈论脚本小子和 APT 之间的区别时提到的几点。我提到了黑客的以下顺序:
-
获得访问权限。
-
提升权限。
-
保持访问权限。
-
外泄信息或操控操作。
-
保持不被发现。
在设计你的系统时,你需要考虑如何防止这些步骤的发生。你如何确保恶意行为者无法获得访问权限?恶意行为者如何提升权限或在你的系统中横向移动?他们如何保持访问权限?你能否检测到数据外泄或操作被篡改的情况?我们到目前为止讨论的许多原则在这里都有应用,你可以通过为每个风险实施一套深度防御控制来增强你的系统。
著名的控制措施及其缓解方法
我们可能需要从另一个角度来看待这个问题,开始讨论著名的控制措施以及它们可能缓解哪些风险。这可以帮助我们理解事情,并帮助我们分析现有的系统。
例如,备份可防止可用性和完整性风险。如果你的系统受到勒索软件的影响,前提是你有一个最近的、未受影响的备份,那么你始终可以使用该数据恢复系统,最大程度地减少干扰和损失。当然,备份并不是防护勒索软件的唯一手段。我们之前提到勒索软件通常以蠕虫的形式传播,并利用提升的权限来加密你系统中的数据,因此通过遵循最小权限原则,可以降低被攻击账户修改数据的可能性。通过更新系统,你可以降低恶意软件利用已知漏洞的可能性。通过在所有兼容系统上安装防病毒或高级威胁防护软件,你应用了一种侦测控制来防止恶意软件的传播,并减轻可能造成的损失。
降低权限也有助于防止逻辑炸弹和内部威胁窃取数据,比如知识产权。
防病毒软件帮助防护已知威胁,通常通过基于签名的检测,能够帮助检测和清除我之前提到的恶意软件类别中的威胁,例如间谍软件、广告软件、Rootkit和Bootkit。
漏洞管理和修补可以确保各种已知的漏洞不能在你的系统中被利用,因为产品的制造商已发布更新以缓解或消除潜在的安全风险。总会有关于零日漏洞的文章和新闻报道,但实际上,大多数组织仍在使用有公开漏洞的过时软件。“Kiss 原则”在这里很有用。专注于风险,高概率的风险(例如如果漏洞已在 GitHub 上公开)会带来更大的威胁。我将在第七章,掌控安全运营中深入探讨漏洞管理和修补。
在物理安全方面,我们可以提到不间断电源供应(UPS)用于停电、欠电压和电力波动时的可用性。我们还可以考虑浪涌保护,以应对电力尖峰。
我们已经提到过供热、通风、湿度控制和冷却作为物理威胁的缓解策略,以及避免水源与信息系统接触。火灾保护也是一个值得关注的话题。人命安全是最重要的考量(尽管从我所见的情况来看,我不确定 100%的组织都认同这一点!)。火灾保护是保护员工免受伤害的手段,并且根据你的地区或运营情况,它可能是一个合规要求。
我想在考虑物理安全时提出的一个主要问题是外包。我们提到的许多物理安全要求,都是由于服务器和信息系统位于办公室位置,而通过尽可能多地将这些系统外包,利用云服务和共享责任模型,你可以将物理安全风险转移给像微软或亚马逊这样的公司,他们拥有具备强大物理安全控制的数据中心,适合各种级别的工业、军事和政府活动。
背景调查和尽职调查对于新员工和第三方供应商来说,是预防性控制,可以防止威胁利用你组织流程中的漏洞进行攻击。此外,我们还可以通过安全意识培训和钓鱼攻击演练作为减少组织威胁的缓解措施。通过对员工进行培训并创造一个安全意识的环境,你可以降低成功的钓鱼攻击或疏忽行为对组织运营的负面影响。
通过使用适当的硬件和软件防火墙、网络拓扑结构和云服务,你可以减少 DoS 攻击(甚至是 DDoS 攻击)让你的业务离线,或使你的月度云服务账单增加到无法支付的程度的可能性。
通过对所有资产进行主动测试,包括对你的网页应用进行网页应用测试,并考虑OWASP Top 10,你能够看到当前的漏洞,同时防止新的漏洞被添加到现有的应用和软件解决方案中。通过允许第三方进行渗透测试,你让好人找到那些坏人最终会发现的漏洞,这最终成为你组织的预防性控制。你的系统注意到渗透测试了吗?如果没有,那说明你没有适当的侦测控制措施,如日志记录结合SIEM和SOC,这是另一个可以外包给具有相应分析能力的专业公司进行的控制。
考虑替代设备
在涉及到替代设备时,如移动设备、物联网(IoT)或监控控制与数据采集系统(SCADA),需要考虑不同的方面,因为每种设备的性质不同。
从移动设备——或更具体地说是手机——开始,我们来看一下这里的情况:我们有一种人们随身携带的设备。这些设备可能存储着组织的敏感数据,或可以访问你的资源……而人们偶尔会把它们忘在某个地方。你已经放弃了物理访问,那么你究竟需要做些什么,才能确保你只是花钱更换手机,而没有(例如)把你的知识产权交给竞争对手呢?好吧,在本章之前,我们已经讨论过加密硬盘以防止物理访问导致泄露的观点,一旦你加密了设备,你可能会设置一个有密码保护的锁屏……但随着设备的移动,且你可能不知道它最后放在哪儿,你可能需要考虑额外的功能,如全球定位系统(GPS)的查找我的手机或远程擦除功能。此外,如果这个设备是用户拥有的,但仍然访问你的资源,你可以设定一个安全基线,在授予它访问权限之前进行检查。这项检查会确认是否已应用最新的补丁,并通常要求安装某种病毒防护解决方案。
当我们谈论物联网或查看那些通常通过互联网访问外部世界的设备时,这些设备可能是由一个不专门制造硬件或软件的厂商生产的,而是生产灯泡、音响系统、吸尘器或监控摄像头,并且可能不会定期修补已报告的漏洞。听起来对你的网络来说有点像噩梦,但别担心——有解决办法。首先,为这些设备创建一个物联网网络。任何属于物联网设备类别的东西都被放入这个隔离的沙盒中,以减轻通过网络可利用的漏洞对网络的影响(也叫做远程访问漏洞)。是的,确实发生过… 物联网灯泡曾经为公司网络提供远程访问。实际上,这种事情时常发生,真是相当尴尬。
其他深度防御的缓解措施包括选择那些有良好发布补丁记录的物联网产品,应用最新的补丁,将权限限制到最低程度,同时保留功能性(最小权限原则),以及更改容易猜测或(由于它们在每个设备上都是相同的)在网上可以找到的默认密码。
Shodan.io,物联网的搜索引擎。如果你还没看过Shodan.io,你一定应该去看看(趁你还没看完碟中谍电影系列的时候);它确实很酷。你可以查看世界地图,地图上有红点,显示各种互联网连接的设备、它们的 IP 地址和开放端口,甚至还有你如果跟踪链接并在浏览器中访问设备时看到的网页截图。很棒吧?可是,有时候,风力涡轮机或电力厂就暴露在互联网中,没有任何防护措施。恶意行为者可能会把一切都关掉,或打开,或者做任何授权用户能做的事!
为了减少高影响功能与过时且不安全的协议、弱(或缺失)身份验证以及无效的安全通过模糊化控制的风险,你需要考虑几个方面。你需要做的第一件事是找出所有连接,并创建你的 SCADA 网络图。然后,如果可能的话,空气隔离尽可能多的设备。没有互联网访问;独立的网络;没有与外部世界的连接。然而,这并不能完全保护你免受所有威胁。加强网络中剩余连接的身份验证和授权控制;如果有更新,安装它们;禁用不必要的服务,这些服务会增加你的攻击面;进行渗透测试和红队演练;并确保始终将 SCADA 纳入你的风险管理流程中。
问题是,理想情况下,你应该以这种方式对待你所有的设备!大多数最佳实践适用于保护你的设备、网络和组织,也同样适用于这些“替代设备”和典型设备。我们关注的是风险,我们在设计和改进信息系统时,都会采取措施来缓解这些风险。
当你阅读有关新控制的信息时,考虑一下它们实际上解决了什么风险(而不仅仅是营销材料上所说的内容)。在设计新系统或评估现有系统时,要考虑你的控制措施以及是否存在可能被利用的漏洞,如果存在这样的漏洞,还需要根据你的风险管理政策判断是否应填补该漏洞,前提是该风险水平是否不可接受。
我想提到的关于设计安全系统的另一个要点是:在你设计系统时,请确保能够及时更新系统的最新更新和补丁!我们今天看到的许多问题依然是因为系统在设计时未考虑到能够进行更新,无论是因为遗留软件无法兼容新的操作系统,还是因为由于气隙限制了互联网访问。设计一个能够更新所有资产的过程,无论它们是否需要气隙,并制定一个计划,确保你的系统能够运行最新版本。通过你的资产登记册或配置管理工具(我将在第七章,拥有安全运营中讨论)跟踪系统是否运行的是最新版本,并在你的风险登记册中更新,如果操作系统或软件版本存在已知漏洞。如果你能够预见到这一点,并在设计和实施时考虑到这些计划和过程,那么未来对你组织的安全将是一次巨大的进步。
总结
在本章中,我们涉及了大量的信息,我必须像打破的唱片一样重申,本章中的每一个关键术语都可以专门用一本书(或一系列书籍)进行深入探讨。本书的目的是更多地帮助你重新熟悉这些关键点,帮助你以正确的方式看待每一个点,并将高层次的原则应用到你的知识中,以提高你在组织中的工作效率。
从资产及其漏洞,到威胁行为者及其动机,再到这些威胁行为者利用我们资产中的漏洞的方式,我们跨越了信息安全中的几个重大问题,既从战略层面也从操作层面,以便正确理解整体局势。
通过了解整体情况,我们开始应用我们的风险管理原则和有关威胁利用漏洞的影响及可能性的知识,以减轻和控制各种风险。在考虑如何为每个风险选择合适的控制措施、如何分类这些控制措施,以及它们的有效性之后,我们开始探讨如何从一开始就考虑这些风险来设计系统,以确保设计默认更安全,并且看看我们如何在下次关于系统设计的讨论中为改善我们自己组织的系统做出贡献。
既然我们已经完成了这一章,接下来我们将进入我已经提到过几次的下一章。
第四章:设计与保护网络安全
坦白说,上一章的结尾和本章的开头其实是一个错觉。事实确实是,我们在上一章中学到的知识将在这一章中得以延续,我们将在这一章中大量依赖上一章的内容。之所以如此,是因为上一章已经涵盖了很多内容,我和出版商决定创建一个虚拟的边界,标志着一个话题的结束和另一个话题的开始。我会尽力避免重复自己,除非某个点值得重复。
现在我们已经解决了“模糊和看不见的章节边界”问题,我可以开始本章的整理工作了。本章的目标是学习如何将上一章关于威胁、漏洞和缓解措施的知识与我们对风险管理和治理的理解结合起来,创建“安全设计”网络架构(或者至少是尽可能接近安全设计的架构,同时平衡可用性)。
我们将讨论如何通过设计选择和缓解措施来保护各种网络组件,从而加强组织的网络安全。我还将探讨当这些网络组件不再由我们控制时,如何确保它们的安全。随着我们共同向云端迁移,就像一条数字版的“俄勒冈小道”——不是那款电子游戏——我们将面临新的挑战和控制的减少。当前云迁移与 1830 年代美国人向西迁徙的主要区别在于,向云迁移过程中,死亡人数由于痢疾的原因会大大减少。嗯,至少我希望是这样。
接下来,我们将探讨如何在任何资产和用户的组合之间实现安全通信,包括云与本地的任何组合。
本章将涵盖以下主题:
-
设计安全的网络架构
-
保护网络安全的策略
那么,让我们开始吧!
设计安全的网络架构
如果你的信息安全学习路径和我一样,你可能已经花费了大量时间学习网络相关内容。首席信息安全官(CISO)在日常工作中经常谈论网络吗?嗯,是的……网络通常在 LinkedIn/晚间饮品/公司“社交”活动中提到,但他们很少讨论TCP/IP。
这是否意味着你不应该了解网络?或者应该忘记你学过的所有内容?当然不是。通过了解这些话题,并理解威胁利用网络设备或协议中的漏洞的可能性,以及该事件的影响,你将能够做出更明智的缓解决策,这些决策是基于风险管理原则的。
在我看来,无论你当前的目标是什么,学习信息安全的各个方面都是值得的。了解一下当前信息安全领域的动态,或者你所在组织中发生的事情。当你发现自己在投入时间后回报递减时,重新评估这个话题是否是你真正喜欢学习的,还是你需要了解的,或者你是否可以暂时转向其他内容。
当然,网络安全的概念远不止是协议、位、字节以及与数据传输相关的系统,但我们还是快速梳理一下我们必须了解的一些概念和定义,确保我们对这些内容有一致的理解。
互联网协议族和 OSI 模型
在本章中,我想提到两个主要模型,帮助你理解用户和应用程序如何与节点和网络设备交互,从而与其他节点和网络进行通信,包括通过互联网进行通信。它们分别是互联网协议族和OSI 模型。
通过理解这两个模型及其重叠部分,我们可以更好地理解如何对各种设备进行分类,并因此能够更好地保护和管理我们的设备。
TCP/IP 协议族
TCP/IP 协议族或互联网协议族是一组通信协议和一个模型,广泛应用于计算机网络和互联网,其在本主题中的重要性不可忽视。该协议栈的开发资金来自DARPA,即美国国防部高级研究计划局。这是一个有趣的小知识,如果你认为“有趣的小知识”包括类似“哪个军事机构开发了互联网协议族”这样的问题的话。
它被称为TCP/IP,因为传输控制协议(TCP)和互联网协议(IP)是该模型中两个基础协议,因此也是互联网使用的两个基础协议。
TCP/IP为我们提供了端到端的通信,从数据被分包、地址分配、传输、路由,最终接收。在TCP/IP 模型中,有四个“层”,将各种协议分为不同的类别,根据它们的作用范围进行分类:
-
数据在单一网络段内传输时的通信方法是在链路层或网络接入层中完成的。
-
跨越独立网络之间传输数据的通信方法是在互联网层中完成的。
-
主机之间的通信是在传输层或主机到主机层中完成的。
-
进程之间的通信是在应用层中完成的。
TCP/IP 协议族遵循由互联网工程任务组(IETF)制定并维护的标准。
如果我们想要使用互联网协议套件层来绘制一个图表,展示一个主机的应用程序通过两个路由器发送数据到另一个主机的应用程序,它可能会像这样,主机 A 的通信会沿着 TCP/IP 数据流层向下,然后上下经过两个路由器的链路层和互联网层,最后传输到主机 B 的应用层:

图 4.1 – TCP/IP 数据流图
现在我们已经回顾了 TCP/IP 协议族,绝对值得从另一种方式深入了解相同的概念,即所谓的OSI 模型。
OSI 模型
另一种标准化计算机系统通信的模型是开放系统互联模型,或称OSI模型。它是通信功能的标准化,与内部结构或技术无关。OSI 模型有七层,而 TCP/IP 模型有四层:
-
第一层 – 物理层:负责将数字位转换为无线电、电气或光学信号,处理电压级别、时序、最大距离、调制、物理连接器、引脚布局和电缆规格等问题。
-
第二层 – 数据链路层:处理两个直接通信节点之间的连接。它能够纠正物理层的错误,并能够控制连接状态,例如建立或终止连接,同时控制数据流量。
-
第三层 – 网络层:处理两个位于不同网络中的节点之间的连接,可能通过其他节点进行路由。它还可以通过将消息拆分为片段并单独传输,来处理比数据链路层能处理的更大的消息。
-
第四层 – 传输层:使我们能够以变长的数据序列的形式在两个节点之间传输消息。它具有错误处理和数据流控制功能,并且可以跟踪成功和失败的消息,允许重新发送失败的片段。通常认为 TCP 和 UDP 协议位于第四层。
-
第五层 – 会话层:创建、维护并终止本地和远程应用程序之间的连接,位于第七层下方。通常,第五层是在使用远程过程调用(RPC)的应用程序中实现的,从而使得位于另一个节点或网络上的程序被当作本地应用程序处理。它在将请求传递到第四层之前,先处理来自第六层的请求。
-
第 6 层 – 表示层:在网络格式和应用格式之间进行转换,将前面提到的层中的数据转换为根据目标应用程序可接受的格式。因此,它通常被称为语法层。它还可以压缩数据,并且可以直接映射应用程序之间的传输,防止“传递协议栈”到前面提到的层。
-
第 7 层 – 应用层:处理与用户交互的软件应用程序的通信。它负责展示用户已经传输的相关数据。
为了帮助理解 OSI 模型中各层处理的数据类型,我加入了以下图示:

图 4.2 – OSI 模型图
如果我们查看 OSI 模型,看看它是如何在互联网上与应用程序进行交互的,类似于我们查看互联网协议套件的方式,我们可以做出如下图:

图 4.3 – OSI 模型的流程
那么,如果我们要比较这两个模型,也就是互联网协议套件和 OSI 模型,我们会发现什么呢?让我们深入探讨吧!
比较互联网协议套件和 OSI 模型
在比较这两个不同的模型时,我们可以看到一些情况:
-
OSI 模型将 TCP/IP 应用层的活动分为应用层、表示层和(部分)会话层。
-
在 TCP/IP 中,主机到主机/传输层由会话层的其余部分以及 OSI 模型中的传输层处理。
-
TCP/IP 的互联网层仅是 OSI 网络层的一部分,而网络层的其余部分,以及 OSI 的整个数据链路层和物理层,归入 TCP/IP 的网络接入层。
如果我们想要制作一张图来比较这两个模型,可能会得出如下所示的图:

图 4.4 – OSI 与 TCP/IP
互联网协议套件和围绕网络的各种概念我们还未涵盖,例如 TCP 是如何工作的,或者 UDP 是什么,端口又是什么。现在让我们稍微了解一下这些内容。
网络组件和协议
HTTP/1.1和HTTP/2是网页应用层协议。最近决定它们的继任者HTTP/3将会使用QUIC 协议,其核心是UDP。
TCP 以其三次握手而闻名,这个过程用于建立连接。假设客户端想要连接到一个有被动开放端口的服务器,连接过程如下:
-
客户端向服务器发送消息,设置序列号并建立一个“主动打开”的连接,也就是SYN,或同步。
-
服务器回复客户端的SYN消息并进行确认,将客户端的序列号加 1,并设置自己的序列号,这就是所谓的SYN-ACK。
-
客户端随后回复服务器,发送由服务器增加的序列号,以及自己将序列号加 1 的回复,确认连接已经建立。这就是ACK,或者称为确认。
现在你已经完全理解了这些,你准备好听一个 TCP/IP 笑话了:

图 4.5 – 埃隆·马斯克讲笑话
要终止 TCP 连接,必须进行四次握手,每一方都能够发起终止连接的操作。例如,如果客户端想要终止与服务器的连接,发生的过程是这样的:
-
客户端发送FIN数据包,这是一个优雅地终止连接的标志。
-
服务器回复一个ACK数据包。
-
服务器发送自己的FIN数据包。
-
客户端回复一个ACK数据包。
-
客户端停止接受新的连接,等待超时,然后最终关闭连接。
Linux 操作系统的处理方式有所不同,发送RST数据包而不是FIN,这是立即终止连接,而不是优雅地终止FIN数据包。
此外,步骤 2 和 步骤 3 有时可以合并成一个同时发送的FIN & ACK数据包。
用户数据报协议(UDP)是互联网协议套件的一个成员,尽管它不像 TCP 那样出现在协议名称中。UDP 没有确认连接的握手,假设没有必要进行任何错误处理或更正,因此网络接口不需要进行任何处理。数据包可能以与发送顺序不同的顺序接收,数据包也可能丢失,因此它被认为不太可靠,但在速度方面具有优势。这意味着 UDP 比 TCP 更快且更轻量,因此在在线游戏和视频聊天中非常受欢迎。
.org、.com、.net、.dk、.wtf 等等。
常见的免费 DNS 解析服务包括 Cloudflare(1.1.1.1 和 1.0.0.1)、Google(8.8.8.8 和 8.8.4.4)、Quad9(9.9.9.9 和 149.112.112.112)、OpenDNS(208.67.222.220 和 208.67.222.220)等。这些服务将发送到特定域名的请求路由到其对应的 IP 地址。
32 位,包含四组介于 0 和 255 之间的数字(也称为字节,或 8 位);例如,从 0.0.0.0 到 255.255.255.255,以及其中的一切,如 255.0.0.0、0.255.0.0 或 108.177.8.63。
内部 IPv4“块”也已确定:10.0.0.0到10.255.255.255包含 16,777,216 个地址,这些地址已被保留用于私有网络。同样适用于172.16.0.0到172.31.255.255和每个人都喜爱的192.168.0.0到192.168.255.255。
IPv6是一个还没有真正普及的大胆设想。到 2074 年,当它真正被使用时,我相信会有一个作者对其细节感兴趣。在此之前,只要它不是你日常工作的一部分,简单了解就可以。它与 IPv4 相似,但拥有更多可能的地址,并且还具有一些帮助优化路由的特性。
子网或子网络是 IP 网络的细分。如果你将网络划分为多个网络,那就是子网划分。你可以通过将属于同一网络的计算机分组到同一 IP 地址组中来实现,从而通过将网络地址空间划分为逻辑组来改善你的组织结构。
例如,你可能会为前两个八位组分配一个网络编号,为第三个八位组分配一个子网标识符,为最后一个八位组分配一个主机标识符。你为一个子网分配路由前缀192.168.100.0/24,为另一个子网分配路由前缀192.168.200.0/24。这定义了前24位(3 个八位组)作为网络前缀,最后一个八位组作为主机地址空间。每个子网有 256 个地址,从而为你的网络创建了一个更有组织的结构。
让我们看一下这个概念的可视化分解:

图 4.6 – 子网可视化
在大型组织或其他各种场景中,256 个地址可能不足以满足一个子网的需求,因此我只是用这个作为一个简单的例子。
网络端口
网络中的通信端点称为端口。操作系统使用逻辑“端口”来识别网络服务进程。TCP 和 UDP 都使用端口号来访问逻辑端点。以下是由互联网分配号码管理局(IANA)分配的一些常见端口号,值得你记住:
-
端口 20:FTP 数据传输
-
端口 21:FTP 命令与控制
-
端口 22:SSH,一个安全的外壳
-
端口 23:Telnet,一种远程登录服务
-
端口 25:SMTP,邮件路由
-
端口 53:DNS,通常是开放的
-
端口 80:HTTP,用于没有 TLS/SSL/HTTPS 的网页
-
端口 110:POP3,用于邮件客户端
-
端口 123:NTP,用于网络时间
-
端口 143:IMAP,邮件传输
-
端口 161:SNMP,用于网络设备管理
-
端口 443:HTTPS,用于带有 TLS/SSL/HTTPS 的 HTTP 流量
这并不是说这些端口号总是与该类型的协议流量相关。问题在于,你可能会在8080、8081或3000(或者几乎任何其他端口)上有内部 HTTP 流量,这取决于你使用的 Web 应用框架。需要注意的是,端口始终与主机 IP 地址及其使用的协议类型相关。如果你想访问通过 IP 地址192.168.1.25并通过端口8080提供的内部 Vue.JS Web 应用程序的页面,你可以通过浏览器导航到192.168.1.25:8080,这样就会从该端口打开 Web 应用的主页,而不是通过默认的端口80或443,这通常是浏览器的默认端口。
我的意思是,这些是常见的端口号指定,但它们并不是规则。
通过像 SSH 这样的协议远程访问设备的事实是一个可能需要由你所在组织缓解的风险。你可能会这样做的原因是,因为有自动化工具会不断尝试登录任何面向公众的 IP 地址,然后尝试在端口22上进行 SSH 连接。为了节省时间,它们通常会先尝试端口22,如果不成功就会转向其他容易攻破的目标。
为了混淆对端口22的最常见自动化攻击,你可以决定将服务器上默认的 SSH 端口从22更改为其他端口,例如。这样,如果有自动化工具试图通过 SSH 登录到你的服务器,它就必须弄清楚 SSH 所使用的端口。不过,值得注意的是,这并不足以保护免受 SSH 攻击,它显然是通过模糊化实现安全,而非真正的缓解措施,但这是深度防御方法中可以采取的第一步。
需要注意的另一件事是,网络端口可以在一台服务器上承载多个服务。你可以通过 SSH 登录到服务器,但也可以访问网页并处理电子邮件、DNS、SMTP 等。
接下来,我们将看看我们可以用来进行网络连接的各种硬件设备和应用程序。
网络设备和应用程序
网络中有丰富的各种硬件和基于应用程序的外设,值得在这里关注一些与安全相关的设备,以确保我们在同一页。这也有助于为下一部分铺垫,我们将在其中讨论常见的攻击和防御及检测策略。
网络交换机
网络交换机是一种硬件设备,通常通过以太网连接位于你的设备之间,并将流量转发到适当的设备。它工作在OSI 模型的第二层,并使用设备的MAC 地址来转发数据到该设备。如果交换机还具备路由功能,它还可以在OSI 模型的第三层上工作。这些交换机通常被称为Layer 3 交换机。
关于交换机的一个关键要点是,它们仅将数据发送到适当的地址,而不像集线器那样将数据发送到所有连接的地址。
路由器
感谢我们已经学习了端口、IP 地址、层级等知识,我们可以快速讨论互联网如何运作。路由器是用于在网络之间转发数据的设备。换句话说,路由器负责引导互联网流量。路由器通过将数据包从一个网络转发到另一个网络进行通信。在这里,网络的路由器接收数据包,读取目标节点地址,并通过使用其路由表,将数据包转发到另一个网络或在自身网络中的目标节点。企业路由器将企业连接到核心路由器、光纤和海底电缆。这些被称为互联网主干网:

图 4.7 – 海底电缆和数据中心,也被称为“互联网主干网”
难道不觉得互联网的核心基础设施是躺在海底的电缆很有趣吗?随着支付、电力和供应链对互联网的依赖越来越大,你是否同意确保我们减少任何单点故障(SPF)的风险至关重要?当前这一设置有哪些漏洞?
负载均衡器
一种可以将处理委派给一系列服务器的服务被称为负载均衡器。这种服务有助于提高效率,并防止你过度使用一台服务器,而让另一台执行相同任务的服务器处于低效状态。它有助于提高稳定性并加速速度。
代理
代理是帮助客户端向服务器发起请求的服务器应用程序或硬件,而不是让客户端直接向服务器发起请求,然后返回响应。代理服务器处理可以包括负载均衡服务或安全流程,简化请求,使其适合服务器处理,或执行错误处理以获取代理的信息响应。
防火墙
另一种基于安全规则控制网络流量的系统被称为防火墙。这包括入口和出口流量,保护你信任的网络免受与不信任的网络之间的数据传输……例如互联网。
有软件防火墙、硬件防火墙设备和虚拟防火墙设备。软件(或基于主机的)防火墙作为服务或代理安装在终端上,用于控制流量和网络资源。
这是一个经典的防火墙示意图,展示为一堵砖墙:

图 4.8 – 经典防火墙示意图
展示了这些内容后,我还想探讨一下防火墙是如何工作的,从一种类型到另一种类型,并且它们是如何允许流量通过的,像不是一堵砖墙,而更像你永远不能进入的夜店的门卫。
数据包过滤防火墙
作为代理并检查端点之间传输数据的防火墙被称为数据包过滤防火墙。它们指的是一种访问控制列表,用来决定检查哪些数据包,以及应该对每个数据包做什么。可以采取的几种操作包括丢弃、转发或向发送方发送TCP RST响应并关闭连接。你可以将这些操作看作防火墙规则,可以根据源和目标 IP 地址、端口,或者协议进行过滤。
考虑一下这个好处:你能够控制哪些协议在哪些端口与哪些设备进行通信。这是朝着信息安全姿态迈出的一个重要一步。你现有的资产清单可以包括一些信息,帮助你完全理解需要什么样的通信,哪些通信是不必要的。这非常有力,因为通常情况下,"扁平化网络"会增加你对勒索软件、网络横向渗透和权限提升的暴露。想象一下,你在防火墙中创建了一条规则,阻止了子网之间的所有通信,除了端口3306(即MySQL)从192.168.100.25(假设是应用服务器地址)到192.168.200.50(假设是 MySQL 服务器)。
现在,如果一个来自不同应用的命令试图执行,删除 SQL 数据库中的所有数据并不起作用,因为这个命令已经被防火墙过滤掉了。
重要提示
你绝对也应该考虑身份验证、授权,以及防止那些不寻常的行为。这是一种深度防御的形式。
拒绝所有,先列白名单允许的流量技术在防止蠕虫在网络中传播以及横向移动方面非常有效。然而,根据我的经验,在拥有复杂网络、并且设备间有组件和应用在通信但这些通信未被记录的组织中,实施起来很困难。阻止这些流量可能会导致停机,并为组织带来成本,因此需要进行充分的准备,以完全理解状态防火墙在任何给定时刻的工作情况。
连接追踪防火墙
连接追踪防火墙,或称为有状态防火墙(或第二代防火墙),与第一代代理/数据包过滤防火墙相似,但它通过保持第四层的 IP 地址和端口号来保留端点之间通信的信息。这使得它能够更全面地理解节点之间的交互方式。它不再检查每个数据包,而是利用从之前已打开连接中获取的上下文数据。因此,它们比数据包过滤防火墙具有更好的性能,因为守卫者允许常客直接进入酒吧,而要求不认识的人出示身份证。
有状态防火墙的另一个优点是,它们通过仅在特定的传入数据包需要时才开放端口,从而有效防止端口扫描。
不幸的是,这种强大的功能也意味着攻击者可以通过一些手段欺骗防火墙,让它认为你是一个受信任的方。例如,恶意网站上的 JavaScript 可能会请求从恶意端点获取信息。
应用防火墙
应用防火墙(或称为第 7 层防火墙)可以根据已配置的策略控制对系统中服务或应用的系统调用。它被称为第 7 层防火墙,因为它能够控制从 OSI 模型的第 7 层(即应用层)到更高层的所有内容。它们可以是基于主机的或基于网络的,能够防止使用非标准 IANA 指定端口的应用程序。
下一代防火墙在应用层进行深度数据包检测,以启用入侵防御系统(IPS)功能、沙箱技术、用户身份管理、网页过滤和网页应用防火墙工具。
网页应用防火墙
网页应用防火墙可以保护您的 Web 应用免受恶意用户攻击。Web 应用防火墙作为反向代理处理 HTTP 流量,拦截到达服务器的流量,检查流量并使用策略过滤活动。这些活动可能包括恶意攻击者常用的常见 Web 应用利用技术,如 CSRF、XSS 和 SQL 注入攻击,启用速率限制有助于防止 DoS 和 DDoS 攻击生效。
端点防火墙
端点防火墙是保护系统免受未经授权连接的应用层防火墙。它们通常会扫描数据包的进程 ID,并将其与内置的规则集进行比较。它们存在于应用层,但过滤层 7 和以下层之间的连接。它们也可能被称为套接字过滤器,因为它们通过主机上的套接字调用过滤连接。
防火墙配置的重要性
正如我在本章前面提到的,错误配置防火墙可能会给组织带来严重问题,而正确配置是至关重要的任务。了解网络中流量的流动方式,并设计出流量应该流动的方式,是确保有效防范组织中风险的关键步骤。
有许多工具可用于帮助检查现有流量,帮助你更好地理解流量的具体用途。这些工具通常也会被恶意攻击者在入侵网络后使用,因为它们在正确使用时非常有效。
嗅探工具
用于检查网络流量的工具,以便更好地理解通信的性质,被称为数据包嗅探器或数据包捕获工具。一个非常著名且广泛使用的例子是Wireshark,这是一款网络协议分析工具,可以用来理解网络问题或检测入侵,但也可以被用来窃听网络用户,收集敏感信息,进而利用你的网络。其他例子包括在命令行中运行的tcpdump和一个安全工具Ettercap,它通过中毒目标机器上的 ARP 表,充当中间人攻击(Man-in-the-Middle)。我们将在本章后面讨论这些术语以及如何防范这些威胁。
网络入侵检测与防御
入侵检测系统(IDS)是用于监控网络中是否存在政策违规的软件套件或设备。网络入侵检测系统(NIDS)监控网络流量,而基于主机的入侵检测系统(HIDS)则监控操作系统活动。
有时,这些工具会利用基于声誉的算法来检测已知的恶意来源和目的地,甚至使用机器学习模型,根据大量数据灵活地进行关联。
安全信息与事件监控(SIEM)系统会收集来自这些 IDS 和 IPS 的所有事件,并将所有度量数据结合在一起,以关联活动并确定这些活动是否真的恶意或是误报。
入侵预防系统(IPS)是能够响应已检测到的威胁并防止攻击者执行尝试的操作的设备,方法包括重新配置防火墙规则或修改请求的内容以防止被利用。
VPN 及其用途
虚拟创建一个虚拟边界,使得公网上的用户能够像在私有网络中一样创建、读取、更新和删除数据。想象一下从用户家到公司办公室的隧道。如果用户通过隧道发送请求,响应也会通过隧道返回。一般来说,这种通信通过加密技术受到保护,可以防止任何嗅探。
VPN 通常被企业用来允许分布式团队在共享环境中工作,但也出现了其他用途。例如,如果一个政府阻止其公民的互联网连接访问 Facebook 的 IP 地址,用户可以通过 VPN 连接向其他国家的电脑发送请求(该电脑不属于 Facebook),然后请求并转发 Facebook 服务器上的信息给最终用户。
内容分发网络
内容分发网络(CDN)旨在通过在全球各地地理分布多个代理服务器,为您的服务器数据提供低延迟、高可用性的访问。例如,如果您在澳大利亚的用户,他们将连接到悉尼的最近服务器,该服务器不仅缓存了您主机服务器上大部分内容,还会向您的服务器请求它没有的内容。
您每天请求的大多数网页流量实际上是由 CDN 缓存提供的,只有最新(本地未见过的)内容才会从源主机提供。通常,CDN 提供商会为防御 Web 应用程序利用技巧和拒绝服务攻击提供安全工具,来增强他们的服务。
说到这个,让我们研究一下攻击系统的方法,以及作为信息安全专业人员,我们如何防御这些攻击。
攻击、防御与检测
所以,如果你戴上黑客的连帽衫,认真思考一下,你可能能想出几种方式来利用这些系统。你会怎么做呢?当我们查看恶意行为者可能用来危害您组织资产安全的方法时,新的技术持续被采用,但大多数经典技术仍然有效。我将利用这一部分讲解一些最常见的攻击技巧及其缓解措施。
中间人攻击
中间人攻击(MITM)是指恶意行为者秘密地坐在您通讯的“中间”,在潜在地阅读或篡改消息后转发信息。如果中间的恶意行为者在阅读消息,这也被称为窃听。
MITM 防御与检测
在考虑如何减轻 MITM 攻击时,我们需要关注密码学。密码学可以提供认证,数学上证明消息的来源是合法的,同时也能提供完整性证明,数学上证明消息没有被篡改。
为了让这种攻击有效,你需要一种交换密钥或证书的方式,例如我们在 TLS 流量中看到的公钥基础设施。如果无法证明源或目的地的身份有效,连接会被终止,通信也会停止。这个解决方案的弱点在于,如果颁发加密证书的证书颁发机构被攻破,安全性就会丧失。
如果你正在捕获并分析你组织的网络流量,你将能够收集关于每个你网络交互的服务器的信息,比如源 IP 地址、DNS 名称、X.509 证书、证书颁发机构以及其他客户端是否拥有相同的证书。
DNS 劫持
DNS 劫持是通过恶意 DNS 服务器执行 DNS 解析的行为。如果你作为攻击者,能够让一台计算机、服务器或路由器将 DNS 查询发送到一个已经被污染或在你控制下的 DNS 服务器,而不是我们之前提到的那些真实的公共 DNS 服务器,我们就可以让它认为它正在与合法服务进行交互。有时候,这种行为被称为药物攻击(pharming),但这个术语并不像网络钓鱼(phishing)那样广泛流行。
DNS 劫持防御
使用之前提到的 DNS 服务器,比如 Cloudflare、Google 和 OpenDNS 的服务器,端口是 53,没有加密,因此并不是端到端加密的,而因为 TLS 可能无法正确实现整个路由,所以它不能保证隐私。
此外,站长可以为自己网站的DNS 记录创建某些条目,以防止他们的域名遭到劫持,但这不是一个很具可扩展性的方法,而且还依赖于服务提供商的主动性。
ARP 欺骗
使用ARP 欺骗,会改变ARP 表中MAC 地址和IP 地址之间的映射关系,但表格仍然作为验证器并帮助连接源和目标。ARP 欺骗要么是为了执行拒绝服务(DoS)攻击,通过将来自多个 IP 的所有流量引导到一个设备的 MAC 地址上,要么是为了执行中间人(MITM)攻击,比如修改流量、窃取会话 ID 等等。
有时候,ARP 欺骗会为了冗余目的而使用,以确保在服务器出现故障时,其他服务器能够接替其工作。这个技术的另一个合法用途是在使用交换机时能够调试和分析两台主机之间的流量,因为交换机的流量并不是透明的/不会在网络上所有端点之间复制。
想象一下,有一个用户正在监视C 主机。如果他们想要观察从A 主机到B 主机的流量,他们可以设置A 主机的 ARP,将其视为B 主机的 MAC 地址,并将B 主机设置为将A 主机的 MAC 地址视为C 主机的实际 MAC 地址,然后允许C 主机转发数据包。在这个过程中,他们已经有了一个 MITM(中间人攻击)情况。
通过我的描述,这确实很难想象,我承认。这里有一个图示,应该能帮助你理解:

图 4.9 – ARP 欺骗的示意图
如你所见,欺骗计算机让它们相信一个设备是另一个设备是窃听的一种相当简单的方法,并且需要足够的保护措施。
ARP 欺骗防护
你可以为关键服务器和终端设置 ARP 缓存,使其保持静态和只读,意味着它们不允许进行更新。这是非常简单的,但会增加 IT 部门的负担。它也非常难以扩展,因为每台机器必须进行相应的映射,意味着你需要处理n²-n个 ARP 条目,其中 n 是网络上的终端数量。如果有 1,000 个终端,你将有 999,000 个 ARP 条目。
另外,你可以使用一个提供 ARP 响应认证的软件解决方案,并将其集成到 DHCP 服务器中,以确保所有 IP 地址(无论是静态还是动态)都得到妥善处理。或者,你可以在 ARP 条目发生变化时发送通知给管理员,但这并不是真正的预防控制措施。
你也可以配置主机操作系统,使其能够优雅地处理 ARP 缓存的未请求更改。
DNS 欺骗
DNS 欺骗/DNS 缓存中毒类似于ARP 欺骗攻击,是指一个受信任的信息源被恶意数据污染。在DNS 欺骗中,受害者请求从看似合法的来源获取响应(他们总是理所当然地认为这是真实的),该请求进入他们网络的 DNS 缓存。实际上,DNS 服务器的缓存数据已经被恶意行为者污染,且请求被发送到一个不同的目的地,而不是合法的服务。这类攻击属于欺骗类别。
DNS 欺骗防护
为了避免DNS 欺骗攻击,你需要重新考虑组织的信任机制。你需要进行身份验证、验证,并尽可能简化这一过程。像 TLS/HTTPS 和 SSH 这样的加密协议通过验证来源来帮助防止这种活动,而源端口随机化则减少了通过竞争条件漏洞成功实施 DNS 欺骗尝试的可能性。
此外,DNSSEC 或安全 DNS 是一种使用加密签名证书来证明 DNS 数据真实性的方法。所有原始的顶级域(以及许多国家代码顶级域)都支持 DNSSEC。
嗅探
嗅探攻击,正如我们在本章的嗅探工具部分中讨论的,是通过使用嗅探工具,如Wireshark 或 Ettercap,来捕获网络流量。Wireshark 是 IT 中常用的工具,具有出色的功能,可以诊断连接性或 Web 应用问题。然而,当恶意行为者利用嗅探工具(只要流量未加密)时,网络流量可以轻松地被读取,这可能导致凭证被捕获并被网络滥用。
嗅探防护与检测
当我们面对嗅探攻击或网络监视时,常用的应对方法是使用经过加密保护的适当协议。与其使用 HTTP,不如使用基于 TLS 的 HTTP。与其使用 FTP,不如使用 SFTP。与其使用 Telnet,不如使用 SSH。
如果你不得不使用旧的/不安全的协议,你可能会考虑通过 VPN 将它们路由并包装在加密隧道中。
此外,为了防止恶意行为者能够在你的网络上利用这些工具,你可能需要设置一个预防/通知系统,以便在已知的网络监视器被安装或在系统上执行时进行通知。此外,使用交换机而不是集线器可以防止流量在整个网络上被广播,并减轻非管理员用户设备被攻破的风险。
DoS 攻击
我们已经覆盖了这些内容吗?我甚至开始搞不清楚了!DoS 攻击是通过创建超过系统处理能力的请求来压倒系统或网络的一种方式。它可以通过洪水式的流量攻击或非常巧妙的超时攻击实现。
回想一下我们学到的三向 TCP 连接握手及其工作原理,同时使用埃隆的笑话:
You: "Hi, I'd like a beer." (SYN)
Barman: "You would like a beer?" (SYN-ACK)
You: "Yes, I would like a beer." (ACK)
那么,在你的初始 SYN 之后,如果你从未用 ACK 确认服务器的 SYN-ACK 响应,而是用第一个 SYN 请求再次打开另一个连接呢?然后再次、再次、再次?嗯,服务器会在设定的时间内等待响应,然后关闭连接,最终,你会使服务器填满它们的潜在连接数。这就是所谓的SYN 洪水或半开放攻击。
有应用层的 DoS 攻击,也有网络层的 DoS 攻击,但通常情况下,只要它能使一个为合法用户提供服务的系统停止服务,那么 DoS 攻击就算成功了。
你可能会因政治目的、混乱原因、勒索、报复、黑客行动,或者因为某个团体认为这很有趣而成为 DoS 攻击的目标,也被称为“for the lulz”。
DDoS 攻击
分布式拒绝服务(DDoS)攻击是来自各种来源的 DoS 攻击,这使得很难分辨哪些流量是合法的,哪些是来自僵尸网络的一部分。
组成 DDoS 而不是 DoS 的节点数量并不像你能否辨别出哪些是合法用户的节点、哪些是对你的网络或系统造成恶意流量的节点那么重要。
之前,GitHub 曾遭受过 1.35 万兆位每秒的 DDoS 攻击,通过从另一项服务(例如运行在多个服务器上的 memcache)“反弹”流量到 GitHub 的目标地址来实现放大效果,每个源请求最多创建 51,000 个数据包。为了达到每秒 1.35 万兆位,你需要大约 1.3 亿个数据包。
DoS 防御
当我们讨论 DoS 时,通常指的是来自单一来源的请求,因此我们可以采取以下一些措施:
-
过滤来自不需要的来源的流量,比如那些试图对你的系统发起 DoS 攻击的流量。
-
增加服务器能够放入其待处理队列中的请求数量,而不是实时处理它们。
-
减少超时时间,即服务器等待最终 ACK 响应的时间。
-
如果服务器在过载之前无法处理更多的请求,你可以配置它回收最老的未确认请求。
-
你可以增加缓存。
-
你可以利用防火墙。
DDoS 防御和检测
类似地,在防御 DoS 攻击时,你需要防止非法的 DDoS 流量一开始就到达你的服务器。在我之前的例子中,GitHub 的 memcache DDoS 攻击可以通过简单地阻止端口11211来进行阻挡,11211是 memcache 的源端口,这是一个简单的缓解措施。
然而,当流量分布广泛且不是基于某种模式或来自可以轻松封锁的端口时,如何区分合法流量和非法流量呢?
你需要一个能够检测、分类并响应被视为非法的流量请求的系统,无论是通过硬件还是软件解决方案。例如,可以与路由器和交换机一起使用应用前端硬件解决方案,分析数据包并根据见解处理流量。这可能包括更新访问控制列表(ACL)或限制某些来源的流量。你的 IPS/IDS 也能够为你的网络流量提供有价值的洞察,以识别真实流量和非法流量,并以响应性方式通过防火墙规则做出反应。
网络应用防火墙可以基于来自供应商其他客户的见解和情报,识别到你的网站应用程序的合法流量,并根据请求之前是否频繁出现恶意来源、未完成请求的情况进行判断。
你希望避免的是你的云服务在弹性负载均衡下,因流量激增而变得脆弱,从而导致即将到来的云服务提供商账单给你的钱包带来沉重冲击。这也被称为钱包拒绝服务攻击。针对这种问题,通常有一些解决方案,通常是由云服务提供商提供的,它们可以成为你深度防御策略的一部分。值得与你的云服务提供商讨论,或查阅他们关于这个话题的文档。
此外,还有一些 DDoS 保护提供商,如 Cloudflare 和 Imperva,提供 CDN 和威胁情报解决方案,帮助你的组织承受更高流量的压力。
拼写欺骗
www.arifrance.com(注意“air”拼写错误)。
拼写欺骗防御
不幸的是,对抗拼写欺骗(typosquatting)的防御手段有限。您可以预先购买与您的业务相似的域名,以减少恶意行为者购买类似域名并欺骗用户群体的可能性。您还可以向世界知识产权组织(WIPO)提出投诉,声称您的注册域名与恶意行为者注册的域名相似,且恶意行为者对该域名没有合法利益。这不是理想的解决方案,但就是目前的情况。
网络安全保护策略
现在我们已经介绍了 TCP/IP 协议族和 OSI 模型、网络组件和协议、网络设备和应用程序、一些攻击方式以及如何防御和检测这些攻击,我想讨论一些您可以使用的策略,帮助您实际保护网络,并防止恶意行为者在您的网络中为所欲为。
制定政策
我们作为最佳实践的目标,是将我们的策略定义为网络安全政策。这是一个描述您组织需要遵守的规则的文档,涉及组织环境的设计、维护、保护、修订和弃用等方面。
这个文档不需要复杂,但可以根据需要详细说明,以确保组织的网络得到有效保护。如果需要,您可以在此政策中包括如何处理密码或电子邮件附件的传输,或者对于各种通信的首选加密方法,如果这些内容对缓解组织固有的风险至关重要。最重要的是,您应当重点说明组织网络的变更控制流程。如果需要进行更改,负责的人员必须遵守此政策。
为了制定此政策,您需要以下几点:
-
高层管理支持。如果没有高层管理的支持,您不可能成功地改变组织内个人的行为,控制他们访问在线服务的权限。如果没有这个支持,任何反对意见都将无法处理。
-
从法规和合规性角度了解您组织的需求,以便有效避免合规风险。
-
了解您组织的网络、信息和服务。如果没有这一点,您怎么能制定有效且相关的政策呢?
-
了解您的用户及其在日常工作中的访问需求。再次强调,您需要使该文档反映您的现实情况;否则,它不过是一张上面写着胡话的纸。
您需要保持此文档的最新状态,并在以下情况发生时更新它:
-
技术变化
-
法规要求的变化
-
术语变化
-
资产影响的变化
-
威胁形势的变化
一旦这些流程和政策建立起来,你就可以执行实施适当控制的计划,以保护你的组织。
保持简单
你不希望网络过于复杂,也不希望安全措施变得复杂。你可能有一个混合环境,其中本地和云端资产相互通信,或者有一个网络,其范围对我们人类的大脑来说几乎是无法想象的……这一切都完全没问题,只要你保持尽可能简单。
你需要能够看到你的资产,清晰地了解你的架构和设计,并且对组织的活动有深刻的理解。你需要知道每个资产的核心功能是什么,并且(例如)新防火墙规则如何影响每个资产。这些都应该被文档化,并且优化应持续设计、规划、实施和测试。
业务连续性和灾难恢复
正如我们之前讨论过的,拥有一个应对突发情况的计划是非常有价值的。无论你的组织面临何种风险,我敢打赌,在发生中断时,你能够快速有效地恢复业务运营是非常重要的。中断往往会发生在网络层面,因此,考虑到这一点,制定合适的业务连续性计划(BCP)和灾难恢复计划(DRP)对你的组织成功至关重要。
备份和恢复程序
我们之前也提到过这一点,但它对于保持你的网络运行至关重要:你需要有一个计划和程序来备份、测试和恢复执行关键业务功能的系统,同时专注于风险缓解和提高恢复时间。
内部威胁缓解/第三方威胁
内部威胁能够访问你的网络资产,并且比外部威胁更容易提升其权限。为了缓解这些威胁,无论是来自故意还是偶然的来源,我们应该考虑采用零信任方法中的措施。
零信任
你不能指望仅仅因为你有了防火墙、隔离的网络,以及针对嗅探、伪造或 DNS 劫持的缓解措施,就认为你的网络能够安全地防御已获得(或自然拥有)内部资源访问权限的威胁。
如果内部用户总是拥有提升的权限,无论上下文如何,落入错误手中的被攻破账户将会带来严重问题。因此,我们可以转向一个最小权限模型,只允许用户、设备或账户访问完成指定任务所需的内容。不幸的是,这仍然不能完全缓解管理员账户被攻破的风险。
我们更感兴趣的是零信任模型,根据上下文授予特权,比如请求者的身份、设备和位置,以及最小特权访问和及时访问,以减少可能造成的损害。任何提升特权的请求都可以配合双因素认证 (2FA),遵循“永不信任,始终验证”的原则。
此外,我们还需要识别并报告可疑行为,并自动采取措施以减少泄露的影响。
与传统的“城堡与护城河”式网络边界不同,传统上认为网络内部的任何人都是可信用户,这里的一个主要集中点是我们对设备的看法,网络边界内外的设备应以相同方式对待:采用零信任。我们需要证据,而非信任。这是一种理念,而不是技术堆栈,且可以通过一些非常基本的规则来实现。
零信任网络的另一个理念是将你的资产微分割成多个不同的安全“区域”以供特定小组使用。如果某个用户不需要访问某些数据,那么他们就无法访问该区域。这需要了解你组织的数据,以及一个防止访问的技术解决方案。数据丢失防护工具可以与标签结合使用,以保护各种敏感和机密信息不被错误用户访问,通过加密并解析文件数据来检测可能表明文件包含此类信息的已知模式。
零信任学派的另一个口号是“假设已被攻破”。本质上,你必须假设你的网络已经被攻破。这就是我们如何通过零信任来应对内部威胁的方式:通过减少被攻破的账户在整个资产中执行全面操作的能力。利用用户权限的分割,以及双人原则(需要两个人的批准才能执行操作)和职务分离(一个人无法完成从头到尾的单一操作),你能够减少单一行为者悄无声息地对你的网络进行更改的可能性。
这个理念的精彩之处在于,它允许分布式团队,具有较少定义的网络边界,这在现代时代非常相关,因为组织正在处理多云和本地混合环境,结合着在家工作的用户和使用个人设备的情况。
软件和固件更新
使用安全更新对系统进行修补将对整个系统的健康状况产生巨大的影响,并将增强您的信息安全性。此外,最新的系统更具灵活性,更擅长处理信息。然而,尽管有这些优势,我所合作过的大多数组织在其遗留系统上都面临着重大问题;它们已经过时,超出了制造商的生命周期结束,由于不兼容的软件无法进行更新,或者在更新时存在未知的风险。
因此,定义资产生命周期非常重要,包括配置、更新、维护和处置过程。此外,漏洞管理也应当被考虑并定义,确保有一个明确的计划来识别、分类、修复和缓解您系统中已知漏洞的风险。这是为了确保,在十年后,您不会拥有遗留服务器,其运行的系统相当于今天的 Windows XP 或 Windows Server 2003,这些系统极易受到勒索软件的攻击,且高度不兼容、速度缓慢且脆弱。关于我们如何处理更新和漏洞的更多信息,请参阅第七章**,拥有安全运营。
确保安全通信
在您的系统与网络之间以及网络内部发生的通信容易受到窃听和篡改的威胁。数据加密是确保您的网络安全并保护组织资产的关键部分。如前所述,静态数据可以被加密,但加密传输中的数据也应成为安全专业人员的重点,以减轻窃听和篡改的威胁。
加密不仅能够通过使数据对未授权实体不可读来保护数据,还能够确认信息的完整性,并确认消息发送者和接收者的身份。
这样做的缺点是,您需要信任管理加密过程中密钥的实体,例如证书授权机构,确实是安全的。进行尽职调查并建立良好的供应商评估程序,可以帮助您了解这种风险,并可能促使您重新考虑当前使用的供应商,选择一个安全性更高的供应商。
安全通信的另一个方面是,通信可能发生在你网络之外。你的用户可能通过使用云服务或在移动设备上发送短信与第三方进行沟通,而这些活动很难掌控。通过对组织内员工进行关于这些行为的政策培训,可以减少意外泄露的可能性。对于恶意行为者,你可能需要考虑在你的网络中部署云应用安全代理(CASB),它能够阻止在云端 Web 应用上执行某些操作。例如,它可以防止某些类型标签的文件被上传到Dropbox或Twitter。
云网络安全
我越来越多地看到向公共云的过渡,这意味着在网络安全的物理(有时是架构)方面放弃了责任。将网络安全外包是否意味着你不再对其负责?那么,谁应该负责呢?
这个问题的答案始终是高层管理最终负责安全。正如我们之前所说,他们雇佣你来帮助降低风险,而这一任务的一部分就是理解现有的风险水平,将其与组织的风险承受能力进行比较,并采取措施将风险降到该承受能力以下。
因此,将网络安全的物理和架构方面外包给云服务提供商(CSP)存在风险和机遇,而了解这些风险和机遇是你的责任。
通常,进行尽职调查和供应商安全评估将帮助你了解你的供应商如何处理外包数据中心的安全事务。除了理解服务提供商所实施的安全控制措施外,你还可以更好地了解服务商提供的产品,如数据加密、监控和日志记录、访问控制、密钥保管等。
理解在云的共享责任模型中,哪些责任属于你的组织,而非 CSP,是非常重要的。
能够快速更改云端基础设施意味着可能不考虑变更控制流程,从而导致配置错误。将云纳入网络安全政策的变更管理部分至关重要。快速可变的更改有可能使你的网络瘫痪。此外,未经监督的更改可能包括配置错误,从而让恶意行为者轻松入侵。
随着变更管理政策的实施,必须对新基础设施或变更基础设施进行适当的安全控制测试和实施,确保其在投入生产之前得到充分验证。此外,应该包括一个停用程序,以完成实例的生命周期。监控和控制这一过程非常重要,无论是从政策方面还是自动化规则方面,否则你的基础设施将不断扩大,越来越多的不安全实例将出现,旧实例未被正确停用,导致机密信息容易泄露。
教育与意识
你可能会发现,教育组织的用户和管理员了解信息如何处理对于成功和风险缓解至关重要。为此,你可以制定一项信息安全意识政策,该政策将规定组织在这一领域的要求。
这些要求并非一成不变,因此你可能希望确保所有访问组织数据的员工都必须完成由组织提供的培训课程,学习如何安全地处理这些数据。
你可能能够教育用户识别钓鱼攻击,并理解什么是个人身份信息(PII)或受保护的健康信息(PHI)。你还可能能够培养安全倡导者,正如我们之前提到的那样。
安全运营中心
最后,我们有一个安全运营中心(SOC),它是由安全分析师、工程师和经理组成的团队,负责实时监控网络中的异常和问题,并做出相应反应。
通常情况下,为了做到这一点,他们必须利用 SIEM 系统,将他们能够获得的所有网络硬件和软件信号汇总,以检测故障或入侵。这包括我们在本章(以及上一章)中讨论的关于入侵检测系统(IDS)、入侵防御系统(IPS)、防火墙、CDN、杀毒软件和漏洞管理系统将数据发送到集中的单一玻璃窗观察解决方案。
关于安全监控最佳实践的进一步阅读可以参见第七章**,《安全运营管理》。
总结
这一章真是个庞然大物!你还好吗?需要休息一下吗?我可能需要……
终于完成了这一章,涵盖了我们所学的内容,真是太好了。在本章开始时,我们讨论了互联网协议套件和 OSI 模型,然后介绍了我们可以用来搭建网络的各种设备和应用,如交换机、路由器、防火墙和 CDN。
接下来,我们了解了一些常见的网络攻击,以及如何防御和检测这些攻击。然后,我们讨论了域名抢注、DNS 劫持和中间人攻击(MITM),这帮助我们从恶意攻击者的角度思考问题。
从那里开始,我们看了保护网络安全的策略,包括制定政策、降低复杂性、业务连续性、应对内部威胁和零信任、更新以及云安全等内容。
接下来,我们将进入一个我确信会引起你兴趣的话题:控制访问和管理身份。让我们开始吧!
第五章:控制访问和管理身份
哦,哦,哦…看谁来了。是你!更不用说你带着对控制访问和管理身份的渴望来到这里。太棒了,这真是一个巧合,因为本章实际上涵盖了这些话题。
身份与访问管理,或称IAM,有助于理解那些执行所有CRUD操作(即创建、读取、更新和删除)的人和自动化服务。这听起来很重要,因为它确实很重要。否则你怎么能确保某个实体确实是他们所声称的批准用户呢?
此外,根据前几章,我们已经描述了基于隐私和机密性的不同层级权限,但我们如何在数字环境中以自动化方式执行这些规则呢?你如何走好这条“绳索”——确保适当的访问权限?为用户提供过多的访问权限,你就面临泄露风险,但权限不足则会影响用户的日常工作效率。本章的目的是帮助你为你自己和你的组织回答这些问题。
本章的重点是讨论以下要点:
-
访问控制模型与概念
-
为人员、设备和服务选择并实施身份验证和授权机制
-
身份与访问管理
-
控制对资产的物理访问
我知道这一切对你来说听起来有多兴奋,因为写到这里,我的脖子后面已经起了一层鸡皮疙瘩。所以,话不多说,别再拖延了,开始吧!
访问控制模型与概念
当谈到信息安全时,物理安全领域的相同理念也适用;限制访问某个位置或资产被称为访问控制。当我们说到访问时,我们可能指的是物理进入某个空间,或者是数字上访问一个文件夹。我们可能指的是在办公室阅读一份打印的文档,但我们也可以考虑数字资产中的 CRUD 操作。
经典的(或复古的?)访问控制是锁和钥匙。如果某人拥有钥匙,他们就能够访问锁所防止的内容。而如果他们有钥匙,他们就被允许访问,对吧?是这样简单吗?当然不是。我们真正想要的是确保拥有钥匙的人是被授权的人,并尽力确保即使拥有钥匙,错误的人也不能(或未授权)访问他们不该接触的内容。
在深入讨论模型之前,我想先介绍四个关键定义:
-
主体是操作对象的用户或程序。主体可以执行操作。
-
对象是被主体操作的被动数据。对象不能执行操作。
-
许可分配给主体,决定其访问级别,例如机密、秘密或最高机密。
-
分类或保密/完整性级别被分配给一个对象,根据其性质或敏感性。
既然这些内容已经覆盖,我们开始讨论状态机模型吧。
状态机模型
状态机模型是一种通过持续监控系统状态来防止系统变得不安全的概念。系统的所有潜在状态以及从一个状态转换到另一个状态的方式都被定义和规范化,其他任何操作也都包含在内。通过这种方式,系统的当前状态能够被预测和进行比较。
这些概念的写法可能会有点“怪异”,我觉得用图表来帮助概念化它们的用途可能更有意义。本质上,状态机图的目的是描绘系统上可以发生的各种操作,以防止滥用:

图 5.2 – 来自 https://commons.wikimedia.org/wiki/File:Take-grant_representation.svg 的 Take-Grant 有向图
现在我们来看看 Brewer 和 Nash 模型。
Brewer 和 Nash 模型
Brewer 和 Nash模型,或称为 中国墙 模型,侧重于分段。实质上,我们希望通过只允许用户访问他们所需的信息组,而不允许更多的信息访问,从而避免利益冲突。该模型的目标是确保没有信息能够流动,从而导致利益冲突的发生。
它最初是为英国金融行业创建的,可以通过想象一个为多个不同公司提供服务的咨询公司来理解。该咨询公司为客户提供服务的员工不应访问其他客户的信息,因为这可能会导致机密性问题。
完整性模型
我们之前已经讲过完整性,所以就不再重复。请记住,某些组织可能比起机密性丧失,更关注完整性丧失。
我想深入讲解 Biba 和 Clark-Wilson 模型,它们关注的是完整性问题。
Biba
Biba,或者更准确地说是 Biba 模型,实际上是一个侧重于解决完整性问题的访问控制模型。
Biba 模型首次发布于 1977 年,是另一个基于格子的模型,类似于Bell-LaPadula。Biba 模型在访问控制中的定义属性如下:
-
禁止向下读取:主体无法读取低于其权限级别的对象。这是 Bell-LaPadula 的 禁止向上读取 原则的对立面,Biba 的 简单完整性属性 确保高等级的主体不会读取可能被“污染”的错误信息的文档。
-
禁止向上写入:主体不能向权限级别更高的对象写入内容。也称为星完整性属性,它防止了低权限主体对不应被“污染”的对象造成完整性破坏。
-
调用属性:此属性旨在防止一个主体调用另一个具有更高权限的主体。
正如你可能已经发现的那样,Biba 模型并不涉及可用性或机密性,它完全专注于完整性。
Clark-Wilson
接下来,我们可以谈谈 Clark-Wilson 模型,它起源于 1987 年。和大多数 80 年代的事物一样,它的创立基础是商业活动。这个模型像 Biba 一样,关注的是完整性。
Clark-Wilson 访问控制模型的关键要点是职能分离原则,数据必须通过一个允许日志记录的应用程序进行访问,并且对这些日志的审计是必不可少的。
授权用户不能以不适当的方式更改(或执行转换过程)受限数据项。受限数据项的记录状态为篡改、记录和一致。
在 Clark-Wilson 中,用户只能访问其授权级别的数据,不能访问更高或更低的级别,这意味着每个授权级别都有自己完全独立的数据集。
这样,为了防止本节变得过于冗长,我想继续简要讨论这些模型如何应用于现实世界。
现实世界的访问控制模型
所以,回到我们之前的定义,从现实世界的角度来看,我们说的是以下内容:
-
主体是对系统执行操作的实体。一些系统为主体分配用户 ID。
-
对象是系统上的资源。主体可能会访问它们,因此对对象的访问应该受到控制。
-
一般来说,我们有两种方式来处理访问控制:基于能力的模型和基于访问控制列表(ACL)的模型。
在基于能力的模型中,拥有对某个对象的能力(类似于所有权)的主体是可以访问该对象的主体。它们可以将这种能力转移给其他用户。
在基于 ACL 的模型中,主体如果其 ID 在访问该对象的列表上,就能访问该对象。如果不在列表上,那就“他们不在名单上”,然后他们就被扔到街上,一辆出租车把水溅到他们脸上,他们那套酷炫的红色天鹅绒西装完全毁了。
这两种模型都有将一组主体视为主体的能力。
从这里开始,让我们深入探讨并调查现实世界中我们常见的访问控制模型:
-
基于身份的访问控制(IBAC)是基于个人的,允许一种更细粒度但更难管理的访问控制方法。
-
基于格状的访问控制(LBAC)是一种描述访问对象规则或描述主体可以访问哪些对象的规则的方法。例如,在格状方法中,假设你创建了一些规则,规定如下:
-
如果对象的分类小于或等于主体的授权,则允许读取它。
-
如果对象的分类小于主体的授权,那么他们不能写入该对象。
这就是Bell-LaPadula模型的实际应用。我早就知道描述这些模型不会完全浪费时间!不能读,不能写,BOOM!
-
-
基于角色的访问控制(RBAC)是根据角色创建授权组并将用户分配到不同角色组中。因此,在访问对象时,我们消除了对临时决策的需求。如果你有这个角色,你可以访问该对象的分类;如果没有,你就不能访问。
-
基于规则的访问控制(RAC)是将规则与访问关联,例如规定某个对象仅在工作日的 09:00 到 17:00 之间可用。
-
MAC 是我们到目前为止所描述的内容,因为我们是使用对象的分类来决定访问权限,而不是让用户决定谁可以访问什么。
-
自主访问控制 (DAC) 是由数据所有者决定哪些主体可以访问特定对象。系统管理员创建具有不同权限的目录结构,并将适当的数据存储在相应的位置。
-
基于属性的访问控制 (ABAC) 是通过检查主体和对象的属性来通过策略授予主体访问权限的方式。
-
基于图的访问控制 (GBAC) 使用图形和查询语言,根据组织图定义访问,这使其与例如 RBAC 区分开来。这个图是不是让你想起了 Take-Grant 定向图?

图 5.3 – 一个 GBAC 组织图(来源:https://commons.wikimedia.org/wiki/File:GBACOrgGraph.pdf)
-
基于历史的访问控制 (HBAC) 是根据评估主体的活动来决定访问权限的方式。这可能包括他们在系统中的行为、他们请求访问之间的时间间隔以及请求的内容。
-
基于存在的访问控制历史 (HPBAC) 是一种分析性的访问控制方法,考虑了访问的时机。你可以设置策略,规定如果用户上周访问同一对象四次或更多次,他们就可以访问该对象。老实说,这不是一种流行的选择。
既然这些内容已经涵盖了,我们就深入讨论现实世界的内容,谈谈选择和实施认证与授权机制。
选择和实施认证与授权机制
幸运的是,我们实际上之前已经涉及过该主题的部分内容。为了让大家回顾一下,我认为我们应该在继续讨论如何选择和实施各种身份和访问管理(IAM)解决方案之前,简单谈谈认证与授权的区别,以确保我们防止未经授权的用户访问他们不该访问的资源,并确保授权用户能够访问他们需要的内容,继续他们那毫无生气的生活。
认证与授权
认证 专注于用户的身份,确保他们是真实的。不是指他们夸奖你并且真心实意,而是指他们确实是他们所说的那个人。
授权 专注于用户在认证后被允许做什么(或者被授权做什么)。
用户可以被认证,并由于其作为数据分析师的角色,具有授权访问他们当前正在处理的记录。他们可能没有授权访问公司目前正在原型开发的量子悬浮设备,以制造电影《回到未来 2》中的滑板,因为公司注重保密性。
我们能够将授权权限与组织数据的敏感度标签或分类进行关联,正如我们之前提到的。
授权可以概念化为如下:
“如果一个文档具有这个分类,那么具有这些权限的用户被授权阅读,但不能修改或删除。”
当然,这些决策基于你组织的政策,并且根据风险和需求有很大的不同。
如何确认用户的身份?我们将这些属性存储在哪里?我们如何通过计算机系统自动化这个过程?这两个问题引出了接下来的章节。
认证与安全
信息安全的一个关键方面是认证。它是我们迄今为止在本书中讨论的许多内容的核心。我们希望让已知的人顺利地处理他们需要处理的工作(但不会多做),同时又希望防止未知的人访问他们不应该访问的任何内容。
解决这个问题有很多方法,对于许多解决方案来说,目标可能相同,但应用于网络架构或系统中的不同组件。
让我们来看几个例子。例如,我们可以通过以下方式认证用户:
-
密码认证,是“你知道的东西”的一个例子。
-
智能卡认证,是“你拥有的东西”的一个例子。
-
生物识别认证,也称为“你是的东西”,一个例子是指纹扫描。
-
任何前述方法(或其他方法)的组合,称为多因素认证(MFA)
说到 MFA 时,我们需要记住,输入密码然后是“你第一只狗的名字”并不是多因素认证的例子。这只是你知道的两件事。它可能增强认证过程,但并不是真正的 MFA。
密码认证
密码认证的优势是显而易见的:我们已经在全球范围内训练了人们如何使用密码进行身份认证。这对用户来说很简单(除非是我的岳母)。如果他们忘记了密码(就像我的岳母那样),他们可以通过访问他们的电子邮件账户来简单地重置密码(而我的岳母也忘记了她的电子邮件密码)。
通常,这个密码被存储为加盐哈希,并且像Microsoft Active Directory这样的服务处理这些凭证的安全存储。
密码本身需要足够难以猜测,而且猜测密码的尝试次数应该限制速率或阻止,以防止字典攻击或暴力破解攻击。
针对这些攻击的另一种缓解措施是密码复杂性要求,密码不能包含字典中的单词,必须有一定长度,并且必须包含字母、数字和符号的混合。此外,在多个地方重复使用相同的密码会导致一个服务的安全漏洞,从而影响到其他地方的账户安全……但现在我们正在抵消密码的优点,因为它们应该是容易记住的。密码管理器通过自动创建和使用复杂密码来为我们提供技术解决方案,只要输入一个“主密码”,通常会启用多重身份验证(MFA)。
智能卡认证
通过使用智能卡,你正在利用认证中的“你拥有的东西”因素。该卡片内置芯片,存储用于识别一个人并验证其信息的密钥。
通常,这些卡片还需要使用 PIN 码才能访问,这提供了第二个“你知道的东西”因素。这有点像我们以前使用 ATM 取现金的方式,那时现金还很流行。通常,PIN 码是一个非常弱的密码,但尝试次数有限,以防止针对复杂度的攻击。PIN 码要求也防止了某人仅仅通过找到智能卡来获得访问权限。
生物识别认证
另一种认证方式是通过生物识别。扫描你的视网膜、听你的声音、读取你的指纹或手掌静脉,或者把血滴进女巫的铜碗里,诸如此类。
生物识别的优点在于无需记住密码;你不可能忘记自己的指纹,而且有人拥有与另一个人相同生物特征的可能性非常小——除非你使用像 iPhone 上的 Face ID 这样的技术,它偶尔会出现假阴性(当确实是你解锁手机时却无法识别),或者它会解锁一个长得相似的人的屏幕(假阳性)。
生物识别的缺点也显而易见:
-
你无法更改你的指纹。
-
如果有人需要你的指纹,他们可能会把你的手指砍下来(在这种情况下,你只能希望这是为了指纹生物识别)。
-
它们的实现成本远高于密码。在手机出现之前,家里没人有指纹扫描仪。
单点登录
此外,输入密码是一种令人烦恼的体验,尤其是当你遵循最佳实践并为每项服务使用不同的密码时,但又没有使用密码管理器。
与每次尝试使用不同服务时都要求用户输入密码不同,现在有一些解决方案可以提供更统一的身份验证方式,例如单点登录(SSO),在这种方式下,用户只需要一次证明身份,然后就可以访问他们需要的所有资源。这通常需要一些配置,但可以减少密码重用的风险,并简化权限撤销等操作。
身份验证协议
幸运的是,数字领域的身份验证已经通过几种不同的协议实现了某种程度的标准化。随着时间的推移,这些协议从安全性角度得到了改进,并且其兼容性扩展到了更多的使用案例。
因此,值得深入了解当前全球各组织普遍采用的最常见身份验证方法和协议,如NTLM、Kerberos和PKI。
微软 NTLM(NT LAN Manager)
NTLM,即NT LAN Manager,是 Windows 身份验证方式的修订版,也是对 LM(即 LAN Manager)的升级,后者仅将(弱哈希的)密码通过网络传送到域控制器,后者存储每个用户的身份验证信息。使用 NTLM 后,哈希密码实际上并不会通过网络发送,而是通过以密码哈希作为密钥加密的消息发送。
它被认为是一种过时的身份验证协议,但由于与Windows、Exchange、Active Directory和Windows Server系统的深度关联,仍在 IT 系统中广泛使用。
下面是 NTLM 工作原理的示意图:

(来源:docs.microsoft.com/en-us/openspecs/windows_protocols/ms-kile/b4af186e-b2ff-43f9-b18e-eedb366abf13 )](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/infosec-stg-bst-prac/img/Figure_5.06_B16611.jpg)
图 5.5 – Kerberos 认证图示
(来源:docs.microsoft.com/en-us/openspecs/windows_protocols/ms-kile/b4af186e-b2ff-43f9-b18e-eedb366abf13 )
所以,我们从这张图示中看到的第一件事是,KDC 与服务器完全分离,不像 NTLM 那样有传递认证的过程。
让我们讨论一下发生了什么,以及它为什么是一种安全的认证方法:
-
Kerberos 身份验证服务交换:客户端向 KDC 发送请求,获取 票证授权票证(是的,这个名字非常糟糕,我们称其为 TGT)。客户端提供其主体名称,并可以提供预身份验证信息。在图示中,这由 (1) KRB_AS_REQ 表示。
KDC 返回一个 TGT 和一个会话密钥,客户端可以用它来加密和认证与 KDC 的通信,以进行 票证授权服务(TGS)请求,而无需重复使用持久密钥。在图示中,这由 (2) KRB_AS_REP 表示。
-
Kerberos TGS 交换:客户端随后向 KDC 发送请求,获取 server 的 票证。客户端提供 TGT、Kerberos authenticator 和 服务主体名称(SPN),即客户端用来标识服务进行身份验证的名称。Kerberos authenticator 是客户端 ID 和时间戳,用 会话密钥 加密,并帮助服务器通过证明 authenticator 是最近构建的来检测 重放攻击。在图示中,这由 (3) KRB_TGS_REQ 表示。
KDC 验证 TGT 和 authenticator。如果这些是有效的,KDC 会返回一个用 server 的 长期密钥(已经存储在 KDC 中)加密的 服务票证,以及一个会话密钥,客户端可以用它来加密与 server 的通信。在图示中,这由 (4) KRB_TGS_REP 表示。
-
Kerberos 客户端/服务器身份验证协议交换:从这里开始,客户端可以通过提供 服务票证 和新生成的 authenticator 请求访问 server。server 随后使用其长期密钥解密 服务票证,检查 authenticator 是否有效,并使用授权数据来控制 客户端 的访问权限。
为了确保 server 的真实性,客户端可以选择请求通过让 server 发送从 authenticator 中提取的 客户端时间戳(该时间戳之前已用会话密钥加密)来进行验证。通过返回时间戳,客户端 证明了 server 可以解密 authenticator。否则,服务器可能只是收集信息,而没有返回任何内容,导致客户端无法得知。
PKI 和数字证书
公钥基础设施(PKI)的一个关键部分是 数字证书(或 公钥证书),它证明了与身份相关联的 密钥 的所有权——无论是用户还是设备的身份。
证书服务用于TLS 协议(该协议保护 Web 上的传输数据),以及在电子邮件加密方案如S/MIME和数字签名解决方案中。公钥加密(或非对称加密)的优势在于,依据你使用的两把密钥中的哪一把来加密消息,你能够确保完整性、不可否认性和机密性。
公钥证书的最流行标准格式之一叫做X.509,由于其广泛的应用范围,该证书被拆分成多个不同的部分。本质上,这个证书驻留在设备上,并在后台默默地为服务器提供身份验证。
使用X.509 证书的一个主要优势是,我们不再需要用户名和密码的组合,这在之前已经讨论过其弱点。理想情况下,使用数字证书应与其他身份验证因素结合使用,例如在用户手机上使用的 PIN 或多因素认证应用(MFA app),该应用需要指纹验证。
通过在你的组织的公钥基础设施(PKI)中充当证书颁发机构(CA),你的系统管理员能够大规模地分发和撤销数字证书,并利用这些证书来满足组织的访问控制策略。这与现有的系统(如 Active Directory 或 LDAP)兼容,并提供了一个更加简化的方式来管理组织中的身份验证。
从这里开始,我们进入授权的讨论。
授权
经常与身份验证(authentication)一起使用,授权(authorization)是身份验证后赋予客户端(client)或主体(subject)访问资源的权限级别。授权并不总是访问资源所必需的,例如,在 Google 上搜索时,你无需进行身份验证即可进行搜索(虽然你可以进行身份验证),任何能够在浏览器中访问google.com的人都拥有使用该资源的授权。
然而,为了访问你的 Facebook 消息,或者更改你的个人资料照片,你需要先进行身份验证,然后你便拥有授权,能够创建、读取、更新和删除你拥有的内容。
本质上,计算机系统允许实施编程决策过程,该过程根据身份验证过程与定义的安全性和隐私要求的结合提供授权。
专注于组织中的授权是确保将适当的访问权限授予合适人员,并且没有过多权限的关键步骤。是的,我们再次在谈论最小权限,而且这背后是有原因的。最小权限是确保组织安全的重要组成部分,虽然有时实施最小权限原则看似工作量大,但其带来的好处通常能很快弥补这些成本。
我们之前讨论了现实世界中的访问控制模型。利用这些模型是最佳实践,能够确保你不会遇到(或完全忽视)在安全漏洞中常见的问题。使用MAC、DAC、RBAC或ABAC,或者这些示例的组合,是信息系统中常见的标准做法。
作为一个例子,你可以将 ACL 与 RBAC 结合,为你组织中的每个角色创建一套规则,允许访问与其角色相关的资源,并根据需要可能允许编辑、更新或删除这些资源。
管理这些原则并确保组织中的用户获得他们所需的访问权限——既不过多也不过少——的最佳实践是使用 IAM 工具套件。接下来,我们将深入探讨如何利用这些系统。
身份和访问管理(IAM)
当我们审视如何管理本章中所涉及的所有身份验证和授权原则时,我们可以通过利用被称为 IAM 工具的工具来简化流程。这些工具帮助组织在正确的时间为正确的资源提供正确的访问权限,并通过为每个用户提供一个单一身份,帮助进行维护,该身份在用户在组织中的整个生命周期内都被维护和监控。这可能包括员工、客户或第三方。如果用户更换角色或离开,其访问权限也会通过IAM进行反映。
一个集中管理的身份库系统用于管理身份和调控访问,这能带来更大的灵活性、更好的安全性和更高的生产力,但也需要技术经验丰富的人来管理其行政工作。此外,围绕这些系统的定期管理和审计的政策和程序对于避免停机并确保安全违规不被忽视至关重要。
请记住,当我们查看HIPAA、SOX、GDPR或几乎任何其他信息安全或隐私的合规要求时,我们会看到对于控制访问员工和客户信息的要求。IAM 工具提供了一个强有力的解决方案,确保你的组织能够遵守这些要求。
这些系统通常与之前提到的协议和流程兼容,例如 PKI、Kerberos、SSO 和密码验证,并允许各种实施模型,使用户可以在家工作,从移动设备认证到SaaS解决方案,以及其他非传统的工作方式。
谈论企业级身份管理而不提及目录,比如Microsoft Active Directory,是没有意义的。目录与 IAM 工具不同,但是是其运行的关键组成部分。IAM 工具管理来自多个来源的信息,例如 HR 工具或 Active Directory。
实际上,IAM 系统要做的是自动化环绕组织中这些工具管理的业务流程。有新员工加入公司时,HR 软件解决方案会触发在目录中创建新用户的过程,然后根据他们在第一天可能需要的内容触发其他操作。
包括身份即服务(IDaaS)云订阅在内的第三方身份服务越来越受欢迎,旨在减少开销并改善相关的连接性。
利用可用的自动化功能来减少手动 IT 管理任务,需要一些条件才能正确利用这些服务。让我们看看其中的一些条件。
利用身份服务
首先,你的组织 必须建立政策和程序。这是我一直在说的,也是因为它总是正确的。如果你不将规则写下来,如何可能管理像组织的访问控制这样复杂的事物呢?
这些政策和程序将旨在回答以下问题:
-
你的组织将如何处理访问控制?重点是基于角色的方法吗?我们是否考虑MAC呢?
-
如何为新员工分配权限?每位新员工,我们如何定义他们的访问权限?确保他们能在工作的第一天访问所有资源是如何处理的?
-
哪些角色或员工有哪种级别的授权?这可能与你的方法和是否是RBAC、MAC、DAC等有关。
-
当员工离开组织时,有什么措施确保他们不再具有访问权限?
-
如果用户需要例外规则,如何进行升级、批准和管理?
-
何时审查访问权限?我们如何确保员工角色变化时对资源的访问权限不会随之增加?
-
自动化可以走多远?我们能自动化密码重置吗?关于根据 HR 系统中感知到的变化来撤销权限呢?例如,假设用户提交辞职申请。
-
如果外部顾问加入公司或第三方需要临时访问权限,该如何处理?是否采用联合身份管理?
-
哪些服务由单点登录(SSO)覆盖?
-
你如何教新用户使用这些系统?是有一份纸质手册吗?一个网页门户?公司里有专人坐下来教他们吗?创建一个正常的入职流程,并尝试通过模拟新员工的体验来测试你的计划。
现在我们已经涵盖了身份和访问管理(IAM)的概念,我想继续讨论作为访问控制一部分的物理访问控制。
控制对资产的物理访问
当我们在信息安全中讨论访问控制时,有时我们会忽略物理方面,倾向于关注数字方面。对硬盘、机器、文件夹或打印文档的物理访问对恶意行为者来说可能具有高度价值,因此应该加以控制。在这一部分中,我将简要讨论需要考虑的各种物理安全概念。
物理访问控制
如果我们希望限制对建筑物或房间的访问,并只允许授权人员进入受限区域,可能会考虑以下几种解决方案:
-
人工访问控制,例如保安、接待员或验票员。
-
机械访问控制,例如锁具和钥匙。
-
技术访问控制,例如人身陷阱、旋转门、指纹或视网膜扫描仪、基于钥匙扣的访问控制或出口障碍。
-
围栏或周界障碍可能防止个人绕过访问控制。
访问控制系统可以帮助管理和监控对区域的访问,并记录谁、何时以及在哪里尝试访问,是否被接受。
物理锁和钥匙无法基于时间限制访问,也无法提供任何进入记录。此外,它们几乎无法证明钥匙持有者就是应该拥有钥匙的个人。
此外,在钥匙丢失或被盗的情况下,撤销访问权限非常困难,而且不可能知道钥匙是否被秘密复制。
电子访问控制登场了,而且正好是时候。
电子访问控制
电子访问控制(或EAC)的优势在于,我们可以解决一些以前锁和钥匙组合的缺点……或者说组合锁的问题。
对于计算机,我们可以做以下几项:
-
更好地通过时间来限制访问
-
记录进入尝试和成功的情况
-
可以轻松地在细粒度上撤销访问权限,而不需要更换整个锁具
-
获取其他信息以证明个人有授权,而不仅仅是钥匙
在获取其他信息的话题上,我们可以进入多因素认证(MFA),要求用户提供以下两项或更多的身份验证信息:
-
他们知道的某样东西,可能是密码或 PIN 码
-
他们拥有的某样东西,可能是一个电子钥匙扣或智能卡
-
他们的生物特征,可能是视网膜或指纹扫描
如果用户是通过数字方式而非物理方式访问某些内容,我们可以增加另一个“因素”类型,即"他们所在的位置",这是通过 GPS 位置证明用户身处一个被认为能够证明其身份的地方。显然,这种方式不适用于物理安全访问控制。
防止利用
在涉及物理安全时,我们可能面临各种风险,例如以下几种:
-
尾随,即未授权的人跟随授权人员进入受限区域,有时甚至是因为礼貌地为其开门。这可以通过人陷阱和旋转门来缓解。
-
破坏行为,例如通过撞车破墙进入,或使用撬棍撬开门。检测到此类活动后,可能需要防御深度缓解措施,如护栏或钢铁门,以确保将风险降低到可接受的水平。
-
技术性攻击,例如克隆智能卡或暴力破解 PIN 码,可以通过多因素认证(MFA)、限速等方式缓解。
除了这些,考虑到与物理访问控制相关的风险并将其添加到风险登记册中也是值得的。
总结
哇哦!我们在这一章中涵盖了这么多内容,真该为自己鼓掌。
我们回顾了多种不同的访问控制模型和概念,包括经典的贝尔-拉帕杜拉模型和比巴模型。然后,在这些概念确立之后,我们探讨了现实世界中的例子,包括基于角色的访问控制(RBAC)和基于自愿访问控制(DAC)模型,并分析了它们的实际意义。
接着我们讨论了如何为人员、设备和服务选择并实施认证和授权机制。我们讲解了认证和授权之间的区别,以及它们如何协同工作来提供访问控制,确保安全性和隐私。我们还涵盖了密码、智能卡和生物识别,以及一些常用的认证协议。
然后我们深入探讨了IAM是什么,以及你如何利用组织中的身份服务来扩展并确保你的 IT 团队不被繁琐的访问管理任务所压垮。
我们还初步探讨了如何控制资产的物理访问,这是在这个话题中经常被忽视的内容。
覆盖了所有这些主题之后,在我看来,你对能够帮助你回答我们在本章开始时提出的问题的思想有了更深入的了解:
-
如何确保某个实体确实是其声称的已批准用户?
-
我们如何在数字环境中以自动化方式执行这些规则?
-
如何确保赋予合适的权限,以促进生产力?
既然我们已经涵盖了这些要点,我可以说我们已经达到了本书的一个重要里程碑!我们已经涵盖了足够的信息安全话题,终于可以进入第六章,设计与管理安全测试过程。不再拖延,让我们开始吧!
第三部分:信息安全的运营化
在这一最后部分,我们将实施措施以确保系统和软件的安全,保持对安全事件的可见性,确保对安全事件的反应是充分的,并且不断改进流程。
本节包含以下章节:
-
第六章,设计和管理安全测试流程
-
第七章,拥有安全运营
-
第八章,提高软件安全性
第六章:设计和管理安全测试过程
现在,你已经很好地理解了可以实施的控制措施,以便你在组织中有一个有效的安全策略,我猜你已经实现了其中的一些控制措施,现在,你可以放心地放松,浏览 LinkedIn,在工作电脑上看 Netflix,直到你退休。恭喜你!你已经赢得了金表。
哦,你刚刚被pwned了。哎呀,怎么会这样?好吧,这是因为在你的设计中有一个巨大的漏洞,而你没有让其他人* sanity check你的架构,也没有让任何内部或外部团队对你的环境进行渗透测试*。你需要第二双眼睛,通常,你希望那第二双眼睛是一个技术高手——一个与组织没有任何关系的人,不会因为负面的意见而担心得罪同事或上司。
你想要答案。你想要真相!你的安全控制有效吗?有没有绕过控制的方法?你的员工觉得实施这些控制麻烦还是难以使用?
当我谈论信息安全时,它通常会回到采用持续改进的思维方式,这当然包括测试你现有的实施,并改进任何发现的问题,以便运行更顺畅、优化的信息安全程序。哦,当然,不言而喻,你会根据…你知道我要说什么吧?我希望是的:风险。
在本章中,我们将涵盖以下主题:
-
准备安全评估
-
了解不同类型的安全评估
-
执行安全评估的最佳实践
-
解读安全评估结果
到本章结束时,你将能够理解安全控制测试,包括安排外部和内部安全审计、如何分析报告并审查测试结果,以及如何管理每个评估中产生的行动。
让我们开始吧!首先,让我们看看我们需要测试什么,以及我们打算如何进行测试。
准备安全评估
我们怎么知道我们的系统可以防御攻击者?我们怎么知道我们的系统是有韧性的?我们怎么知道我们的系统是适当冗余的?
不幸的是,答案不能仅仅是“因为是我自己设计的”(戴着墨镜,站在电梯里的 Segway 上)。至少,第二双眼睛是很重要的。为什么我说“至少”?有时,你的第二双眼睛可能是一个同事,他要么没有足够的知识,要么与组织的隔离程度不够,无法提出他们如果没有上司会因为提出意见而冒犯对方的观察。
首先,你需要获得高层管理的支持。这是本书中的另一个经典主题,也是信息安全中的经典主题,你将在各种标准中看到这一点。例如,在ISO 27001的要求中(www.iso.org/standard/54534.html),第 5 条谈到领导力,而第 9.3 条则涉及管理评审。第 5 条指出,高层管理层必须参与制定信息安全政策。第 9.3 条则要求高层管理层持续参与评估信息安全管理系统,以确保其有效性。
就像我们之前说过的那样,管理层中的某些老古董怎么能做到这一点呢,尤其是他们还没有学会如何在 Excel 中使用公式?其实很简单:他们批准支出,并正式回应调查结果,要么批准所需的修复费用,要么接受风险。当然,作为你组织中的信息安全专业人员,你需要将调查结果转化为管理层能理解的内容,并且要以一种易于理解并突出任何风险的方式进行。
让我们来看一下如何根据组织需求选择合适的评估解决方案。
定义你的需求
你有大量的信息、系统、建筑和其他敏感或机密的资产,你已经实施了控制措施来保护它们。为了说它们是安全的(并且确保CIA 三原则完整),你需要确保这些控制措施有效地防止未经授权的访问、未经授权的修改,并确保可用性。对吧?对。
这是一件简单的事情,写起来简单,执行起来却不那么简单,尤其是当你的组织做着成千上万种不同的事情时。如果你联系到信息安全咨询公司,你可能会运气不错,遇到一个真正关心你组织的销售人员,然后他会拒绝销售那些不合适或不必要的评估。这对你来说是一个很好的情况,但同时,重要的是在购买之前确保你知道自己需要什么,并且,如何确保你接触到的是那种类型的销售人员呢?
此外,你是否愿意在还没有机会充分内部评估系统之前,就支付咨询公司来评估你的系统?这不仅听起来像是在浪费钱,而且也显得有些不负责任,直接交给别人而没有任何了解。我的意思是,我们是什么?高层管理层吗?!
首先,我们需要参考任何我们需要遵守的标准或法规,并记录是否因此需要进行安全评估。之所以建议这样做,有两个原因:
-
首先,我们可以接受标准和法规是有其存在的理由的,并且它们包含了适用于所有组织(包括我们自己)的最佳实践。
-
其次,如果您没有遵守要求,您可能会在未来的审计中被罚款,或者失去对标准的认证。有时,您的组织有与维持各种标准相关的业务运营和关系,例如支付卡行业数据安全标准(PCD-DSS),并能够处理卡支付。
有时,例如在 PCI-DSS 的情况下,标准的评估要求会根据您组织的活动不同而有所不同。对于低量处理,您可能只需要填写自我评估问卷(SAQ),而不是让合格安全评估员(QSA)评估您的系统。
让我们更仔细地看看 PCI-DSS 的 12 个高层次要求作为例子:
-
实施并维护有效的防火墙
-
更改所有默认密码
-
对持卡人数据进行静态加密
-
对持卡人数据进行传输中的加密
-
实施并维护恶意软件防护
-
更新和修补系统以防止漏洞
-
对持卡人数据的访问控制
-
对系统组件的访问控制
-
对持卡人数据的物理访问控制
-
监控所有对持卡人数据和网络资源的访问
-
定期测试系统
-
为所有员工维护信息安全政策
现在,让我们假设由于您的组织处理的支付交易数量较大,因此需要一个 QSA。这些 QSA 将评估您的组织是否符合这 12 个高层次要求(以及总计 220 多个子要求)。如果您无法证明这些要求,您的组织面临罚款的风险,或者可能无法接受某些类型的支付。
当我们考虑为PCI-DSS 评估做的准备工作,并确保您的组织在 QSA 到达之前符合标准时,重要的是要安排测试,记录每个要点的发现。我们这样做是为了确保我们的组织能够接受支付并避免被罚款。我们有一份要求清单,其中包括要求 11,即测试所有系统、流程和软件,以便了解任何可能被恶意行为者利用的漏洞,然后应用适当的控制措施。
组织可能会出于其他原因对其内部系统进行安全评估,即使没有具体的监管要求。可能的原因包括不确定组织的知识产权是否得到了适当保护,或者检查已实施的控制措施是否有效地防范了威胁。也许你认为组织的安全性较差,但没有人听你的。在这种情况下,你可能未能获得高层管理的支持,但通过让专业人士展示如何利用漏洞进行攻击,或许能引起更多关注和/或争取到预算。做出这个决定并不是我所能倡导的,但它可能会有效,也有可能让你陷入困境,因此尽量争取上级的支持。
在我们选择进行哪种评估时,这取决于你的需求和战略。你在做出决策之前可以定义的一些内容包括以下几个方面:
-
为什么要进行评估?
— 合规性:有时,组织仅仅需要勾选一个合规性框。对于一些顾问来说,合规性评估可能是他们工作的大部分内容。如果这对你的组织来说是主要驱动力,那么花钱做更高价值的评估可能不太值得。
— 追求改进:在这种情况下,组织可能已经符合要求,但希望得到比当前更好的保护。此时,你可能需要更高价值的评估,因此需要一些稍微贵一些的服务,或者选择一家更有名的公司。
此外,安全评估有助于通过快速发现错误来降低成本,提供一个私密的环境,让团队可以修正任何发现的问题,同时避免因泄露带来的声誉损害。
-
测试的内容是什么?评估的范围是什么?
— 软件:你是否想查看你的组织所创建的软件是否能够防止入侵或滥用?你是否想检查你的文件共享软件或操作系统的配置是否得当?针对软件有各种评估方法,比如网络应用渗透测试、安全扫描、内部渗透测试、外部渗透测试等。
— 硬件:你的组织是否创建或购买了某些物理设备,如自动取款机、锁系统或加密货币钱包?你将需要一个硬件安全测试人员来评估它是否足够安全,以保护它需要保护的内容。
— 网络:前面已经提到过,您可能想要了解,组织内部的低权限用户能够利用自己的凭证做到什么程度。您可能希望查看某人是否能从外部入侵您的网络并提升他们的权限。您是否想在其中加入社交工程的测试?您是否想同时测试您的物理安全性?
— 员工意识与物理安全:社交工程评估,例如钓鱼活动,向用户发送伪造的跟踪链接,测试他们识别社交工程攻击的能力。
— 物理安全:您是否对“黑队”评估感兴趣,即安全评估人员会实际(并且数字化)渗透到您的场所?员工是否允许陌生人进入限制区域?在这种情况下,某人可以访问多少信息?
-
您会给评估人员多长时间?
— 有时,一个精心策划的活动可能需要几个月的时间来妥善规划和执行。您试图模拟什么类型的威胁?
-
您需要评估在何时完成?
— 信息安全行业正在蓬勃发展,但目前人才短缺,这可能导致评估完成的延迟。确保提前规划,并与不同的公司沟通,了解他们的交付周期。
-
您对这个特定评估的预算是多少?
— 如果您需要一个“红队”评估,其中评估团队需要长期规划并模拟长期的真实威胁,但您只有 5000 美元预算,并且没有监控或“蓝队”,您可能需要重新考虑您期望的目标。
与提供安全评估的第三方交流时,值得询问他们的评估方法,并了解他们是否有适用于您希望进行的具体任务的参考资料。此外,在正式合作之前,可能值得与评估人员交流,并/或查看他们的简历。
另一个重要的要求是您的条款。首先,您不希望评估导致您的生产系统停机,并让您的组织因为收入损失而付出代价。这对任何人都不利,您希望与有经验的第三方合作,以防止这种情况发生。此外,您不希望在您有机会修复漏洞之前泄露您的弱点。一种防止未经授权共享的方式是设立各种条款,包括保密协议(NDA)。
现在我们已经涵盖了关于在进行安全评估之前,您和您组织成员可能需要问的一些高层次问题,我认为接下来讨论我们可能遇到的安全评估类型是个好主意。
了解不同类型的安全评估
有多种安全评估可帮助您了解以下内容:
-
您整个组织的安全态势
-
你的硬件产品的安全控制有效性
-
你的软件产品的安全控制有效性
-
你建筑物的安全性
-
你员工的安全意识
-
你安全团队应对主动威胁的能力
除了这个列表外,执行这些类型评估的方法有很多,包括让你自己的员工进行内部审查,或让其他组织进行第三方审查。此外,还可以进行自动化测试。
内部审查有助于降低成本,在某些情况下,如果内部团队熟悉其审查的流程,还能节省时间。然而,内部审查缺乏客观性,且可能没有“新鲜眼光”来看待目标。
第三方审查由行业专家进行,这些专家每天都在破解软件、硬件、建筑物和组织的信息系统。他们的发现通常会以标准化报告的形式提供,报告可能还会提供补救措施和战略建议,指导你的组织接下来的行动。此外,第三方能够诚实并公开地向客户说明其缺陷,前提是这不是简单的合规性勾选式评估。
另一方面,第三方审查可能会很昂贵、耗时,如果没有经过良好的规划和与组织的合作,它们可能缺乏相关性。
总体而言,安全评估既有积极的一面,也有消极的一面。它们有可能会让组织付出时间、金钱,并减少创造新价值的能力,但它们也提供了揭示安全问题的机会,这些问题如果不处理,可能会通过声誉损害、法规问题或盗窃等带来更大的财务损失。
让我定义一下每项评估可能涉及的内容。
自动化评估和扫描
在自动化评估和安全扫描中,你依赖软件根据收集的各种信息,检测已知的安全漏洞,并将这些信息与漏洞数据集进行对比。让我简要说明几个可以进行自动扫描的场景。
Web 应用程序漏洞扫描器
通常,Web 应用程序漏洞扫描器可以指向你的组织的 Web 应用程序的 IP 或 URL,并让它“扫描”漏洞,方法是解析HTTP 响应来获取有关软件的信息。然后,它可以将这些信息与已知漏洞的数据集进行对比。
除此之外,他们还可能检查暴露的文件,这些文件可能被用来访问机密信息或提升权限,例如在 WordPress 站点中找到/readme.html,从而揭示 WordPress 版本信息。
许多扫描工具会包括模糊测试器,用于检查SQL 注入和跨站脚本攻击(XSS),以便检测以前未发现的漏洞。模糊测试器自动化了渗透测试者(或恶意攻击者)为确定用户输入是否存在漏洞而进行的初步过程,一旦发现漏洞,测试者会花时间修改并利用该漏洞来获取信息或访问权限。
此外,如果你的网页应用允许登录功能,大多数网页应用漏洞扫描工具都会允许你提供凭证进行身份验证,这将模拟来自已经“突破”登录屏障的恶意攻击者的攻击。
许多付费的专有网页应用漏洞扫描工具会内置不同类型应用的“配置文件”,以减少扫描时间或模拟不同程度的攻击。
一旦扫描工具配置正确,你就可以对组织的网页应用进行扫描,完成后,软件通常会将发现结果整理成报告或网页仪表盘,报告中会解释每个发现、基于风险的漏洞评分,以及潜在的修复步骤。
如果你的网页应用面向外部世界,很可能恶意攻击者已经对你的服务器和应用进行过自动扫描,以检查是否存在漏洞,通常使用下面列出的开源工具之一。很难通过IP 黑名单来阻止这些攻击,因为它们通常来自被攻陷的机器的 IP 地址,或者根本不遵循特定的模式。这类活动时时刻刻在互联网各处发生。这些扫描往往来自那些寻求“低挂果实”的团体,因此,对自己的应用进行扫描并分析结果是否会引发潜在机会是很重要的。网页应用防火墙能够检测这些活动,并防止泄露过多信息,但在这方面,最好的防御方式是确保及时实施服务器操作系统和网页应用软件包的安全更新。
以下是一些网页应用漏洞扫描工具的示例,分为专有和开源选项:
-
专有:
a) Tenable.io/Nessus
b) Rapid7 InsightAppSec
c) Acunetix
d) Detectify
e) WP Scan
-
开源:
a) Nikto
b) OWASP Zed Attack Proxy(ZAP)
c) w3af
d) OpenVAS
如果你计划设置自己的网页应用漏洞扫描工具,无论是开源的还是供应商提供的,你应该考虑一些常见问题,涉及漏洞扫描活动的实施。
你有资源维护一个内部系统吗?
如果你没有专门的员工负责维护内部漏洞扫描器的工作职责,那么将此需求外包给提供托管服务的第三方可能是有用的,第三方将维护和更新扫描器,确保你获得最新和相关的结果。
另一个值得问的问题如下:
你打算扫描你的生产 Web 应用程序吗?
如果你的组织依赖于 Web 应用程序赚钱,并且与客户有 SLA 来确保正常运行,那么是否有意义对其进行扫描,这可能会导致它变慢或停机?
另一种解决方案是建立一个渗透测试或扫描环境,它是你生产环境的1:1 克隆,在软件方面与生产环境相同,但使用虚拟数据集,通常运行在完全独立(且便宜得多)的硬件上。这个解决方案有许多优点:
-
你可以将 IP 列入白名单,指定扫描器的IP 范围,该范围通常由供应商在文档中提供。如果你自己设置了 Web 应用漏洞扫描器,你应该知道这些 IP。这使你能够限制服务器需要做的工作量,从而确保该环境的需求比生产环境低,成本显著低于真正的复制环境。
-
你避免了因扫描而导致生产系统停机的风险,因为测试环境与产生收入的系统不共享任何资源。
-
你可能在生产环境中有一个Web 应用防火墙(WAF),但在渗透测试环境中,你可以专门测试你的应用程序,而不是测试 WAF 本身。在这种情况下,你可以通过 WAF 将扫描器 IP 列入白名单,从而使请求可以不经过检查地通过。
在测试环境中使用不同的凭据和帐户,并使用虚拟数据集而非生产数据集,以确保隐私和保密性,通常也是个好主意。此外,拥有一个“渗透测试”数据集,它占用的存储空间比生产数据集少,也可以节省资金。
网络漏洞扫描器
网络漏洞扫描器在功能和操作上与Web 应用漏洞扫描器非常相似,但它们专注于你组织的网络环境,包括员工使用的设备和服务。
许多漏洞扫描器供应商将 Web 应用程序和网络扫描合并到他们的解决方案中,提供一种“一体化”或“单一视窗”的统一自动漏洞评估方法。
通常,你希望网络漏洞扫描器执行以下任务:
-
发现网络中的设备和软件资产。
-
确定设备的软件版本和操作系统版本。
-
检查从收集的信息中获取的已知漏洞。
-
根据风险/漏洞分数报告并优先排序修复步骤。
许多解决方案提供额外的功能,包括以下内容:
-
深网监控,检查你的组织的凭证是否已在市场上被检测到
-
记录网络事件,如用户活动,并与警报进行关联
-
一个用于网络(NIDS)、主机(HIDS)和云的入侵检测系统(IDS)
-
端点检测,可能来自网络事件启发式分析
本质上,这意味着网络漏洞扫描器软件能够收集有关你内部网络环境的信息,然后判断是否存在恶意行为者可能利用的漏洞,从而进入你的网络并在网络内部“转移”以提升其特权,最终导致网络被攻陷。
如果你的组织使用过时的操作系统,如Windows 2008 或 2012 服务器或Windows 7 桌面,那么你的网络漏洞扫描器将像圣诞树一样亮起,你将不得不完成大量的工作来修复这些问题。也就是说,运行这个扫描要比支付数千美元给安全公司,然后让渗透测试员在几个小时内攻陷你的网络要便宜得多。通过修复网络漏洞扫描器中发现的问题,你在去除低悬果实,并增加了入侵你组织网络所需的技术水平。
一些网络漏洞扫描器的例子,分为专有和开源选项,可能包括以下内容:
-
专有:
a) Microsoft Security Suite
b) Tenable.io/Nessus
c) Rapid7 InsightVM
d) AT&T Cybersecurity USM Anywhere
e) Acunetix
f) Detectify
g) WP Scan
-
开源:
a) Nikto
b) OWASP Zed Attack Proxy(ZAP)
c) w3af
d) OpenVAS
除了在环境中进行漏洞扫描之外,还需要考虑你组织开发的任何软件中的漏洞,因此让我们更详细地看一下这个场景。
软件开发生命周期(SDLC)或 DevSecOps 扫描
如果你的组织开发软件,无论是供内部使用、客户使用,还是供公众使用(包括网站),那么在软件开发生命周期(SDLC)中实施安全实践是至关重要的。
在整个过程中有许多机会和阶段可能会引入漏洞,在 第八章 提高软件的安全性中,我们将深入探讨如何提高软件的安全性并加强安全的软件开发生命周期。直到那时,还是值得关注可以在过程中实施的扫描器,用来检查漏洞代码或软件包,包括以下内容:
-
静态应用程序安全测试(SAST)工具会扫描你的软件源代码。它们通常会集成在开发人员的集成开发环境(IDE)中,或者被设置为自动扫描你代码库中的新条目或提交,例如 GitHub、BitBucket 或 GitLab。通过扫描源代码,软件可以找到常见的陷阱和错误,这些错误可能导致应用程序漏洞,例如 XSS 和 SQL 注入,即使在应用程序上线后。常见的 SAST 工具示例包括 GitLab 集成的 SAST 工具和 SonarQube / SonarCloud。
-
动态应用程序安全测试(DAST)工具本质上与之前讨论的 Web 应用程序漏洞扫描器相同。它们允许你在软件编译并运行后,通过信息收集和模糊测试对软件进行扫描。通常,DAST 与软件开发生命周期相关,理念是你可以自动触发对每个由开发人员修改的应用程序源代码的临时测试环境的扫描,并根据扫描结果,如果该更改不符合安全基线要求,则拒绝该更改合并到生产代码库中。基本上,我的意思是,Web 应用程序漏洞扫描器通常能够配置为软件的CI/CD 管道中的 DAST 工具,或者定期进行扫描。
DAST 工具的示例包括 Acunetix、Rapid7 InsightAppSec/AppSpider、Tenable.io/Nessus 以及 OWASP 的 Zed 攻击代理(ZAP)。
-
依赖扫描工具允许你扫描软件导入的依赖项。开发人员通常会利用其他方已创建的软件,这避免了耗时的开发过程并减少了实现的复杂性,但也增加了将已知漏洞引入软件的可能性。依赖扫描器会将导入的模块及其版本与已知漏洞的数据库进行比对,以确保你的软件不会使用到存在漏洞的第三方代码版本。
依赖扫描器的示例包括以下内容:
a) Snyk.io 评估多个语言的导入,包括 JavaScript、Java、.NET、Python、GoLang、PHP 等。
b) Node 包管理器(NPM)为 JavaScript 提供了一些内置的依赖扫描器。
c) OWASP 依赖项检查项目。
现在我们已经讨论了如何对你组织的数字资产进行自动化扫描,我认为有必要进一步探讨可以由你组织内部员工执行的其他内部评估。
内部评估
内部评估是指那些无需外部(第三方)专家帮助就能执行的评估。我们来看一下你可以进行的几种不同类型的内部评估。
员工安全意识评估
我们已经讨论过,在我们的组织中给予员工安全意识测试,以确保他们已经吸收了提供的信息,并作为对您的合规性审计的尽职和持续改进的证据。一种方法是让员工需要以问答形式回答标准化测试题,以展示他们的知识水平。
另一种方法是利用工具,例如对员工进行钓鱼训练,例如发送他们已经接受培训以识别的电子邮件,并记录他们的响应指标。如果维护内部软件和创建新的电子邮件模板的开销在内部无法承受,则第三方也可以作为托管服务来执行此项工作。
合规性审计
如果您的组织受到诸如通用数据保护条例(GDPR)或加州消费者隐私法(CCPA)之类的法规,或者诸如ISO27001或 PCI-DSS 之类的标准约束以执行其核心业务目标并为客户提供服务,那么理解您的控制措施的有效性,并找出合规要求与实际情况之间的差距就非常关键。
为此,可以进行内部合规审计,作为对将来由监管机构或代表其进行检查的第三方审计的准备。模拟第三方,并调查证据是否存在,以评估控制实施对要求的有效性,是在您真正支付昂贵的审计员前来对您的组织进行评估时,减少时间和精力消耗的绝佳方式。
您必须确保做好记录,并确保所有要求被适当的员工了解,以便实施适当的控制并保持合规性。像Microsoft Compliance Manager这样的软件解决方案可以跟踪、分配、安排和记录对超过 300 个全球法规的合规性观察,并提供关于实施方法的解释和指导,这些方法在您的组织中可能非常有效。
红队和蓝队
如果您拥有一个合格的内部安全团队,您可以将团队分为红队(攻击团队)和蓝队(防御团队),以模拟恶意行为者的攻击方法来攻击您的组织,测试防御团队应对这些攻击的能力,并减少可能造成的损害。
较小的组织在这项工作中将比拥有非常庞大安全团队和大预算的大型企业更加困难,但即使是大型组织也可能发现他们的团队更适合执行防御措施,而不是渗透测试人员已经掌握的攻击性措施,所有这些措施都可以通过第三方参与利用。
有了这些,我们来看一下可以由你的组织进行的第三方评估。
第三方评估
当你想评估你的控制措施在风险评估或内部评估中所估算的有效性时,你会想引入第三方评估员。当你想测试你的蓝队的有效性时,你会想引入第三方评估员。如果你想向潜在和现有客户展示你的安全效果时,你会想引入第三方评估员。当你想遵守标准和法规时,你需要引入第三方评估员。
你可能有很多原因想要或需要引入第三方。归根结底,这涉及到两种特定的理念:客观性和技能。
在安全公司工作的渗透测试员每天都获得报酬,去“攻占”客户系统,这些系统可能非常先进,也可能是“普通”的。它们使用恶意行为者可能使用的工具,并且在攻防安全方面高效且熟练。此外,由于没有受到办公室政治或既得利益的影响,他们无需讨好你们公司的人;他们是客观的,他们的报告通常清晰、标准化,并且具有可操作性。
第三方可以进行多种评估,且新的“类型”不断涌现。我将提供几个例子。
考虑到我们可能(潜在地)将以下任何安全评估作为内部审查进行,而不是让第三方组织执行测试。
技术评估和渗透测试
技术评估和渗透测试有多种形式,但通常,评估的重点是查看是否可以利用漏洞来获取访问权限,并在此基础上提升权限,直到能够访问机密或敏感数据为止:
-
Web 应用渗透测试是由渗透测试员或多个渗透测试人员针对Web 应用程序进行的测试。它模拟了一个恶意行为者试图通过 Web 应用中的功能和/或漏洞来获取访问权限并提升权限。
-
网络渗透测试是由渗透测试员或多个渗透测试人员对组织的网络环境进行的测试。它模拟了一个恶意行为者试图通过安全漏洞远程获取访问权限并提升权限,或者模拟一个内部威胁,假设其初始访问权限有限,然后通过安全漏洞提升权限并访问机密或敏感信息。
-
红队和黑队 是模拟威胁的活动,复制恶意行为者尝试通过任何必要手段渗透进入您的组织的情景。红队 通常专注于信息安全,而黑队 则通常专注于物理安全。
红队和黑队都比传统的渗透测试需要更多的计划和侦察工作,但它们总体上代表了更高质量的测试。这对于那些已经建立良好信息安全实践和程序,并在其员工中具有被证明的控制有效性和高级别安全意识的组织非常有价值。通常,蓝队 将意识到这一参与,并准备好保护其资产,这需要您的组织进行计划和准备。
继续从渗透测试出发,接下来我们将关注风险管理和治理评估。
风险管理和治理评估
远离技术评估,我们转向“无聊”的合规审计和认证审查世界。在这里,业务流程和政策将被审查和测试其有效性,需要证据来满足审计员的要求。我之前提到过这些审计; 例如,它们可以包括PCI-DSS 合规评估或ISO27001 认证评估。
只要审计员技术娴熟,您与评估人员诚实开放,这些评估可能具有巨大的价值。这些评估人员可以发现您流程和程序中的漏洞,并识别您可能没有考虑到的风险,以便轻松地由您组织内的业务利益相关者理解。
不幸的是,如果评估人员没有足够的时间参与,或者没有足够的权限从头到尾对公司进行全面评估,他们可能会错过漏洞和间隙。这就是为什么与评估人员保持诚实和开放,确保您的组织从评估中得到物有所值的重要性所在。
考虑到第三方安全评估可以分为这两种“风格”,我们可以理解以下内容:
-
涵盖整个组织安全姿态的评估通常会是技术和风险管理评估的混合。
-
对您的硬件产品安全控制效果的评估通常会归入技术评估。
-
对您的软件产品安全控制效果的评估也是如此。
-
评估建筑物安全可以通过技术或风险管理评估来完成,但通常我们会考虑“黑队”。
-
你的员工安全意识的第三方评估可以包括钓鱼演习或红队/黑队参与。
-
您的安全团队应通过红队评估来应对主动威胁,在此过程中,您的团队充当蓝队,保护组织的资产。
让我们继续讨论执行安全评估时的最佳实践。
执行安全评估的最佳实践
无论您的组织是在进行内部评估,还是聘请第三方评估其信息安全状况,都有一些最佳实践可以有效确保评估的价值最大化。
关键要点如下:
-
确保评估有足够的时间进行彻底完成。匆忙进行评估没有意义,但同样重要的是确保测试不会拖延,确保您宝贵的 IT 和安全人员能够专注于评估,而不是日常工作需求。
-
确保测试范围已定义,以避免进行不相关的评估。
-
确保测试人员和协助测试人员的内部员工都经过良好的培训,准备充分,并且具备相关知识,以提高评估的价值。
还有一些过程可以在不依赖于纯粹出于合规性要求的测试和审计的情况下,用于有效选择合适的评估。
这些过程可以包括以下内容:
-
定义业务需求。
-
定义信息安全目标和策略。
-
从内部角度审查感知的优势和劣势。
-
对资产进行风险评估,包括已知的威胁和漏洞。
-
执行并记录来自网络和 Web 应用程序漏洞扫描的结果。
-
审查并记录系统的安全控制有效性,包括防火墙、VPN、客户端、访问控制机制和其他信息系统。
-
审查并记录来自访问控制列表和访问日志的发现。
-
审查并记录员工的安全意识。
一旦您收集了尽可能多的关于组织的信息(其中许多内容在我们之前多次讨论的风险管理阶段已经完成),您将能够基于风险做出决定,选择需要评估的资产,这样可以比仅仅对所有事物进行完全测试更有效地利用您的预算。
关于最佳实践的另一个简短说明是我之前提到过的:我认为为自动化扫描和(一些)渗透测试设置一个虚拟环境是值得的。这减少了使生产系统停机的风险,并且通过使用虚拟数据,避免暴露真实的客户数据或机密商业信息。这是一种成本效益高的解决方案,用来降低由于安全评估而导致的停机风险。权衡之下,一些认证机构、监管机构和客户可能不会像测试生产环境一样看待对克隆环境的测试,但这些情况可以在出现时进行处理。
在第三方测试结束时,评估人员会花时间撰写报告并提供结果。这些结果是为你的组织带来价值的,而不是支付费用仅仅为了勾选一个框并继续在不必要的风险下工作。这就是为什么诚实能够带来更好的、可操作的改进。你支付专业人士的费用是为了告诉你你的弱点,所以要诚实,获取真实的结果,而不是支付第三方费用后误导他们远离你流程和实践的实际情况,这样你的组织就能继续重复犯同样的错误。
让我们来看一下这些结果是如何呈现的。
解释安全评估结果
当我们查看安全评估的结果时,有两种类型,类似于我们在上一节中对第三方评估的划分。这两种类型分别是技术评估和风险管理与治理评估。
这两种类型的报告通常会尝试通过给每个发现的漏洞分配一个分数(可能是 1-5、1-10,或其他量表)来量化漏洞带来的风险水平。重要的是,你需要在风险评估过程中考虑资产的价值,因为有时一个漏洞可能被认为具有较高的可利用性,但可能不值得去缓解,因为它不会保护任何有价值的东西。换句话说,所呈现的风险水平低于风险接受水平。
通常,技术报告会包括渗透测试如何逐步进行的叙述,并附有截图、命令和其他信息,以帮助客户复制发现的结果并测试他们的修复措施。这些对于信息安全专业人士来说是无价的贡献,因为它们不仅作为你组织 IT 员工的教程,还帮助你将威胁呈现给非技术人员和高层管理人员。它为恶意行为者的思维提供了一个很好的第一人称视角,并有助于让威胁变得更真实。
在涉及第三方审查时,无论报告是技术性的还是非技术性的,通常都会包含由第三方交付的图表、图形和展示材料,并以“发现展示”的形式呈现。将公司相关利益方纳入会议非常重要,因为许多人不会阅读 PDF 报告。说实话:大多数人邮箱里有成千上万封未读邮件,那为什么他们会关注你那份枯燥的 PDF,里面写的是他们的业务是如何被轻松攻破的呢?
除了这些发现外,还会有修复步骤的建议。这些页面的价值不可估量。你基本上是在“坏人”告诉你如何防止他们(或具备相同技能的其他人)下次进入!因此,我的建议是按照他们的指导进行操作。你将需要计划如何更新和重构系统、修改密码以及招聘员工,所以第一步是确保你有必要的资源和批准。记住:发现展示将会唤醒高层管理人员,并成为一个很好的机会,让你在问题尚在他们脑海中的时候请求批准这些资源。
同样适用于内部审查,包括自动化评估和扫描的结果。你有度量标准以及可以采取的措施来控制风险,这些内容已经被量化,并以引人注目的方式展示,以帮助你向高层管理人员展示你的发现。不要错过向老板展示你信息安全计划价值的机会——这就是他们支付你薪水的原因。
在修复阶段,进行内部验证是非常重要的。这可以成为一个有益的机会,帮助 IT 和开发人员了解安全漏洞的危险,同时也提高了你组织的整体安全意识。此外,内部验证修复措施可以避免尴尬,因为你最不希望发生的情况是安排第三方进行后续测试,结果他们又做了完全相同的事情,浪费了时间、金钱和资源。
这让我进入最后一个要点:持续改进。你需要安排后续检查,以验证你的修复措施是否有效,然后你还需要为未来安排另一个测试,看看评估人员能否发现其他弱点。
总结
现在我们已经到了这一章的结尾,我知道你已经能够理解安全控制测试,包括如何安排外部和内部的安全审计,如何分析报告和审查测试结果,以及如何管理每次评估中产生的行动。
现在你已经了解了,可以进行各种不同的安全评估,以帮助你了解如何保护和改善整个组织的安全态势,以及你的网络和数字资产,从组织所创建的硬件和软件到物理安全和员工意识。
此外,你现在也知道了进行这些类型评估的不同方式,例如让你自己的员工进行内部审查,或是让其他组织进行第三方审查。此外,还可以进行自动化评估,你也了解了几种不同的自动化安全测试方法。
在我们讨论了安全评估如何帮助你的组织改善安全性并简化操作之后,我认为接下来讨论第七章,拥有安全运营,是有意义的。
第七章:掌控安全操作
你已经实施了自己心中对卓越且持续改进的信息安全战略的愿景,并且采取了适当的控制措施,以确保你的组织安全且合规。做得很好!接下来,你打算如何保持对事情的掌控?在发生安全事件或事故时,你将如何调查?我们需要做什么才能确保在线运作,保持组织资产的可用性,并使员工能够不受干扰地进行日常工作?本章专注于安全操作这一永无止境的任务,以及它如何与组织的商业愿景对齐。
本章将讨论以下主题:
-
配置资源和维护资产的有效策略
-
聚焦于可用性、灾难恢复和业务连续性活动
-
管理升级、打补丁及应用安全控制
-
事件调查与事故响应
-
实施和利用侦测控制
-
使用安全监控提高可见性
-
安全监控最佳实践
让我们开始吧!首先,我们来看看配置资源和维护资产的一些有效策略。
配置资源和维护资产的有效策略
Automox 在 500 至 25,000 名员工的公司中进行了一项调查,超过 500 名 IT 和信息安全专业人士回答了相关问题(www.darkreading.com/vulnerabilities---threats/missing-patches-misconfiguration-top-technical-breach-causes/d/d-id/1337410)。Automox 发现,过去两年内,超过 80%的公司曾遭遇过安全 breaches,以下数字显示了在这些攻击中被利用的漏洞类型:
-
操作系统补丁缺失(30%)
-
应用程序补丁缺失(28%)
-
操作系统配置错误(27%)
在成功的网络钓鱼攻击或凭证收集后,通常会发生一连串事件,这些事件往往会利用前面提到的某个漏洞。关键是,我们可以通过提供经过批准的配置并确保资产得到维护(包括操作系统和应用程序补丁与更新)来防止这种情况发生。
本节将讲解我们如何确保在整个生命周期内,资产始终得到维护并保持最新。这个过程是持续的,但它能节省时间和精力,并确保组织能够创新其产品,而不是单纯地应对信息安全威胁并急于更新遗留软件。
资源配置
在数字资产中,信息系统不断地被添加、移除和修改。不幸的是,这通常是没有任何监督或缺乏最佳实践指导的情况下进行的。
当我们将新资产添加到我们的资产池时,涉及什么样的流程?我们是否“只是做了”,没有定义更广泛的策略?我们对资产版本或操作系统有何种可视化?
此外,在云计算时代,部署只需要在浏览器中点击几下按钮,我们如何避免影子 IT(在没有 IT 部门批准的情况下使用系统、设备、软件或其他 IT 解决方案),并确保当组织中的员工“启动一个新服务器”时,遵循我们的流程,并考虑到我们的信息安全策略?
政策
随着你在本书中的阅读进展,你已经习惯了我对政策的看法:在信息安全政策文档中定义你的方法的力量是至关重要的。信息系统的配置和维护也同样如此。我们需要具体指导用户找到正确的答案。你不一定需要在政策文档中直接定义“批准”的操作系统版本或应该禁用哪些功能;事实上,我建议不要这样做,因为这将需要不断更新以保持相关性。
你可以指向一个不断更新的资源,类似于“批准的操作系统版本和配置可以在这里找到:。” 然后,在链接的文档中,可以更新并根据你的策略调整信息,无需维护文档,同时确保每个人都能获取到正确的信息安全政策版本。
配置管理
当我们查看上述包含“批准”配置的链接时,应该如何处理?我们从哪里获取“良好”的配置?如何定义我们组织需要什么,以确保操作的持续性?
幸运的是,市场上有软件配置管理(SCM)工具。常见的选择包括以下几种:
-
Microsoft 系统中心配置管理器 (SCCM),或配置管理器
-
SolarWinds 服务器配置监控器
-
Ansible/Ansible Tower
-
Puppet
-
Chef
这些工具提供各种功能,包括以下内容:
-
远程管理
-
补丁管理
-
软件分发
-
操作系统部署
-
配置管理
-
维护每个资产的软件和硬件清单
作为信息安全专业人员,这可以从多个方面帮助你。考虑到你现在拥有一份资产清单,以及每个资产使用的软件。这可以帮助你完善资产和风险登记表,并提供每个资产的实时准确信息,同时简化如审计等特定时间点的评估。通过配置管理,我们还确保记录所有更改,以便于轻松排查配置错误、停机、性能下降和不符合标准的来源,并提高系统的可审计性。
此外,我们有可用的治理结构,以便设置基准配置并实施变更控制流程,确保对生产系统的任何更改都是以系统化、计划好的方式进行的。通过实施这些治理控制措施,例如要求管理员在进行系统或网络配置更改之前验证所做的更改(职务分离),你可以降低配置错误导致停机或安全漏洞的风险。
运营员工可能会对建立治理结构提出反对意见,抱怨例如“这与我们以前的工作方式相悖”或“这会让我们变慢”。请记住,从组织的角度来看,节省的时间(无需恢复系统)、节省的费用(避免违反服务水平协议)、防止声誉损害以及在确保系统得到适当维护并设置了检查和制衡的情况下放心前行的心态,将弥补在变更时可能出现的轻微速度损失(如果真有速度损失的话)。流程的自动化可以帮助消除障碍,防止许多员工预测的那种麻烦。
当我们考虑有效使用配置管理工具时,应考虑以下实践:
-
确保将系统分类并分组到对组织有意义的分类法中。这些类别和子类别可以批量更改,因此请确保你和你的同行架构师在设计时考虑到这一点。
-
我们需要定义“已批准”的基础配置,并记录每个配置的理由和标签。像互联网安全中心(CIS)这样的组织提供“加固镜像”。这些操作系统和应用镜像很可能已经符合安全配置指南,比如 CIS 基准,能够快速、轻松地在云环境和本地环境中部署安全系统,而无需自行定义要求。更多信息可以参考
www.cisecurity.org/cis-hardened-images/。 -
在更改系统时,所有关于更改的信息(用户、时间、所做更改、受影响的系统)应当被记录和追踪,并且过程应当遵循有效的职责分离原则,以确保没有个人能够做出破坏性更改。
-
确保测试环境和生产环境之间的一致性,包括操作系统、软件版本、网络配置等。环境越对齐,当变更推向生产时,出现停机或未发现漏洞的可能性就越小。
-
在出现故障的情况下,还可以自动化回滚或修复的过程。
话虽如此,许多组织正在向一种名为基础设施即代码(IaC)的理念转变,这与DevOps和持续集成/持续部署(CI/CD)的 IT 管理和软件开发方法密切相关。让我们来看一下 IaC 的优势。
基础设施即代码
有一个叫做 IaC 的概念,从安全角度和 IT 运维角度来看,它都是一种非常有益的方法。IaC 的基本思想是,您的基础设施不再仅仅是特定位置的物理服务器,而是越来越趋向于完全虚拟化、分布式的云环境。因此,您不再需要配置、管理、扩展和停用物理硬件,或者使用传统的、专为这些硬件设计的交互式配置管理工具,而是可以在机器可读文件中定义您的基础设施和所有信息处理设施,这些文件像软件代码一样版本化并更新,供自动化软件在无需人工干预的配置/扩展/停用过程中引用。
这个想法与DevOps和CI/CD实践紧密相关,而不是传统的 IT 运维与软件开发人员之间的分离。IaC的目标,以及大多数DevOps和CI/CD实践的目标,都是通过减少错误频发的手动流程,提升改进的速度,加快部署并提高效率,从而部署更高质量的软件。
在我们讨论 IaC 工具和格式之前,我想提到的是,IaC 范式通常涉及利用容器和编排软件,如Docker和Kubernetes。
Docker 根据Dockerfile 中定义的指令构建容器镜像,Dockerfile 是一个文本文件,包含构建系统镜像所需的所有命令(例如应用程序及其依赖项),这些镜像被称为容器。容器是虚拟机的轻量级替代品,它们已经与运行它的服务器底层基础设施解耦。因此,一个服务器可以运行基于数千种不同配置的容器,每个容器可能包含不同的操作系统和软件包。关于 Docker 工作原理的进一步阅读可以在这里找到:docs.docker.com/get-started/overview/。
关于如何定义和编写Dockerfiles的进一步阅读可以在这里找到:docs.docker.com/develop/develop-images/dockerfile_best-practices/
编排软件,如Kubernetes,有助于自动化在分布式环境中部署这些容器,并帮助管理、部署和扩展容器的操作方面。编排软件行为的基础配置通常定义在YAML文本文件中,并且可以通过前端 Web 应用界面或命令行工具进一步修改。有关 Kubernetes 的进一步阅读可以在这里找到:kubernetes.io/docs/concepts/overview/what-is-kubernetes/。
你可能会问:“我为什么要简要探讨这些内容?”我想从信息安全的角度突出一个要求,那就是紧跟你组织运作方式的变化。IT 变化极快,理解新技术背后的概念非常重要,以确保流程和解决方案的安全性。在这个例子中,应考虑如何确保这些工具和文本文件进行安全性检查并进行版本控制。这些新的软件打包和部署方式正在逐渐成为你组织基础设施建设的方式,如果没有你组织定义的适当治理和流程,它们可能为恶意行为者提供了利用漏洞的机会。
在基础设施即代码(IaC)方面,在创建了用于包装和部署你组织中的应用程序所需的 Dockerfiles/YAML 后,你需要确保部署软件的基础设施被正确配置。接下来就是持续配置自动化(CCA)工具的作用。CCA 利用 IaC 的原则,并参考 IaC 定义文件,以自动化我们之前提到的 IT 配置管理方面。
你可能会问:“好吧,如果你只是想告诉我们那是旧的方法,且现在有了更好、更新的方法,那你为什么还要提到配置管理工具呢?!”
最棒的是,你通常还是在使用之前相同的工具组!一些流行的 CCA 工具包括以下几个:
-
Ansible/Ansible Tower
-
Chef
-
Puppet
-
SaltStack
与之前的列表相比,我们可以看到传统的配置管理工具与 CCA 工具之间存在重叠,例如 Ansible、Chef 和 Puppet 等。这些工具提供了传统的“前端”配置仪表盘,可以通过浏览器访问,并提供我们期望并要求的图形化库存管理和报告功能,这些是我们从传统配置管理工具中所期待的。
这些DevOps 导向的理念、工具和解决方案为开发人员和系统管理员提供了一个机会,可以简单地在他们的代码中“声明”要部署的基础设施,自动化工具接收该声明,然后参考预定义的“批准”蓝图,这些蓝图可以配置以确保符合安全性和合规性要求,(通常称为政策即代码)。
因此,就像我们能够为人类阅读创建政策一样,我们也能够将这些政策定义为机器可读格式,确保每次都以自动化、无错误的方式部署适当的配置。我们现在拥有一个可审计的、可测量的、预定义的“批准”基础设施和部署场景,并且这些场景会不断监控是否有未经授权的更改,任何绕过或不合规的行为都会被拆除,同时用符合规范的版本替换掉。考虑到你的风险,这是绝对完美的。此外,我们在过程中解决了许多完整性和可用性的问题,前提是工具可靠,解决方案为你的组织精心设计。
从保密性的角度来看,我们能够通过利用密钥管理自动化工具(如HashiCorp Vault)来自动创建和声明超级强大的密钥、令牌、密码和密钥,这些内容永远不会由个人处理。
通过密钥管理,你可以以编程方式动态地创建、撤销和轮换组织的密钥,响应根据政策定义或检测到的活动所设定的变化或需求。这样,你可以实现对静态或传输数据的高效加密,且对密钥没有任何知识,并能记录所有交互的审计日志。此外,密钥管理过程的自动化可以为授权提供高效的即时解决方案。
当然,IaC CCA 方法也存在一些缺点。像Docker Hub这样的社区仓库,包含了数十万已经被“弃置”或“腐烂”的容器配置文件。这些文件包含过时的定义、不良的安全实践,或者有意写入的后门和恶意软件,等待那些匆忙(或无法正确阅读和理解文件)的人将漏洞部署到他们的系统中。
记住,这并不是一个极端案例。Palo Alto Networks 的威胁情报团队曾发现,2019 年 65%的公开披露的云安全事件是由于组织员工的错误配置所致。当他们调查为何这个数字如此之高时,他们发现那些采用 DevOps 方法的公司内部有一种文化,强调创建新功能的速度,而非治理和安全。再加上对速度的推动,数十万个高风险模板在受信任供应商(如 Docker Hub)开放源代码、可搜索的仓库库中免费提供。有关此主题的进一步阅读可以在这里找到:www.paloaltonetworks.com/company/press/2020/palo-alto-networks-report-finds-poor-security-hygiene-leads-to-escalating-cloud-vulnerabilities。
考虑到这一点,我们可以达成共识:即使在事物的核心是高度自动化和加速的情况下,IaC 也无法消除实施和遵循变更控制和审批流程的必要性。我们必须记住,省略这些治理步骤会增加实施变更时引入未知风险的可能性。
一些适用于 IaC 部署管道的过程和程序的合适理念可能包括以下内容:
-
确保你为用户实施了最小权限原则。你不希望给他们“城堡的钥匙”或让他们有机会关闭流水线中的某些功能,从而绕过某些保护和检查。此外,应该没有任何方法让用户能够访问他们已部署代码的生产服务器。
-
在开发和部署过程的多个阶段,可以对定义基础设施的机器可读文本文件进行安全检查和扫描:
– DevOps 工程师或开发人员可以在他们编写代码的 IDE 中扫描文本文件,检查是否存在已知的错误配置和镜像。
– Git 仓库,如 GitHub、GitLab 或 Bitbucket,可以与安全扫描器集成,以检查文件中是否存在已知的配置错误或恶意项。像Snyk.io这样的解决方案可以参与 CI/CD 流程,确保正在使用的 IaC 定义是安全的。
– 像 Snyk 这样的工具能够扫描 IaC 配置文件,报告容器是否以特权模式/特权用户身份运行,或者是否未设置内存和 CPU 限制等漏洞。
– 这些扫描还可以检查基础设施是否运行在最新且安全的操作系统和应用版本上。
-
IaC 工具本身应该得到维护,我们需要确保我们正在运行最新、最安全的版本。
总结来说,使用 IaC,我们能够实施自动化方法,以减少配置错误和过时基础设施的风险,包括通过变更控制阶段发生的管道安全扫描。
通过自动化和适当的测试,你可以通过去除部署、更新和变更过程中的人为因素来减少错误的风险。一份好的脚本在每次执行时都能有效运行,并且需要员工的参与时间和精力更少。
这些自动化解决方案应该防止在检测到不可接受的风险水平时部署基础设施,你的工作是确定适合你组织的风险水平,并将其传达给相关人员。
此外,通过适当的监控和变更检测,我们可以确保系统在停机或类似事件后可预测地恢复。例如,如果只有一台服务器出现故障,我们可以创建规则自动部署该服务器的镜像来替代它,而不是等待员工注意到故障、诊断故障原因并修复问题。
关于停机的问题,我认为现在是时候转向讨论专注于可用性、灾难恢复和业务连续性了。
专注于可用性、灾难恢复和业务连续性
我们在谈论信息安全时需要诚实;它并不总是为了防御那些试图窃取我们组织珍贵知识产权的恶意黑客。实际上,在你的职业生涯中,你会面临的许多场合都涉及由于停电或软件更新失败等原因导致生产系统宕机的情况。
仅仅因为这些威胁不是敌对性质的,并不意味着它们不真实。事实上,情况可能恰恰相反:我们可能会比面对恶意攻击者更频繁地遭遇非敌对事件导致的停机。因此,我们需要确保拥有有效的变更控制政策,并严格遵循这些政策,我们还需要定义和演练灾难恢复和业务连续性流程,以确保最大限度地减少停机时间。
定义、实施和测试灾难恢复流程
灾难恢复是建立适当文档、规划和实践的过程,确保我们能够从自然灾害或人为灾难中恢复,并恢复关键的业务功能。它与业务连续性不同,业务连续性专注于确保所有关键的业务功能在任何破坏性事件或灾难发生时仍然保持在线并正常运作,而灾难恢复则是关于恢复。
例如,正如我在前面的章节中所讨论的,您的组织可能面临自然灾害,如洪水、地震和龙卷风。在我写这本书时,全球范围内正在发生大流行和战争活动。您可能会面临危险废物事件、爆炸,甚至是导致您的业务下线或人员不得不离开常规工作空间的网络攻击。
对于所有这些灾难,我们面临着潜在的损失。2015 年,IT 灾难恢复准备(DRP)委员会报告称,小型企业在每小时停机的情况下可能面临最高 8,000 美元的损失。同一报告中,中型企业每小时可能面临最高 74,000 美元的损失,而大型企业在灾难发生时每小时的损失可能高达 70 万美元。更多阅读内容可以在这里找到:www.researchgate.net/publication/343063858_PLANNING_FOR_DISASTER_RECOVERY_CAN_LEAD_TO_AVOIDING_DISASTER。
为了准备适当的灾难恢复计划,我们需要一些文档,这些文档看起来非常熟悉,因为我们在本书中反复提到了相同的内容:
-
清晰、直白的操作手册,任何人都可以在没有干扰的情况下跟随。这意味着清晰的标签和确保可用性(即使在停机或外部场景下)。
-
政策文件,清楚地说明您组织的角色和职责,以及从业务角度的需求,这些可能包括来自监管机构的合规要求或服务级别协议(SLA)。
一旦这些文档创建完成,优先级第一的任务是审查这些计划——不仅要进行桌面演练,还要进行实际的场景演练,进行实际的疏散以及基础设施和系统恢复操作,以发现从理论到现实的任何逻辑或技术上的漏洞。如果发现任何漏洞,必须进行补救计划并实施,然后重新创建测试场景,以验证更改的有效性。
当然,这一切都围绕风险展开。你专注于最关键的资产和系统,并根据哪些对业务运营至关重要来优先恢复活动。
与灾难恢复密切相关,以至于我不知道应该先谈哪个,我想简要谈谈业务连续性,尽管我在前面的章节中已经提到过它。
管理业务连续性设计、规划和测试
与灾难恢复紧密相关的功能是业务连续性。业务连续性专注于确保所有关键的业务功能在受到干扰事件或灾难的情况下仍能保持在线并正常运行。从某种意义上说,灾难恢复可以看作是业务连续性的一个子部分。通过建立所有必要的文档、规划、培训和测试,我们能够确保在面对困境或发生干扰事件时,我们的组织具备韧性。
对于灾难恢复和业务连续性来说,值得考虑的是关于热备站、温备站和冷备站的相关理念。
热备站指的是作为公司生产系统的可用且完全冗余的镜像的活跃基础设施,与原始基础设施解耦,以减少两者同时被摧毁的可能性。如果你有一个热备站准备好,那么只需要将操作转移过去。这是最昂贵的选项,但也是在发生干扰时最能够迅速投入使用的选项。
温备站是与生产系统同步的版本,能够随时部署,尽管在提供过程中会有一些延迟。温备站的优点在于其准备成本远低于热备站。
冷备站可用于非关键的业务操作,或当组织面临的风险水平不足以要求热备站或温备站,或没有预算来维持这两者时。冷备站需要从头开始进行配置,但仍然能够在故障或灾难发生后提供迅速恢复的机会。
实施和管理物理安全
一如既往,我想简要提到,作为信息安全专业人员,您应该将物理安全纳入自己的责任范围。从本书开始以来,我们已经讨论了组织在物理领域面临的风险,从因恶劣天气或电力中断导致的可用性损失,到恶意攻击者突破外围防线并获得机密信息。
对于各种物理安全事件,必须定义、研讨和实践相关的计划和程序,以确保您的团队能够做出适当的反应。文档必须存放在任何可能承担责任的人可以轻松访问的位置,且指令必须简明清晰,因为高度紧张的情况下可能导致误解和混淆。
由于我们在本书中已讨论过物理安全的各个方面,我将简要总结本节内容并进入本节的总结部分。
在本节中,我们讨论了通过定义、实施和测试灾难恢复流程,以及管理业务连续性设计、规划和测试,来提高系统可用性的方法。现在我们已经讨论了可用性问题,我将继续讲解如何管理升级、打补丁和应用安全控制。
管理升级、打补丁和应用安全控制
您的系统需要不断更新和打补丁。在前面的一节中,我们讨论了 IaC 如何帮助我们自动化这些过程,这非常有益,但并不总是可行的。
有时,我们需要采取实践操作的方式来配置、审计、更新和撤销系统,例如,当我们过渡到更新的技术或在第三方进行渗透测试时得到了相关发现。
此外,在第六章《设计和管理安全测试流程》中,我们讨论了网页应用程序漏洞扫描器、网络漏洞扫描器、SAST/DAST、依赖性扫描以及类似的自动化扫描,这些可以提供需要采取的行动和必须执行的升级内容。
问题是,如何确保 IT 团队理解组织面临的风险,并执行需要实施的变更列表,以确保更加安全的环境?
教育
作为组织的信息安全专家,我们有责任确保相关人员了解并掌握他们可以采取行动应对的风险。这可能包括安排安全培训,但也可能意味着定期安排与 IT 团队的会议,可以是每周、每两周或每月一次,会议中你将展示特定风险或陷阱的信息,或者讨论组织面临的整体风险态势。花时间解释并帮助他们理解这些问题为何重要。这是你知识体系中的一个关键部分,否则你只会成为办公室里那个让人浪费时间、没有实质性贡献且不让同事们在公司笔记本电脑上插入 USB 驱动器的脾气暴躁的人。
此外,这些会议有助于你更好地理解资产管理。你可以参与对话,从中获得关于为什么某个变更可能在另一个变更之前实施的有用信息。你可以从管理日常运营的团队那里获得丰富的信息,而这种对话在持续改进的过程中极具价值。这不仅是积极主动管理你数字资产健康的有效方法,也是大多数标准和义务要求的内容,你的组织将受到这些要求的约束。
这种知识共享和开放性可能是决定变更是否成功的关键,或者它可能导致失败,从而引发安全漏洞或停机。基于此,让我们来看看实施变更的最佳实践。
变更控制
正如我们之前提到的,遵循已定义的治理结构和变更控制流程至关重要,这有助于减少停机时间,并提升你组织的员工诊断故障或错误的能力。
我们可以在这个话题上深入讨论成千上万的页面,但我认为更相关的是聚焦于 IT 领域的安全特定内容,并让你进一步研究作为更广泛 IT 或组织控制的变更控制流程。当我们从信息安全的角度看待变更控制时,我们的目标是避免错误配置,最大化正常运行时间和可用性,并记录所有变更及相关信息。
在进行补丁、升级或应用安全控制时,变更控制流程中有价值的步骤包括以下内容:
-
在文档中识别并描述所需的变更
-
从商业角度证明变更的必要性以及为何需要进行变更
-
评估变更可能对组织造成的影响,并记录减轻负面影响的方式
-
描述在失败时的回退计划
-
记录任何需要批准的内容并保存相关批准记录
-
与员工、合作伙伴、客户或类似方进行沟通的规划
-
有效沟通计划中的变更,包括时间窗口和任何预期的停机时间
-
变更的实施和评估
一个出色的变更控制过程不需要慢或限制性强。关键在于确保我们有一个计划,以减少停机、配置错误或类似的信息安全事故的可能性。通过确保我们有适当的文档和规划,我们也在确保拥有所有必要的资源。
大型项目将从定义明确的变更控制过程中受益,例如安全改进计划,我将在此简要介绍。
安全改进计划
除了在差距分析或第三方/内部渗透测试后的持续改进努力外,可能会揭示出你们的信息安全计划中某些方面缺乏在风险管理方面所需的成熟度或有效性。安全改进计划是一个定义明确的信息安全改进项目,在一段时间内进行排定、实施并测试其有效性,朝着成为一个更加安全、运营更加有韧性的组织迈进。
安全改进计划可以涵盖本书中所讨论的所有主题以及更多内容,它是一个全组织范围的努力,旨在实施和加强控制措施并降低风险。
安全改进计划的理念在于,我们不仅仅是把一些基于安全的任务“撒入”我们每天、每周和每月关注的任务中。这是一个主动的决定,降低新特性的优先级,而是专注于提高保护水平和风险缓解。当然,像这样的决定需要高层管理的支持,这将需要一个明确的计划,其中包括时间、成本、风险和回报的估算。
在规划和估算这一点时请花些时间,因为这往往是一个领导层难以做出的决定。然而,一旦你获得了支持,你将能够向团队呈现计划,这将帮助你在每个步骤中推进安全改进计划,且让团队知道这一指令是“来自高层”是一种非常有效的方法,可以优先处理这些任务并获得一线员工的支持。
既然我们简要讨论了资源配置、专注于可用性和业务连续性、以及管理升级、补丁和应用安全控制的内容,我认为我们应该进入下一部分,讨论如何调查信息安全事件并响应信息安全事故。
调查事件与响应事故
我相信大家都会同意,当我说“没有准备就是在准备失败”时,尤其是在事件响应和调查方面。如果没有足够的响应计划、操作手册和文档,当我们面临数据泄露、停机或其他信息安全事件时,我们注定会无所适从,缺乏有效的方向。
我们可以有出色的软件解决方案来帮助识别我们环境中的恶意和高风险活动,但如果没有足够的应对计划来决定响应什么以及如何响应,那这一切都是徒劳的。
我们应该通过定义什么构成响应的启动来开始制定我们的事件响应计划。哪些类型的信息安全事件会导致贵组织的成员进行调查或响应?
并非所有信息安全事故都是信息安全漏洞,但所有信息安全漏洞都是信息安全事故和信息安全事件。让我引用一些来自 ISO 27001 的定义:
-
信息安全事件是指在一个环境或系统内,任何表明安全政策被违反、控制措施失效或出现未预测到的可能影响安全的情况。
-
信息安全事故是指一项或多项信息安全事件,其中信息安全或业务操作受到损害。
-
信息安全不合规是指未能履行政策、标准或法规中的要求。
所以,信息安全事件即使是短暂的,也有可能影响风险。信息安全事件是指我们已知对运营或安全产生负面影响的情况,如停机或确认的安全漏洞,信息安全不合规则是发现控制措施未正确实施或政策在实践中被忽视。
让我举个例子,说明信息安全事件是如何引发信息安全事故的:
-
事件:贵组织的一名用户联系说他们无法打开任何文件,且屏幕上显示有警告信息。
-
事故:经过调查后,你的团队发现该用户的笔记本电脑感染了勒索病毒。因此,启动了勒索病毒的事件响应手册,并启用了相关团队进行响应。
-
不合规:经过调查和修复后,事件响应团队发现员工打开了来自未知方的电子邮件附件,并且由于 IT 团队的疏忽,某些计算机上未禁用过时的 SMB 服务。
-
行动:已优先为员工提供钓鱼攻击和信息安全培训,IT 部门已将实施工作站安全配置(包括禁用过时的 SMB 版本)列入路线图项目。
如你所见,如果我们使用这些事件和事故的定义,并考虑到我们的风险,我们就能够为调查特定类型的事件和响应事故制定统一且有效的程序。做到这一点就是定义你的事件响应计划,接下来我将进一步探讨。
定义你的事件响应计划
为了理解工作流程和需求,制定适合你组织的事件响应计划是至关重要的。例如,如果你没有为你的组织的安全信息与事件管理(SIEM)解决方案生成的警报制定可行的响应,那么你实际上就是在浪费这项工具的投资,无法从中获得价值。
我想借此机会讨论一些在开始安全监控活动之前需要回答的关键问题。
我们希望回答的一些问题可能包括以下内容:
-
与信息安全事件相关的角色有哪些?
一些角色示例可能包括首席执行官(CEO)、首席信息安全官(CISO)、首席技术官(CTO)、董事总经理(MD)、系统管理员(SysAdmin)、人力资源经理等。
-
每个角色在每种类型的事件中的职责是什么?
一些成员可能需要与客户沟通,其他成员可能需要与执法机构、客户或业务利益相关者沟通。可能会有负责调查事件的角色;也可能会有负责恢复流程的角色。将角色与特定的技能相匹配是一个有益的解决方案,将这些角色与特定的职位名称和职位描述挂钩,则能够使个人在进入新角色时意识到自己的职责。
-
如何对安全事件进行优先级排序?
优先级应该基于风险,但你需要以一种便于任何可能成为“首位响应者”的人遵循的方式正式定义这些优先级。教育员工如何应对安全事件,以及文档可能存放的位置,是事件响应的一部分,我们在其他章节中曾提到过。
-
记录安全事件的方法是什么?
我们如何从发现到关闭记录安全事件,这是事件响应的另一个方面,我们需要有效地定义并培训员工。
-
如何通知事件响应团队的适当成员有关事件的信息?
一些示例可能包括电子邮件、电话、短信或 WhatsApp。
当我们定义一个流程时,我们需要考虑以下步骤的指导:
-
调查一个事件,包括需要观察和记录哪些信息
-
确认事件,包括沟通和后续适当响应的步骤
-
响应事件,包括隔离或遏制威胁并减少对组织的损害
-
恢复操作,确保事件的影响降到最低。
-
调查和报告,可能使用取证能力,并采取措施保护免受罪犯侵害或采取法律行动(如适用)
如果我们想要一套简明的指南来应对信息安全事件,我们可能会看到由各政府机构提供的以下几条指南:
-
英国国家网络安全中心(NCSC)的中小型企业指南:响应与恢复(
www.ncsc.gov.uk/collection/small-business-guidance--response-and-recovery) -
欧洲网络与信息安全局的事件管理良好实践指南(
www.enisa.europa.eu/publications/good-practice-guide-for-incident-management) -
美国国家标准与技术研究院的800-61 Rev. 2(
csrc.nist.gov/publications/detail/sp/800-61/rev-2/final)
您还可以寻求提供事件响应服务的信息安全咨询公司帮助。通常情况下,您需要提前支付费用,以便这些组织在发生事件时能够随时响应,并且每次事件所消耗的时间将从您的“余额”中扣除。
此外,值得注意的是,根据您所在国家/地区的不同,政府的各个部门提供的支持是不同的。
其他组织可能更倾向于自己进行调查和应对,而无需外部帮助。接下来让我们看看关于执行安全调查的几个要点。
执行安全调查
我将在本节中讨论如何管理和进行事件的安全调查,以及如何报告事件。通过使用一致的、结构化的方法,我们可以确保在大多数情况下采取系统且有效的方式。
首先,让我们提醒自己,并非所有安全事件都足够重大,值得进行调查。记录单个事件或多次事件的组合是很重要的,但我们不一定需要将每个记录的事件上报并让更广泛的组织介入或联系执法部门。有关应该报告哪些内容的指导可以在当地法规或来自警方、国防部、网络安全部门(如英国的 NCSC)以及其他类似机构提供的资源中找到。
作为一名信息安全专业人员,您的责任包括以下内容:
-
确定什么构成轻微事件和重大事件。
-
确定对轻微事件和重大事件的响应。
-
确保遵守所有国家或地区的法律法规,包括确保事件报告给相关执法部门。
一些重大事件的例子可能包括以下内容:
-
诸如入室盗窃或损坏组织财产等犯罪行为
-
洪水、风暴以及其他天气灾害导致的安全或运营受损
-
未经授权访问被分类为机密或受保护的信息
通常,一个重大事件需要联系保险提供商、执法机构、政府机构、客户和其他团体。为这些情况定义并保持一套程序并确保其易于访问是非常重要的,通常这些内容会被记录在你的应急响应和灾难响应的操作手册和政策中。
随着流程的推进,定义与安全调查相关的角色也非常重要。以下是一些角色及其职责的示例:
-
CEO 和 C-suite 高层管理人员,最终负责响应安全事件。通常这包括确保为员工和承包商提供足够的流程来报告和响应此类事件,并确保有关于过去表现和要求的记录。这通常通过任命适当的员工来专注于这些工作。
-
CISO,由 C-suite 任命负责处理前述工作的人员,负责以下事项:
– 处理与信息安全事件相关的流程
– 管理与安全事件相关的信息,包括来自内部调查和执法机构调查的结果
– 向 C-suite 和高级管理团队报告该信息
-
高级管理 团队成员将在事件响应过程中发挥作用,并会利用其团队在发生安全事件时执行相关职责。这可能包括法务负责人准备与诉讼相关的信息、人力资源负责人回应内部风险、传播负责人准备公众声明等。他们通常也会负责与其部门相关的报告领域,并定期向 CISO 汇报这些信息。
-
经理 更接近业务活动的运营层面,确保安全事件得到适当报告,并确保员工在发生需要响应的安全事件时,做好应对其职责的准备。
-
员工 是最有可能注意到信息安全事件或事故的群体。他们应该理解自己的职责以及在发现安全事件时可用的流程。这可以通过教育和培训来实现。
我建议你阅读国际非营利组织 CREST 发布的一份文档。这是一个关于事件响应流程的指导,名为 网络安全事件响应指南 (www.crest-approved.org/wp-content/uploads/2014/11/CSIR-Procurement-Guide.pdf)。
在链接的 PDF 指南中,你将找到以下内容的指导:
-
理解信息安全事件,包括以下内容:
– 如何定义一个事件
– 各种事件之间的对比
– 我们从攻击中预期的各个阶段
-
为信息安全事件做准备,包括在应急响应过程中可能遇到的各种挑战、应对方式、如何利用专家进行响应以及如何建立内部响应能力。此外,文档讨论了为你的组织做好准备的五个步骤:
– 对你的组织进行关键性评估
– 进行威胁分析
– 考虑对组织的影响,包括所需的人力、流程和技术
– 创建一个安全的环境,包括实施基本的控制措施,以防止最常见的事件发生
– 审查你的防护姿态并测试应急响应准备情况
-
对信息安全事件的响应,包括以下内容:
– 识别事件
– 确定目标
– 采取行动来遏制事件
– 恢复系统
-
下面是信息安全事件相关内容,包括以下方面:
– 进一步调查事件
– 向利益相关者报告事件
– 进行事件后的调查复盘
– 传达发现并基于发现进一步扩展
– 根据调查结果更新信息和控制措施
– 执行分析以发现趋势
-
最后,选择供应商来帮助处理信息安全事件。
这份文档将在未来成为你和你组织的宝贵资源,我希望你能采纳我的建议并阅读它。
现在我们已经讨论了事件调查和应对事件,我想深入讲解如何在你的组织中实施和利用侦测控制。
实施和利用侦测控制
如 IT 的性质所示,我们面临着不断变化的技术、威胁和应对技巧,包括勒索软件、分布式拒绝服务(DDoS)攻击和渗透攻击。我们需要了解我们网络中的情况,并实施自动化的控制措施,在攻击发生时进行通知,并积极防止这些威胁被利用。
为了实现这种可见性,我们需要一套围绕安全监控和安全调查的流程和结构,并且我们需要与负责保护我们网络的员工和第三方一起测试这些流程。
最终,高级管理层负责向内部安全运营中心(SOC)或第三方提供的SOC 即服务分配适当资源,并准备好事件响应团队。一旦高级管理层认识到信息安全的这些方面的重要性,实施和维护这些控制的责任可能会被委托给您,您的组织的信息安全专业人员。
在承担这一责任的同时,我们需要确保采取基于风险的策略,包括以下内容:
-
资产优先级排序
-
威胁建模
-
一个检测预算
-
一个响应预算
除此之外,我们需要为未来制定策略,并确定应采取哪些教育和改进措施,以确保组织即使在不断变化的情况下也能保持受保护状态。
就目前而言,信息安全专业人员在实现这些更高水平的可见性方面最有效的措施之一是通过安全监控。让我们讨论接下来可能涉及的内容。
使用安全监控来提高可见性
增加对数字资产运行情况的可见性的一种特别受欢迎的控制是实施日志记录并将这些日志聚合到 SIEM 系统中。
SIEM 不仅为专家提供了调查组织内资产日志的能力,而且最近还能利用 IPS/IDS 功能以及机器学习算法来丰富日志数据并积极防范威胁。这将 SIEM 从仅仅是侦查控制转变为既是预防性又是侦查性控制,为网络以前黑暗的角落提供上下文和可见性,以及减轻威胁行为者的有效性。
这可能包括识别以下模式和行为:
-
通过认证日志进行账户被篡改检测。
-
通过系统活动、防火墙、IDS/IPS 和CASB(云应用安全代理)日志进行恶意软件检测。
-
通过上下文参考,如比较 IDS/IPS 和漏洞数据库,进行入侵检测。
-
通过防火墙和 CASB 的出站连接日志进行恶意软件主机检测。
-
通过管理活动、用户活动和变更日志进行策略违规检测。
-
通过 Web 应用防火墙日志、Web 或云服务器日志,或应用程序和数据库服务器日志,检测对外部应用程序的攻击。
为了了解这些检测是否有效且可信的威胁,准备一些信息以使您的事件响应团队和SOC进行比较和参考将是重要的。
这些信息可能包括以下内容:
-
预期在您环境中出现的主机列表。这有助于团队成员或自动化系统检测您环境中不需要的主机或端点。
-
在特定时间段内的网络活动的基线日志,可能被视为“正常”。收集这些信息的问题在于回答“如果我们已经遭受入侵怎么办?”的问题。假设“已遭受入侵”的原则在零信任网络理念中变得流行,但许多组织并没有准备好像我们希望的那样迅速采取这些步骤。
-
每台主机上运行服务的列表作为基线。它可以建立在先前提到的主机列表上,并应包括预期在特定主机上进行通信的端口号和协议。
-
与 OSI 参考模型对齐的网络功能的交互式图表或可视化表示。如前所述,在这个过程中提供有污染的数据的风险,实际上证明了您网络中存在的威胁是“正常”的,因为它们被认为是“正常”的。
为了避免提供掩盖已存在于您资产中的威胁的垃圾信息的陷阱,您应该考虑一个项目,解决以下问题:
-
确定所有服务器上存在的所有过程和服务,并指定它们的功能
-
确定这些过程和服务产生和/或接收的通信类型
-
确定这些服务的关键性,以及它们的脆弱性和相关风险水平
-
确定是否有冗余服务(即,它们是不必要的)
-
确定是否有关键服务缺乏冗余(即,它们是关键的,但没有任何备用措施)
“啊,我们又来了!”,你现在可能在想。“又让我们做不可能的事情!”
对于一些人来说,尝试准确表示资产中的所有网络活动似乎是不可能的... 这就是为什么自动化系统开始提供解决方案,而不是要求团队放下日常任务,投入时间和精力去处理像之前看到的那样困难的任务。
相反,这些自动化系统能够“扫描”和“检测”在您资产中发现的活动类型,并丰富该数据与全球其他资产中发生的恶意活动周围的情报,然后利用该信息通知您的 SOC 并应对任何活动威胁。
这些解决方案可能是您组织的更可行的解决方案,并可以帮助您导航您的资产的复杂性,过滤掉所有噪音,突出只有最有价值的见解和基于风险的检测。这些见解甚至可以转化为基于关键点摘要的报告或“管理风格”的报告。
这些软件的一些示例可以包括以下内容:
-
Microsoft Azure Sentinel
-
Splunk Enterprise Security
-
IBM QRadar Security
-
LogRhythm NextGen SIEM 平台
-
AT&T 网络安全 AlienVault USM
-
Graylog
无论你为组织选择哪种 SIEM 和情报解决方案,都有一些最佳实践值得注意,并可以在将解决方案引入组织并创建最佳流程的早期阶段应用。
安全监控最佳实践
安全监控和 SIEM 工具 在检测和预防试图利用你组织资源的重大威胁方面非常有用,帮助确保你的组织遵守相关法规和要求,同时提供可衡量的洞察,指出安全态势可以改进的地方。
对于这类系统,我们希望从技术、法律或监管的角度收集尽可能多的信息,以确保最高水平的可见性和数据聚合,并从我们组织的活动中获取有意义的洞察。这可能包括网络设备和服务器日志、Active Directory/IAM 日志、漏洞扫描仪和配置管理工具指标等等。
此外,在聚合数据时,实施冗余非常重要,并且要像对待任何关键数据一样处理这些数据,其中的风险通过备份和恢复策略得到缓解,以确保符合你的信息安全政策。
在SIEM 和安全监控中也存在一些局限性。有时候,收集某些信息是不可行的,或者网络和计算吞吐量无法处理你组织中的数据量。做出决定之前,了解你期望系统处理的数据量非常重要,这对于选择合适的解决方案和供应商至关重要。
我想介绍一些在深入进行安全监控之前需要采取的特别重要的步骤,这些步骤可以帮助你和你的组织避免常见的错误和失误。
建立需求并定义工作流
让我问你一个问题:如果你不知道从 SIEM 中需要什么,怎么能评估可用解决方案的功能呢?
首先,像做任何决定一样,在选择解决方案之前,以下几个步骤非常重要:
-
确定你的需求。
-
确定你的时间线目标。
-
定义理想的工作流,并根据你和你组织的需求进行规划。
有时候,供应商会尝试突出一些对你没有价值的功能,这些功能的存在只是为了让那些没有准备好的人眼花缭乱。另一方面,有时候,供应商会为你提供一个更好的解决方案,它能够解决更多你未曾预料到的问题,或者以巧妙的方式解决你的问题,这是一个很好的情况。
在我们制定需求时,不妨再次考虑KISS 原理(保持简单)。定义一个合理的范围来试点你的解决方案。在实施 SIEM 的第一天,你不需要一次性覆盖所有需求,系统可以逐步推出,允许进行故障排除和已定义流程的测试。通过这样做,你不仅提供了概念验证,减少了边缘案例的可能性,还能向关键决策者展示 SIEM 系统的好处。
鉴于此,确保始终牢记你的最终目标,确保解决方案能够扩展到你希望覆盖的数据量级。这可能以每秒事件数(EPS)来衡量,或者可能是每日千兆字节(GB/day)。
在考虑需求、目标和工作流程时,你还需要考虑合规性和法规要求。SIEM能够帮助向监管机构和审计员展示其他安全控制的有效性。在之前的章节中,我们讨论了制定法规和标准清单,以及你的组织必须遵守的每项法规和标准的具体要求,所以你应该已经准备好这些了,对吧?没错吧?!
有了这份清单,你已经准备好在演示和展示过程中向供应商提及你的合规性要求,确保你能收集、保留和删除为了保持合规所需的信息。它还可以帮助估算为存储保留所需的存储量,帮助简化定价讨论。
定义具体规则并确保其有效性
在确定你的需求和定义SIEM与事件响应流程之后,你可以定义对组织有用的数据类型及其可能的指示意义。许多解决方案有各种“内建”的指标,例如以下内容:
-
授权失败的尝试
-
授权成功
-
用户权限变更
-
应用服务器错误
-
应用服务器性能问题
-
管理员活动
此外,定义你不想存储或执行 SIEM 活动的信息,或者可能希望限制某些活动类型也是非常重要的,例如以下内容:
-
个人身份信息(PII)
-
违法收集的信息
-
信用卡和银行信息
-
密码
-
加密密钥
从这些定义以及从这些定义中制定的规则来看,定期测试解决方案的有效性非常重要,以确保预期的结果确实发生。这包括精确数据匹配或近似匹配,或需要通过的阈值(例如,某事件需要在 1 分钟内发生超过三次,才会触发警报),等等。这还包括解决方案生成的通信和通知,以及是否如预期一样通知了相关人员。
我相当确定,在为事件响应和安全监控制定需求和计划的过程中,你会发现一些你曾认为可行的理论并不奏效。这是你开始采取下一个最佳实践的机会,那就是…你猜对了,持续改进你的政策和配置。
持续改进你的 SIEM 配置和事件响应策略
信息技术领域正在以前所未有的速度变化,且这一速度正在不断加快。这意味着解决方案会变得过时,曾经被认为是高质量的解决方案或资产的信息要么变得难以使用,要么变得毫无用处,同时,新的威胁会出现,利用或规避曾经被视为“防弹”的配置。
因此,我们需要在日历中设定一个定期的日期,专注于完善 SIEM 配置和事件响应策略(当然也包括其他方面,但我们现在只讨论 SIEM 和事件响应)。我们不能让它停滞不前,即使我们正在使用一个软件即服务(SaaS)解决方案,且该解决方案会自动从供应商处更新,我们仍然需要确保系统中反映的是当前我们环境的实际状况。
现在我们已经结束了关于安全监控的这一部分内容,我想以本章的总结来作结。
总结
那么,现在就结束了第七章,安全运营管理。我相信我们已经涵盖了信息安全专业人员处理安全运营所需的高层次要求。正如本书的每一章节一样,我们涵盖了许多话题,但每个话题都只是非常简略地提及。任何本章的内容,甚至是其中某一段,都是可以专门写成整本书的。我希望这能激发大家未来深入了解每个领域的兴趣!
在本章中,我们涵盖了信息安全运营团队日常需求的各个重要方面。
首先,我们探讨了资产配置和维护的有效策略,包括所需的政策和配置管理步骤,并且简单介绍了基础设施即代码(IaC)这一概念,以简化和自动化这些过程。
接着,我们关注了可用性、灾难恢复和业务连续性活动,包括定义、实施和测试灾难恢复与业务连续性计划的流程。
从这里,我们进一步探讨了在组织中管理升级、打补丁和应用安全控制的相关话题,其中包括关于教育要求、变更控制流程以及安全改进项目的信息。
然后,我们深入探讨了事件调查和应急响应,包括定义事件响应计划和进行安全调查。
然后,为了结束本章,我们探讨了实施和利用侦探控制措施,包括如何利用监控来提高对你系统内部的可见性,利用增加的日志记录级别,将这些日志聚合到 SIEM 中,应用自动化逻辑和机器学习洞察分析数据,并让 SOC 成员审核这些数据。
最后,我们讨论了安全监控的最佳实践,包括建立需求并定义工作流程,定义具体的规则并确保其有效性,以及持续改进你的 SIEM 配置。
现在,接下来我们要进入最后一章,第八章,提高软件安全性,这是我个人最喜欢的话题。
第八章:提高软件安全性
软件帮助全球各地的组织将生产力提升到前所未有的效率水平,帮助自动化以前需要人工完成的琐事。通过查看组织的软件资产(并在此过程中更新风险登记册),你会越来越意识到,几乎每一个商业流程都依赖于至少一个软件解决方案,而软件的韧性、安全性和可用性越高,组织获得的收益就越大。
你的一些软件可能是内部开发的,其他软件则是从第三方购买或许可的。这些系统通常存在巨大的攻击面,拥有许多易被利用的活动组件,且由于它们处理机密和敏感信息并存储业务关键数据,未经授权访问(或摧毁)这些系统可能导致关键数据的永久丢失,或者导致知识产权、公司机密和客户数据的机密性或完整性丧失。此外,这些安全漏洞可能导致监管机构的巨额罚款,雪上加霜。
可怕的事情是,即使我刚刚列出了所有关心的理由,各种软件系统的采购、开发和使用通常都没有任何以安全为重点的监督。这正是为什么理解并执行改进的软件安全至关重要,以确保你的组织能够减轻使用软件带来的风险。
在这一章中,我将深入探讨一些能够帮助你确保组织中软件安全标准更高的话题。包括以下几个主题:
-
探索软件安全范式
-
理解安全开发生命周期
-
利用 OWASP 十大主动控制
-
评估软件安全性
总的来说,我们希望从这一章中学到的是,如何为软件建立需求,无论它是由第三方开发还是由内部开发团队开发。我将讨论我们如何理解由供应商开发的软件系统的风险特征,如何减少在组织内部开发活动中出现漏洞和错误的可能性,以及如何针对安全风险采取措施,重点关注 CIA 三元组。
话不多说,让我们继续进入这一章。
探索软件安全范式
我想让你回想一下 2014 年 4 月,这在信息安全的历史中是一个重要时刻;全世界都被CVE-2014-0160漏洞的披露所震惊,这个漏洞被冠以Heartbleed的名字。现在,当我说“全世界”时,我是认真的。Heartbleed 就像是软件安全大片中的大白鲨,它甚至有了自己的网站(heartbleed.com),甚至还有自己的 logo:

图 8.1 – Heartbleed 漏洞的标志
披露的信息中提到,OpenSSL 加密库存在一个与缓冲区过度读取相关的漏洞,这使得恶意行为者能够访问加密密钥和登录凭证,以及其他各种机密信息。听起来很糟糕,但情况更糟:OpenSSL 版本的 TLS 协议中也使用了 OpenSSL 加密库,这种协议广泛用于全球范围内保护数据传输的安全,几乎无处不在。简单来说:全球排名前 100 万的TLS/HTTPS 保护网站中超过一半受到了影响,并且容易受到攻击。
尽管在披露的同一天发布了 Heartbleed 漏洞的修复程序,但这并没有阻止设备(如防火墙、安卓手机和其他受信硬件)、软件以及网站在补丁被应用并且更新与最新版本对齐之前,继续处于脆弱状态。
此外,让我们明确一点:这个漏洞自 2011 年起就在代码中存在;我们知道这一点,因为任何愿意查看和阅读源代码的人都能看到它。这是因为 OpenSSL 是一个开源开发的程序。开源意味着软件的源代码可以自由阅读、修改和重新发布。开源软件运动的一个被认为的优势是透明的软件能够防止通过模糊化安全问题以及源代码中的其他漏洞,因为任何愿意查看的人都会发现这些问题。不幸的是,在 OpenSSL 的加密库的案例中,似乎要么没有人注意到,要么没有人愿意大声呼喊这个漏洞,直到 3 年后。
这听起来有些奇怪,对吧?错了。直到最近,这一直是默认情况。安全性一直是任何寻求开发新功能和推出新产品的组织事后的考虑,但随着时间的推移,随着 Heartbleed 等重磅披露事件进入了普通商业主和 IT 专业人士的词汇中,我们看到了一个向更加重视安全的范式转变。
那么,我们如何确保在组织中避免实施存在漏洞的软件呢?无论是供应商创建的生产力套件,还是开源的加密库,或是为员工开发的内部工具,你不可能发现所有问题,因此重要的是要管理好自己的预期。就像信息安全中的任何问题一样,这关乎风险管理,并且需要制定适当的政策和程序,确保采取了必要的步骤,并与相关资产的价值相一致。
首先,让我们来看一个可以应用于不仅仅是信息安全的概念,而是任何我们购买东西时都能用到的原则。
买者自慎
你是否听过让买家警惕这个术语?我敢打赌你听过拉丁文版本,caveat emptor,对吧?怎样,我们不妨借此机会做个快速的拉丁术语学习,来探讨一下合同法中常见的拉丁术语:
买者自慎,因为他不应对所购买的财产的性质一无所知
它的大致英文翻译如下:
让买家警惕,因为他不应对他从其他方购买的财产的性质一无所知。
说实话,我很惊讶它能够传播得这么广。通常情况下,如果你在背诵格言时需要停顿一下,它就不会长久存在。尽管它相当冗长,这个想法经得起时间的考验,在采购新软件时必须考虑到这一点。
由买方负责对将要在其组织中使用的软件系统进行尽职调查。你有责任确保你的组织已经适当地进行了尽职调查,并将相关信息保存下来,以备将来需要向监管机构或审计员证明已采取适当的预防措施并在过程中履行了必要的谨慎时使用。
"但是怎么做?"你问。"我怎么能确保呢?"
法律文档
"哦,太好了,"你在阅读到这一节标题后说,"他接下来会谈论文件工作。"嗯,是的,遗憾的是,我确实会。
事实是,你不能百分百确定你购买的软件是否在安全性上得到了开发。然而,你可以尝试在与供应商的合同协议中加入条款,确保他们理解你的要求,并负责确保他们开发的解决方案是在安全的前提下构建的。
定义责任的合同是风险缓解的一种形式。我的意思是,在发生泄露事件,导致你组织的机密信息或与个人相关的敏感信息被泄露时,你是否能够根据你组织面临的罚款和声誉损害的损失程度,要求供应商进行赔偿?
是否接受这些条款取决于多种因素,包括条款的性质、供应商的规模、你组织的规模、你对他们的客户价值等。
有时候,你只需要实施其他类型的缓解措施,并接受供应商在发生泄露事件时不承担责任,无论是否是由于他们一方引入了后门或恶意软件。你有责任将这些协议文件化,并在进行风险评估时,尤其是软件实施前后,引用它们。
此外,本书中我们讨论的关于信息安全理念仍然适用。我们必须允许软件的最小权限访问,我们应该监控软件的活动以及它如何与其他资产互动,并且在软件的整个生命周期内持续审查和评估它的适用性和风险。
说到生命周期,我觉得我们应该讨论一下安全开发生命周期(SDLC)的概念,因为关于这个话题的知识既涉及第三方开发的软件,也涉及你们组织自行开发软件的工作。
理解安全开发生命周期
SDLC 的核心是通过一系列流程将安全性融入软件开发。当你向供应商询问他们的 SDC 时,你需要理解他们在确保他们出售的软件对你的组织足够安全时所采用的方法。
提供CISSP认证的同一公司,名为(ISC)²,还提供CSSLP,即认证安全软件生命周期专家,涵盖了八个领域,你需要了解这些领域才能通过考试:
-
安全软件概念
-
安全软件需求
-
安全软件架构与设计
-
安全软件实施
-
安全软件测试
-
安全软件生命周期管理
-
安全软件部署、运营与维护
-
安全软件供应链
显然,深入讨论这些主题会超出我在本章中 30 页的限制,如果我这么做,很多内容会重复我在本书之前提到的概念,包括数据类型的标记或实施最小权限原则、职务分离或深度防御等,但还是值得强调一些与 SDLC 独特相关的关键要点,激发你进一步探究的兴趣。
我们可以将软件开发生命周期(SDLC)大致分为五个阶段,每个阶段都有其子组:
-
确定业务和安全需求
-
设计安全软件
-
安全软件的测试计划
-
安全软件开发
-
测试软件
我们是否可以简要探讨一下这些要点,稍微详细地讨论一下这一过程?我们来讨论,但首先我想处理一个显而易见的问题:现在已经没有人以这种方式开发代码了。让我们来谈谈各种软件开发方法论,以及它们如何与 SDLC 协同工作。
与各种软件开发方法论的兼容性
随着时间的推移,开发软件的最常用方法已经从传统的阶段性、项目管理的“每年发布两次重大更新”的瀑布式方法转向了更快速的迭代方法,通常称为敏捷方法,在这种方法中,解决方案被拆分为小的周期,试图早期交付一个可工作的产品,并且不断改进和频繁更新。
此外,组织中的开发团队和 IT 运维团队可能存在分隔,或者可能采用更加集成的软件开发和部署方法,比如DevOps方法,例如:

图 8.2 – DevOps 生命周期图
无论你的组织使用哪种方法来开发软件(这些方法中有许多不同的风格),SDLC 过程仍然可以作为一种内建的方法来使用。在前面展示的 DevOps 生命周期图中,你会发现它与我之前提到的 SDLC 的五个步骤是对齐的,只要你确保在规划阶段定义了软件的业务和安全需求!
好的,让我们更仔细地看看 SDLC 的五个步骤,从定义业务和安全需求开始。
定义业务和安全要求
你看,为了创造出好的软件,需求必须在每次迭代的开始时就被明确界定。虽然这种情况很少发生,但话说回来,软件也很少是我们所认为的“好”软件。在这些需求定义中,除了使用场景和解决方案外,我们还需要确保定义软件的安全性和隐私要求,并且在开发过程中,软件必须针对这些安全性和隐私要求进行测试。
除此之外,我们还需要考虑滥用案例或恶意行为者可能滥用软件的方式,本质上是进行威胁建模,并考虑攻击面。根据滥用案例的发现,我们需要确保已采取适当的缓解措施(支出与风险水平相符),以防止或减少这些攻击成功的可能性,并找到方法减少如果攻击成功后的影响。
我将在《利用 OWASP 十大积极控制》部分中更详细地讨论我们如何做到这一点。
设计安全软件
有了滥用案例和需求后,我们希望设计软件架构,确保具备适当的控制措施(预防性、侦测性和响应性),并确保应用程序的整体结构及其与其他系统和人员的交互是从设计上就确保安全的。
安全软件的测试计划
与单元测试、集成测试、系统测试和验收测试一起,安全测试必须纳入软件开发生命周期(SDLC),通过各种方法,包括自动化和手动流程,发现安全漏洞。
在软件开发之前,我们希望规划并定义必须执行的测试,以确保软件开发过程考虑到这些测试。
ISO/IEC/IEEE 29119 标准适用于软件与系统工程 - 软件测试,这是一个包含五个不同部分的标准:
-
第一部分:概念和定义
-
第二部分:测试概念
-
第三部分:测试文档
-
第四部分:测试技术
-
第五部分:基于关键字的测试
对29119标准有很多反对意见,多个小组认为标准化测试没有必要。我认为在本章中,这不应该是你的关注点;是否采纳这些理念,取决于你的组织。最重要的是,标准的第三部分提供了你的测试计划文档模板示例,如果我们遵循 SDLC,那么依赖这些模板可能比花时间重新发明轮子更为合理。
来自 ISO/IEC/IEEE 29119:-3:2013(是的,我知道,这个名字很长)的模板涵盖了你可能希望使用的组织级、项目级和动态测试文档,包括以下内容:
-
组织测试过程文档模板:
-
测试政策
-
组织测试策略
-
-
测试管理过程文档模板:
-
测试计划(包括测试策略)
-
测试状态
-
测试完成
-
-
动态测试过程文档模板:
-
测试设计规范
-
测试用例规范
-
测试过程规范
-
测试数据要求
-
测试数据准备报告
-
测试环境要求
-
测试环境准备报告
-
实际结果
-
测试结果
-
测试执行日志
-
测试事件报告
-
这意味着你将拥有适当的模板集合,帮助你的产品团队和工程团队迅速且系统化地记录和满足软件所需的要求。如果这些过程和文档看起来会妨碍你进行实际的工程工作,那你可能是个软件工程师。
话虽如此,我非常清楚在这种情况下开发人员所提出的抱怨和顾虑,尤其是在我们开发进度加快,且更迅速地将变更集成到生产环境中的时候。如果你的组织正在使用这些原则,我不会建议你让团队被一堆文书工作拖慢进度。
作为信息安全专业人员,我们的工作是了解风险并将其降低到可接受的水平。这个过程的一部分是确保开发团队创建的软件适合其用途,并符合定义的要求,展示没有这些过程是多么困难的任务。
根据我提到的来自 ISO/IEC/IEEE 29119 的文档,我们的目标是做到以下几点:
-
分析软件,在此过程中我们指定用户、使用案例、使用场景以及解决方案所使用的资源。
-
设计测试策略,在此过程中我们定义测试的目标,并估算所需的资源和与测试阶段相关的成本。我们还定义了测试范围和不在范围内的内容。
-
定义测试标准,在此过程中我们创建一个流程,定义在失败的情况下何时停止测试,以及什么样的结果构成成功的测试完成。
-
定义测试环境,在此过程中我们指定将要进行测试的用户环境和业务环境。
-
定义进度表,包括截止日期、每项资源的估算,以及可能妨碍测试完成的任何阻碍或依赖项。
-
确定测试交付物,包括测试结果和报告、测试过程文档以及在软件满足测试要求时的发布说明。
所以,这并不是让我让你写战争与和平,如果我们遵循敏捷过程,每个小的改进都可以为之前列出的六个概念提供一个非常简短的定义,可能紧随用户故事之后。用户故事是一种结构化的方式,用来定义软件需求并传达给开发人员:
As a <insert role>, I want <insert requirement>, so I can <insert use-case>.
这涵盖了第一步的大部分内容,即分析软件,之后我们可以加入我们的测试目标、所需的测试资源、验收标准、测试环境和测试进度表。
如果发现错误,它们可以在同一个迭代或冲刺中迅速而轻松地解决。
那么,你可能如何测试软件,以确保考虑并避免安全漏洞呢?
我将详细讲解这个内容,但首先我想谈谈确保软件开发安全,这是软件开发生命周期(SDLC)的下一个阶段。
确保软件开发安全
在开发代码的过程中,我们希望确保开发人员遵循与安全代码相关的某些理念。我们可以创建培训和意识提升计划,并提供文档,指导他们如何确保遵循安全软件开发理念,包括但不限于以下内容:
-
输入和输出的安全处理,以防止注入漏洞和服务拒绝攻击,这些漏洞源于恶意或疏忽的用户输入
-
适当的错误处理,并确保在发生错误时用户不会被提供过多信息
-
资源管理和并发性,确保流程是可扩展的
-
隔离,确保通过沙箱、虚拟化、容器化及相关技术概念对进程进行隔离。
-
加密控制的选择与实施,确保正确实施适当的协议,同时考虑成本效益分析。
-
访问控制结构,包括确保信任区、最小权限和基于角色的访问控制(RBACs)得到考虑并适当应用。
为了避免重复,我们认为通过深入探讨可能实施的测试类型来检查软件中已知的安全漏洞,并解释如何避免或缓解这些漏洞,可能会更加有用。
测试软件
考虑到我们已经定义了适当的测试流程、相关的利益相关者、环境和验收标准,现在是时候执行这些计划了,既要进行自动化过程,也要进行手动过程,以确保对源代码、环境或软件使用所做的任何更改都能有效、效率高且安全。
这并不是说我们在软件开发完成后才进行所有这些测试。如果我们使用的是更快速的开发方法论,我们必须利用更多自动化系统,并为任何需要的手动测试过程创建快速通知,以确保在 SDLC 的测试阶段不会出现瓶颈。通过这种接近实时的软件测试方法,能够快速发现问题,并确保开发人员能够快速适应,快速失败,及时发现错误并在投入过多时间于错误的方法之前进行修复。通过这样做,我们帮助开发人员快速构建更安全的软件。
回顾我们如何定义测试计划和设计测试流程,一些我们希望在流程中实现的例子,以增加安全性并加速测试过程,包括以下内容:
-
架构分析,包括端到端流程和设计检查。
-
依赖检查,自动化检查导入的第三方软件依赖项中的漏洞。
-
自动化SAST,即静态应用程序安全测试,我们在前面章节中提到过。
-
自动化DAST,即动态应用程序安全测试,我们在前面章节中也提到过。
-
代码审查,一个开发人员阅读并批评另一个开发人员的代码。这有助于知识共享,同时也实施了双人原则,即两方需要共谋才能实现后门或恶意软件。这不是绝对安全的,但它是深度防御方法的一部分。
-
渗透测试,我们已经多次提到过,可以在重大变更时进行,也可以定期进行。
在这些过程中,至少我们需要检查确保已实施 OWASP Top 10 积极控制(owasp.org/www-project-proactive-controls/v3/en/0x04-introduction.html)。这意味着为自动扫描和手动代码审查建立文档化的程序,并且对开发人员进行相关步骤和控制的培训。这对 SDLC 的成功至关重要,因此不要忽视培训、意识、政策和程序!
我接下来将讨论 OWASP 的 Top 10 积极控制。
利用 OWASP Top 10 积极控制
让我简要介绍一下 OWASP Top 10 积极控制,用于提高软件安全性。每个控制项都有自己的章节。
定义安全要求
正如我们之前讨论过的,能够清晰表达和文档化软件解决方案所需满足的要求,对组织非常有益,原因包括节省成本和提高可用性,但另一个必须通过软件开发工作或购买/开源软件来满足的业务需求是有关信息安全的要求。
基于最佳实践和行业知识创建标准的安全要求,帮助开发人员和采购人员重用他们从先前迭代中获得的知识,因此强烈建议以统一且经得起时间考验的方式定义这些要求。
在OWASP Top 10 积极控制部分关于定义安全要求时,他们提到了OWASP ASVS,即应用程序安全验证标准,这是一个安全要求的集合,包含了验证这些要求是否已满足的各种标准。作为示例,它包括了用于各种信息安全职能的最佳实践类别,如访问控制、错误处理、身份验证等。这是一个不容忽视的优秀资源。
正如我们之前所讨论的,利用用户故事(如在敏捷软件开发过程中看到的)以及误用用户故事,可以帮助团队在这些职能中验证安全要求是否已满足。
作为示例,我们可以参考ASVS要求,您可以利用这些要求进行身份验证,例如验证是否没有使用默认密码,如此处所示:
验证应用程序框架或应用程序所使用的任何组件(如“admin/password”)中没有使用默认密码。
– ASVS 3.0.1,要求 2.19
将其转化为用户故事,使用我之前提到的公式:
As a <insert role>, I can <insert requirement>, so I can <insert use-case>.
我们来处理一下 ASVS 3.0.1,要求 2.19:
“作为用户,我可以输入我的用户名和密码,从而获得对应用程序的访问权限。”
或:
"作为一个用户,我可以输入最多 1023 个字符的长密码,这样我就可以使用强大且独特的密码。"
滥用用户故事是从恶意行为者的角度来描述的:
"作为一个恶意行为者,我希望能够输入发布的默认用户名和密码,这样我就能在未经授权的情况下访问系统。"
是否在用户故事中使用这些内容,由你决定,但要小心,确保开发人员理解这些内容,并且不要将滥用用户故事误读为需求!
利用安全框架和库
软件开发有大量在线资源可供利用,从学习各种编程语言的免费在线课程到用于 Web 应用框架的文档,资源繁多,数不胜数。这种文化已经扩展到软件开发中的安全领域,标准、框架、库以及其他高度文档化的资源对任何有兴趣学习的人开放。有时,只需将几个软件包导入到开发项目中,就能轻松应用这些资源。
尽管如此,仍然重要的是要记住一些关键理念,以确保利用第三方资源的风险是安全的:
-
使用有维护记录的可信来源。如果一个框架或资源没有得到积极更新和维护,那么它将面临挑战,并且容易出现漏洞。
-
确保我们在风险管理资产目录中记录所有第三方库和软件。这可能会很困难,但有像 Snyk (
snyk.io/) 这样的服务,可以自动化收集列表并为该列表应用风险评分。 -
确保在软件面临由于缺乏维护而导致的重大变更之前,及时应用更新。除了之前提到的 Snyk,OWASP 还提供了一个名为 OWASP Dependency-Check 的工具,可以检查第三方库列表中公开披露的漏洞。NPM 也有类似的服务,其他选项也在不断涌现。
-
确保开发人员始终遵循 最小权限原则。允许过多的访问会增加攻击面,从而可能增加风险。
你知道的,整个书中我们一直在强调的基础知识!
确保数据库访问安全
当软件与数据存储(如 SQL 数据库)进行交互时,可以遵循一些关键理念,以提高软件的安全性并将风险控制在可接受的水平。例如,我们不希望用户能够向查询中输入任何内容,而这些内容在没有经过解析、检查和清理之前就会被当作命令执行:

图 8.3 – XKCD #327 – 输入清理
理想情况下,我们甚至不允许用户自己输入查询,但这取决于使用场景。通过使用如查询参数化等保护措施,你可以创建安全查询,减少发生注入攻击的可能性,如 SQL 注入。
阅读更多关于查询参数化的内容,参考OWASP 查询参数化备忘单 (cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html)。
此外,你还需要确保数据库和用于运行数据库的计算平台配置正确,具有安全配置,最好利用我们在前面章节中提到的基线配置。
安全认证意味着通过多种方式保护认证过程。例如,确保认证通过安全通道进行,防止凭证泄露。存储在静态时的凭证必须通过深度防御来保护,以应对各种威胁,包括访问控制和静态加密,以防止机密性攻击,和冗余,以防止可用性攻击。
最后,尽管软件和数据库之间进行着双向通信,但确保通信通过安全通道进行是很重要的,利用传输加密,并防止用户从错误消息和日志中获取过多信息。
你可以通过阅读 OWASP 数据库安全备忘单 (cheatsheetseries.owasp.org/cheatsheets/Database_Security_Cheat_Sheet.html)进一步了解数据库安全。
编码和转义数据
另一种防止注入攻击的方法是使用 \",防止解释器关闭字符串,以降低因不良输入导致解释器或浏览器输出危险内容的风险。
编码输出数据有助于防御跨站脚本攻击(XSS),以及其他缺陷,如操作系统命令注入或某次有人使用表情符号时导致整个银行系统崩溃的事件(www.vice.com/en/article/gv5jgy/iphone-emoji-break-apps)。
编码和转义可以在接收和输出数据的各个阶段进行,任何时候用户输入或其他不受信任的数据被解释或动态输出到界面时,都应该考虑这些措施。
您可以阅读更多关于如何防止 XSS 攻击的信息,参考OWASP 跨站脚本预防备忘单 (cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html),以及如何防止注入攻击的信息,参考OWASP 注入预防备忘单 (cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html)。
验证所有输入
与上一点紧密相关的是验证所有输入的概念。我们希望确保所有输入在存储或与软件或系统的任何部分交互之前,都经过适当的验证并正确格式化。
这包括经典的语法检查,例如如果用户输入的是信用卡号码,我们需要确保它符合信用卡号码的格式。
这包括防止接受任何黑名单字符或术语,以及在输入仅能为某些特定项时设置白名单。例如,如果输入要求提供美国州的两个字母缩写,我们可以设置一个包含 50 个“批准”输入的白名单,并防止任何其他输入被接受。
这些检查应遵循深度防御的理念,并且不应依赖于用户遵循的理想路径,因为恶意行为者喜欢寻找绕过前端控制的方法。
利用各种安全库和框架中的验证功能可以简化此过程,但它们应始终经过测试,以确保在您的项目中适用。
将所有输入视为恶意输入是前进的方向,因此让我们达成一致,今后将这一点纳入我们所有的软件开发生命周期(SDLC)政策,好吗?有关输入验证的进一步阅读可以参考OWASP 输入验证备忘单 (cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)。
实施数字身份
我们需要确保我们的每个用户在与软件交互时都被赋予一个 ID,以便在他们的会话期间提供流畅的体验,同时也能为我们提供理解错误和跟踪滥用的能力。
NIST 发布了特别出版物,800-63B,数字身份指南——认证与生命周期管理 (pages.nist.gov/800-63-3/sp800-63b.html),在实施和利用数字身份的过程中值得参考。
在NIST 特别出版物 800-63B中,详细说明了各种控制措施及其正确实施方式。这包括针对不同“级别”应用程序的要求,具体取决于所包含的信息和执行的处理。
例如,一级应用程序被认为是低风险的,不包含任何私密数据或个人身份信息(PII)。因此,仅需要密码认证,建议检查常用密码,并建议未使用多因素认证(MFA)的用户设置至少 10 个字符的密码长度要求。强烈建议阅读该出版物以获取进一步的指导。
用户重置忘记的密码的过程应包括多因素认证(MFA)方法来证明他们的身份。实现这一点的典型方式是利用侧信道,如电子邮件,向与账户关联的电子邮件地址发送包含唯一链接的密码重置邮件。有关建议流程的更多信息可以参考OWASP 忘记密码备忘单(cheatsheetseries.owasp.org/cheatsheets/Forgot_Password_Cheat_Sheet.html)。
当我们谈论会话管理和 cookie 时,可以采取一些步骤来提高用户的安全性。例如,应设置 cookie 的过期时间。为 cookie 设置HttpOnly属性可防止该 cookie 在 JavaScript 代码中被引用和使用。任何传输都应通过 TLS 加密来保护,以防止中间人攻击窃取会话 ID,通过设置Secure属性来实现。
有关会话管理、网页认证和访问控制的进一步阅读可以参考OWASP 会话管理备忘单(cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html)。
强制实施访问控制
与前面提到的数字身份类似,访问控制和授权是关于向用户授予和撤销各种权限或特权。通过利用已知的模型,例如我们在本书中介绍过的 RBAC,通过提前建立强大的访问控制来防止权限膨胀等漏洞和缺陷,确保用户只访问他们所需要的内容,既不多也不少。
为了强制执行已实施的访问控制,所有请求必须通过访问控制检查,默认设置应为拒绝。因此,规则不应硬编码,而应基于当前与软件交互的用户的访问级别动态调整。同样,这是深度防御的一部分。
最后,确保通过日志记录跟踪与访问相关的所有事件,并将这些日志传输到安全监控资源中。我们稍后会详细讨论。
进一步阅读可参考OWASP 访问控制备忘单(cheatsheetseries.owasp.org/cheatsheets/Access_Control_Cheat_Sheet.html)。
随时保护数据
信息安全行业的基础是确保信息的安全。当我们在应用程序中传输或存储数据时,我们需要确保它得到充分的保护,免受威胁,并基于风险采取控制措施,同时考虑到我们在本书中讨论的最小特权、防御深度等方法。
在数据安全方面,它包括数据分类,我们对每一条数据应用敏感性级别标签,并根据规定、声誉风险承受度以及机密性、完整性和可用性风险承受度,将这些标签映射到您和您的组织所定义的适当控制要求。
在保护数据方面,一个简单有效的办法是对传输中的数据进行加密,通常使用 TLS。这可以防止中间人攻击和侧信道攻击,这些攻击可能发生在用户与前端应用服务器之间,或者前端应用服务器与后端之间的通信中。
对静态数据进行加密可以降低与机密性丧失相关的风险,但所需的复杂性和技术技能可能稍微增加潜在的误配置风险,从而导致可用性丧失。加密静态数据是一个重要步骤,但必须小心规划和实施才能有效。
利用加密库可能是一个不错的起点,无论我在本章开头提到的恐怖故事是否完全基于由于使用第三方加密库而导致的组织信息安全事件。
像凭证、证书、SQL 密码等秘密信息应该像保护应用程序的“皇冠珠宝”一样进行管理和保护。不要将它们以明文存储在数据库中,不要硬编码这些信息,并在用户离开组织时旋转或撤销与其相关的密钥。像HashiCorp Vault这样的秘密金库提供了这一过程的自动化简化,但需要具备一定的技术技能。
更多阅读资料请参见以下链接:
-
OWASP 传输层保护备忘单 (
cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html) -
OWASP 加密存储备忘单 (
cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html) -
OWASP 密码存储备忘单 (
cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
实施安全日志记录和监控
正如我们在前几章中谈到的安全监控一样,我不认为我需要深入探讨它如何帮助你的组织。最重要的一点是:更多的信息可以帮助你和你的同事更准确地检测到安全事件,并提高响应速度。
你可以增加你的组织开发的应用程序提供给监控解决方案的信息量,但请记住,PII(个人身份信息)或机密信息有时会包含在诊断和调试信息中,可能需要在传递到监控解决方案之前删除。此外,确保你的时间戳在各节点之间对齐,否则数据将不准确且难以使用。
为了防止日志伪造或注入攻击,你应该考虑我们在列表中的#4和#5中提到的编码原则和验证练习。另一种防止篡改的保护措施是为你的日志解决方案设置访问控制和授权原则。为了避免可用性的丧失,你的解决方案应该在数据集上采取某种形式的冗余,例如存储在多个位置和备份。
进一步了解如何使用安全日志记录和监控,可以参考OWASP 日志记录备忘单(cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html)。
处理所有错误和异常
确保你的应用程序具有弹性,能够处理错误和异常,这是确保 CIA 三原则(保密性、完整性和可用性)的一项重要属性。错误处理不当可能导致机密或敏感信息的泄露,应用程序稳定性的中断,甚至是你依赖的用于各种监控目的的重要数据的修改。
错误的错误信息可能会给恶意攻击者提供比可接受范围更多的信息。看看这个我认为应该是玩笑的注册页面,否则我已经失去所有希望:

图 8.4 – 有史以来最愚蠢的注册页面错误信息
我只能猜测,在看到那个错误信息后,用户决定使用hunter2作为密码。
在我们创建错误时,确保用户无法获得超出其需求的信息,但要提供足够的信息,让他们自己找到答案或联系支持人员求助。从内部来看,我们希望记录足够的信息,帮助支持团队、测试人员、法医调查人员和事件响应团队。请记住,如果软件开发团队成员与安全、测试和业务团队成员积极合作,将会提高软件的整体质量。
最后,必须创建好的测试,以便在用户发现之前捕捉这些异常。优秀的测试人员,加上一些自动化工具,用于静态和动态地发现错误,将有助于减少支持所需的开销,并减少应用程序丧失一个或多个 CIA 三原则的风险。
更多的阅读内容可以在OWASP 错误处理备忘单中找到(cheatsheetseries.owasp.org/cheatsheets/Error_Handling_Cheat_Sheet.html)。
如果你像我一样喜欢这个话题,我认为你可能会对进一步阅读感兴趣,因此我整理了一些框架和流程的链接供你调查。这些对于在 SDLC 中实现安全非常有用:
-
MS-SDL,微软安全开发生命周期:
www.microsoft.com/en-us/securityengineering/sdl -
NIST 800-160,工程可靠安全系统的多学科方法考虑因素:
csrc.nist.gov/publications/detail/sp/800-160/vol-1/final -
网络安全和基础设施安全局的CLASP,或综合轻量级应用安全流程:
us-cert.cisa.gov/bsi/articles/best-practices/requirements-engineering/introduction-to-the-clasp-process
好的,我们已经讨论过 SDLC 了,现在可以详细探讨它如何帮助我们评估软件。
评估软件安全
接下来,我想讨论我们可能采用的方法,以评估软件的安全性。在之前的章节中,我们探讨了定期测试软件和系统的重要性,包括渗透测试和漏洞扫描,以及对任何发现进行修复。我提倡实施配置管理系统,以帮助保持组织的资产最新,并使用监控解决方案来发现性能问题、滥用、错误或恶意活动。我还谈到了弹性和冗余,以及每小时组织失去系统访问权限可能造成的高昂费用。
既然我们已经讨论了这些,如果我们要更深入地探讨,我认为将这个话题分为两个部分是相关的,因为方法和方法论会有所不同,这取决于谁拥有软件,并考虑到云操作模型以及与使用软件即服务(SaaS)产品相关的共享责任。
一方面,我们有第三方供应商,他们开发并向公司销售软件。他们的重点是创建对您的组织有价值的工具,如客户关系管理(CRM)系统、HR 软件、生产力工具、网站分析软件、云存储解决方案等。
另一方面,我们也可以利用内部开发团队为我们的组织创建软件,解决供应商目前未提供的问题,或者根据当前第三方提供的成本节省开支。此外,我们还可以利用外包开发团队来创建我们的内部软件,或利用开源软件的力量和便利。
让我们深入探讨如何提高第三方供应商软件的安全性。
降低由第三方供应商开发的软件带来的风险
由于我们已经讨论了可以采取的各种控制措施和流程,以减少软件中代码漏洞的可能性,必须指出,许多您组织的软件解决方案将会是从第三方购买的,或者是从开源软件库(如 GitHub 的公共代码库)中提取的。
需要制定政策和程序,确保无论发生何种情况,都能让你对采购过程有可见性,并对在你公司使用的软件资产进行监督。
问题在于:你能做些什么呢?当我们审视几乎每个组织都在使用的主要软件时,比如微软、Salesforce、Atlassian 等公司开发并销售的软件,如何确保它们为其解决方案采取了适当的控制措施,并且遵循了软件开发生命周期(SDLC)的方法?
基于云的软件
在过去十年中,我们见证了向 SaaS 模型的巨大范式转变,这加快了将新软件实施到组织中的步伐,用户很可能通过其网页浏览器访问该解决方案。使用这种软件的模式导致了服务器和数据库的管理责任从客户转移到供应商。
这并不是说我们在涉及到这些 SaaS 应用程序中处理和存储的数据的隐私和安全时可以完全不负责任;事实上,作为客户,确保我们选择的解决方案对我们的组织来说是足够安全的,完全是我们的责任。
正如我之前提到的那样,安排对目前由 SaaS 供应商提供的基础设施和软件进行测试可能是困难的。原因很简单:这种测试活动可能会带来供应商认为不可接受的风险,因为你可能会不小心中断他们为数百万其他用户提供的服务。没有许可,你也不能对基础设施进行任何测试,否则你将使自己和组织面临法律责任的风险。
那么,我们该如何询问供应商他们的软件安全性呢?
了解第三方软件风险
在本书中,我们之前提到过,从作为信息安全专业人员在软件供应商处工作的角度出发,我们可能会创建一份信息安全白皮书,详细说明贵组织所采用的安全范式和控制措施。话虽如此,既然现在你是潜在的客户,你该如何提问,以确保你们组织正在采购的软件足够安全,并且其控制措施符合相应的风险水平?
好吧,我们执行尽职调查并制定法律文档,明确责任和你们组织与供应商之间的协议。我在前面那部分精彩的内容中已经讲过这些,其中涉及了合同法中的拉丁术语……你怎么可能忘记呢?
在这些协议中,你可能能够安排共享最新进行的渗透测试文档供你审查,或允许你的安全团队作为尽职调查的一部分进行测试。这一切取决于双方愿意达成的协议,以及能够为你提供所需的保障,帮助你满足风险容忍度。正如我们所说,我们必须意识到,渗透测试或甚至漏洞扫描软件解决方案并不总是可行的,但即使你在由第三方开发的软件解决方案中发现了漏洞,你该如何通知供应商,且是否期望他们及时修复这个漏洞?
在你的法律文档中,你可能还想尝试定义SLA和漏洞修复的程序,但我们仍然没有讨论如何更好地了解供应商的安全姿态。我们如何知道他们的安全管理方式是否符合我们所认为的可接受标准?
在这种情况下,我们通常会向软件供应商发送一套文件,通常称为供应商安全评估问卷(VSAQ),让他们在协议签署前填写。大多数组织会发送一些 Excel 表格,其中包含成百上千个问题的行,并配有下拉菜单或自由文本框来填写答案,和/或提供答案的证据和理由。如果你曾在为客户开发软件的组织中担任过安全专业人员,你就必须填写这些评估表格,而且不幸的是,它们从来都不是一样的。谷歌尽力将这些问题标准化,并通过其 GitHub 页面上的开源互动动态解决方案进行共享(github.com/google/vsaq),但从我所见,这个解决方案仍然未被广泛采用。如果我们能实现这一目标,它将真正为我们节省大量时间和精力,同时提供高质量的结果。我们能做到这一点吗?
在收到填写完成的 VSAQ 后,我们将记录供应商未能缓解的剩余风险,并评估这些剩余风险是否低于可接受的风险阈值。如果风险超出可接受水平,我们需要决定是缓解风险、接受风险,还是避免风险。我希望,考虑到我们已经接近书的结尾,这些内容现在应该非常熟悉。
一旦你完成了尽职调查并将结果传达给业务决策者,协议达成并最终确定后,软件的实施将开始。它可能是本地安装的软件,也可能是基于云的 SaaS。
软件供应商的 SDLC 尽职调查
由于我们已经涵盖了 SDC 的各种步骤和要求,现在你已经了解了基础知识,并掌握了进行适当尽职调查所需的大部分信息,确保你能对他们的开发生命周期进行适当的尽职调查。
首先,重要的是不仅要问供应商是否遵循 SDLC 相关的流程,还要让他们详细说明具体是如何执行的。你还可以要求提供证据作为验证方法。如果他们回答“否”,那么你需要将这款没有遵循 SDLC 开发的软件可能带来的风险,向组织内的相关决策者进行强调。
渗透测试和漏洞悬赏
我们或许能够安排对该软件进行渗透测试,但如果是 SaaS(软件即服务),如我们之前所说,不要抱太大希望,因为大多数供应商是不允许的。此外,对所有潜在供应商进行此类深入的技术活动,将很快给你的组织带来高昂的成本。最近,一个新兴的解决方案对供应商和客户都非常有吸引力,那就是实施漏洞奖励计划,供应商将他们的软件开放,接受漏洞赏金猎人进行渗透测试,猎人通过利用安全漏洞获得供应商提供的奖励。像 Bugcrowd(https://www.bugcrowd.com/)和 HackerOne(https://www.hackerone.com/)这样的公司,为像你这样的组织(以及你的供应商)提供了一个机会,让全球的安全专家“黑客”他们的软件。如果你的供应商有漏洞赏金计划,那可能意味着他们在安全方面的表现不错,尤其是如果你能查看已发现的漏洞和当前的开放悬赏。
如果供应商声称自己是安全的,但不愿提供渗透测试报告,并且不参与漏洞赏金计划,你可能需要问他们如何处理和优先处理来自渗透测试的漏洞,或者他们使用哪些工具进行 DAST、SAST 或依赖扫描。利用你对安全形势的了解,判断他们是否知道自己在说什么,并尽可能获得证据。毕竟,最终是你们组织的安全性在承受风险。
本地第三方软件
当我们查看安装在公司服务器或终端上的软件时,我们可以采取一些简单的措施,以确保由于该软件中的漏洞不会导致环境安全受到威胁。我们希望通过遵循我们之前提到的最小权限的基本概念,来减少攻击面。
“抱歉,我们的软件需要以管理员身份运行,”供应商告诉你。
你回问他们的第一个问题应该是“为什么?”。你已经了解得足够多,不会仅仅被告知这一点而不继续追问。弄清楚软件是做什么的,为什么需要管理员权限,并找出是否有办法减轻这一风险。
此外,我们在之前的章节中已经讨论过你们组织的漏洞扫描,新的本地软件应该包括在范围内。如果通过这些方式发现了漏洞,值得与供应商开始对话,了解漏洞情况并讨论如何修复。尽管他们可能会因此反应不好,但我完全相信,在不久的将来,不仅仅是你会对他们软件中的安全问题提出质疑。我们可以共同努力,迫使供应商开发符合最佳实践的软件。
那么,关于开源的本地软件呢?
开源软件
当我们谈论开源软件时,我们通常指的是自由开源软件(FOSS)。借助 FOSS,你可以下载已在诸如 GitHub 或 SourceForge 等平台上创建并托管的软件,这些软件允许潜在用户实际查看底层代码。
开源的理念是,我们获得的软件是透明的,经过同行评审的,并且是免费的,开发者希望解决技术(或社会)问题,而没有其他动力,除了出于无私精神并可能展示专业知识。
话虽如此,我们在本章之前讨论过的 Heartbleed 事件,正是源自广泛使用的不安全开源软件。那么,我们如何确保在开发过程中,针对开源工具和代码片段(snippets)已实施了适当的缓解措施?这些工具和代码片段目前正在贵组织使用,或者正在考虑使用。
此外,我们需要记住,我们的许多供应商在开发他们的专有软件时,正在利用开源软件。在我们为尽职调查过程开发 VSAQ 时,请牢记这一点。
从积极的一面来看,我们有能力审查代码。我们的信息安全政策中应该有相关要求,确保我们为自己的软件开发所采取的相同安全措施,也适用于我们使用的开源软件。这意味着要进行依赖性检查、SAST、DAST、漏洞扫描等。通常,我们会创建一个安全管道,自动化定义的流程和安全扫描步骤,适用于任何被认为在范围内的代码或软件。
提升内部软件的安全性
假设内部软件可以包括由贵组织的内部开发团队或外包开发团队开发的软件,以及贵组织所利用的开源软件。尽管这些开源软件(很可能)是由第三方开发的,但你有能力将其视为内部开发的代码,并将其通过相同的保障流程。
我想讨论一下我们如何将安全控制措施纳入开发环境和部署管道,以确保在代码进入生产阶段之前,所有风险都已被识别并采取了相应的措施。
无论是内部开发团队还是外包开发团队,在提高贵组织软件安全性的政策上都应该能够遵循你的指示。有时,外包团队有自己的流程和解决方案来提供与你所要求的相同级别的保障,而其他时候,你可能需要达成协议,以弥补任何差距。
因此,让我们来看看我们如何改善内部软件的安全性。
软件开发生命周期
首先,我们希望实施本章之前讨论过的安全 SDLC 控制。这些政策、程序和工具能够确保贵团队高效且安全地开发高质量的软件。你可以根据贵组织的风险容忍度和现有流程的特点来设计 SDLC,但保持一致性理念将有助于你达成目标。
由于如此,我认为不有必要再详细讲解本章前面已经覆盖过的所有步骤,因此,我更希望讨论一下我们如何实施实际控制,以实现之前讨论过的高层目标。
代码库
贵组织很可能使用代码库解决方案来存储和版本控制任何开发的软件。代码库的例子可能包括 GitHub、Bitbucket 或 GitLab 等。
在这些工具中,我们提供了多种可用的功能和控制,确保我们的 SDLC 要求得到满足。例如,问题跟踪器允许开发人员、产品团队成员及其他相关方之间对软件缺陷、功能请求、漏洞发现等进行透明讨论。这些问题跟踪器可以帮助团队估算需求、分配优先级,并给每个问题打上复杂度评分,从而帮助组织如何处理它们。
存在所谓的分支,允许开发人员在开发环境中积极开发和修改软件,而不会影响主分支(该分支用于生产环境),甚至可能是当前迭代的开发分支。你需要保护这个分支不被随意更改,除非经过各种形式的批准,例如代码审查、测试,并确保合并遵循职责分离和两人原则。
每次对代码的更改都会被记录并归属于相关软件工程师,从而实现透明的审计过程和清晰的审批文档。所有提交都可以通过公钥加密技术进行签名,确保每个工程师对代码库的增量贡献具备不可否认性和完整性。
此外,如果我们考虑到之前讨论过的基础设施即代码的理念,就有可能将贵组织服务器和工具的配置文件存储在代码库中,并对其进行与软件开发同等严格的审查。
DevSecOps 流水线
持续集成和持续交付(CI/CD)管道为确保只有符合规定要求的软件才能部署到流程的下一阶段提供了自动化流程,并且通过依赖管道,您能够将开发人员和系统管理员的访问权限限制到最小特权,这意味着他们在没有遵循管道流程并获得适当批准的情况下,无法访问或更改生产系统。
这些管道通常与DevSecOps相关,其中我们通过自动化和管道将安全性融入 DevOps 生命周期。
让我们来设想一下这个管道流程,适用于贵组织的软件开发过程:
-
一名软件开发人员使用他们的 SSH 密钥访问项目的 Git 仓库,从开发代码中创建一个“功能分支”,并将代码克隆到他们的工作站进行本地开发。
-
它们的交互式开发环境(IDE)参考安全编码范式,并执行正则表达式检查,以查找明文密码和秘密,立即在发现缺陷时通知开发人员,让他们在将代码提交回代码库并触发管道流程之前进行修复。
-
开发人员进行更改,并尝试将代码提交回他们创建的 Git 分支。检查他们的访问权限以确保他们被允许这样做,记录他们的更改,并在 Git 解决方案中突出显示差异。
-
CI 管道运行并执行以下检查:
-
一个依赖扫描器评估任何导入软件的风险概况。
-
静态代码分析由SAST执行,用于检查代码质量和任何安全风险。
-
一个秘密检查器查找存储在代码中的秘密和密码。
-
一个容器审计员检查定义的基础设施即代码中是否存在漏洞。
-
更新后的软件的短暂版本被部署到测试环境中,DAST执行适当的检查,寻找错误、安全漏洞和性能问题。
-
如果所有自动化系统都通过,另一个开发人员将通过电子邮件或聊天收到通知,并进行代码审查。
-
如果代码审查通过,测试人员将收到通知,功能将由人工进行测试。
-
如果所有步骤都通过审批,代码将合并,并且CD 管道将运行以将更改实施到下一个环境中。
-
这一过程需要精心实施,并为参与的各个团队成员定义过程和期望,但它可能导致一个以自动化为核心的精简、安全的开发过程。
摘要
在本章中,我们讨论了提高软件安全性的非常有趣的话题,并重点介绍了我们可以用来确保组织内使用的软件从风险角度来看“足够安全”的各种方法。
在本章开始时,我们讨论了一些通用的软件安全框架,包括 SDLC(软件开发生命周期),以及确保这一过程有效执行所需的步骤。
随后,我们强调了我们在多大程度上依赖第三方开发的软件系统,尤其是当这些系统的开发过程不透明时,比如当我们从供应商处采购软件,而供应商没有披露其安全性策略时。我们深入探讨了如何更好地理解第三方软件所带来的风险,无论是专有解决方案,还是开源模型下的风险。
基于此,我们探讨了如何利用 SDLC 的知识来在公司内部开发更好的软件,将测试和自动化作为解决方案的核心,确保在发现漏洞时具有可扩展性和高效性,这些漏洞可能会导致机密性、完整性或可用性的丧失。
总体而言,本章的学习内容帮助我们理解在制定与软件开发及使用相关的要求、政策和程序时,应关注哪些方面。掌握这些知识后,你就能够准确评估风险,并应对任何超出可接受风险容忍度的残余风险。
至此,你已经完成了本书的阅读。非常感谢你抽出时间阅读!希望你在阅读过程中不仅享受了乐趣,还学到了一些有用的知识。如果我能帮助你提升组织的安全态势,我感到非常高兴。
我想借此机会感谢我的妻子 Helen,在这一路上的支持与关怀。此外,我还要感谢 Packt 团队的所有成员,他们在本书的创作过程中从头到尾给予了我支持。

订阅我们的在线数字图书馆,全面访问超过 7,000 本书籍和视频,以及帮助你规划个人发展和提升职业生涯的行业领先工具。欲了解更多信息,请访问我们的网站。
第十章:为什么订阅?
-
通过来自 4000 多位行业专业人士的实用电子书和视频,减少学习时间,增加编码时间
-
利用为你特别定制的技能规划提升学习效果
-
每月获取一本免费的电子书或视频
-
完全可搜索,方便访问重要信息
-
复制并粘贴、打印、收藏内容
你知道 Packt 提供每本出版书籍的电子书版本,并且有 PDF 和 ePub 文件可供下载吗?你可以在packt.com升级到电子书版本,作为纸质书籍的客户,你可以享受电子书版本的折扣。欲了解更多信息,请通过customercare@packtpub.com与我们联系。
在www.packt.com,你还可以阅读一系列免费的技术文章,注册多种免费的新闻简报,并获得 Packt 书籍和电子书的独家折扣和优惠。
你可能喜欢的其他书籍
如果你喜欢这本书,你可能会对 Packt 出版的以下书籍感兴趣:
CompTIA Security+实践测试 SY0-501
Ian Neil
ISBN:978-1-83882-888-2
-
了解你为 CompTIA Security+认证做好了多少准备
-
识别不同类型的安全威胁、攻击和漏洞
-
探索企业环境中的身份和访问管理
-
保护你的商业工具和平台免受网络攻击
-
创建并维护一个安全的网络
精通 Linux 安全与加固 - 第二版
Donald A Tevault
ISBN:978-1-83898-177-8
-
创建具有强密码的受限用户帐户
-
使用 iptables、UFW、nftables 和 firewalld 配置防火墙
-
使用不同的加密技术保护你的数据
-
强化安全外壳服务,防止安全漏洞
-
使用强制访问控制防止系统漏洞
-
强化内核参数并设置内核级审计系统
-
应用 OpenSCAP 安全配置文件并设置入侵检测
Packt 正在寻找像你这样的作者
如果你有兴趣成为 Packt 的作者,请访问authors.packtpub.com并立即申请。我们已经与成千上万的开发者和技术专业人士合作,帮助他们与全球技术社区分享他们的见解。你可以提交一般申请,申请我们正在招聘的特定热门话题的作者,或者提交你自己的创意。
留下评论 - 让其他读者知道你的想法
请通过在您购买该书的网站上留下评论,与他人分享您对这本书的看法。如果您是通过亚马逊购买此书,请在本书的亚马逊页面上给我们留下真实的评论。这一点至关重要,因为其他潜在读者可以看到并利用您的公正意见做出购买决策,我们也能了解客户对我们产品的反馈,而我们的作者则可以看到您对他们与 Packt 合作创作的作品的反馈。这只需要您几分钟的时间,但对其他潜在客户、我们的作者和 Packt 来说都非常宝贵。谢谢!


浙公网安备 33010602011771号