规划泄露
定律一:没有人认为坏事会发生在自己身上,直到它发生。 - 安全管理的 10 项不变法则
许多组织中的灾难恢复计划侧重于从导致计算服务丢失的区域灾难或故障中恢复。 但是,在与遭入侵的客户合作时,我们经常发现他们的灾难恢复计划中不包括从有意的泄漏中恢复。 当泄漏导致知识产权被盗或利用逻辑边界的故意破坏(例如破坏所有 Active Directory 域或所有服务器)而不是利用物理边界的故意破坏(例如破坏数据中心)时,情况尤其如此。 尽管组织可能有事件响应计划,这些计划定义在发现泄漏时要执行的初始活动,但这些计划通常会省略从影响整个计算基础结构的泄漏中恢复的步骤。
由于 Active Directory 为用户、服务器、工作站和应用程序提供了丰富的标识和访问管理功能,因此它始终是攻击者的目标。 如果攻击者获得对 Active Directory 域或域控制器的高度特权访问权限,可以利用该访问权限来访问、控制或甚至销毁整个 Active Directory 林。
本文档讨论了针对 Windows 和 Active Directory 的一些最常见攻击以及为了减少攻击面而实现的对策,但在 Active Directory 完全遭到入侵的情况下,唯一可靠的恢复方法是在入侵发生之前做好准备。 与本文档的前面部分相比,本部分会用更短的篇幅介绍技术实现,并用更长的篇幅介绍概要建议,你可以使用这些建议创建全面的方法来保护和管理组织的关键业务和 IT 资产。
无论你的基础结构从未受到攻击,还是抵御了尝试性的违规行为,或者已受到攻击并完全遭到入侵,你都应该针对将一次又一次地遭受攻击这一不可避免的现实制定计划。 防止攻击是不可能的,但防止重大安全漏洞或大规模入侵确是有可能的。 每个组织都应密切评估其现有风险管理计划,并做出必要的调整,通过对预防、检测、阻止和恢复方面进行均衡投资,帮助降低其整体漏洞风险。
若要创建有效的防御措施,同时仍为依赖于基础结构和应用程序的用户和企业提供服务,可能需要考虑采用新的方法来防止、检测和阻止环境中的泄漏,并从泄露中恢复。 本文档中的方法和建议可能无法帮助你修复遭入侵的 Active Directory 安装,但可以帮助你保护下一个安装。
AD 林恢复 - 恢复林的步骤中提供了有关恢复 Active Directory 林的建议。 你也许能够防止新环境完全遭到入侵,但即使不能做到,你也可以使用工具来恢复环境并重获环境的控制权。
重新思考方法
定律八:网络防御的难度与其复杂性成正比。 - 安全管理的 10 项不变法则
无论计算机使用哪种操作系统,如果攻击者已获得对该计算机的 SYSTEM、管理员、root 或等效访问权限,就不能再将该计算机视为可信,无论在“清理”系统方面做了多少操作都是如此。 Active Directory 也不例外。 如果攻击者已获得对 Active Directory 中的域控制器或高度特权帐户的特权访问权限,那么除非记录了攻击者所做的每次修改或具有已知良好的备份,否则永远无法将目录还原到完全可信的状态。
当成员服务器或工作站遭到攻击者入侵和更改时,计算机不再可信,但未遭入侵的相邻服务器和工作站仍可信。 一台计算机遭到入侵并不意味着所有计算机都遭到入侵。
但是,在 Active Directory 域中,所有域控制器都托管同一 AD DS 数据库的副本。 如果单个域控制器遭到入侵,并且攻击者修改了 AD DS 数据库,则这些修改会复制到域(和林,具体取决于在其中做出修改的分区)中所有其他域控制器。 即使重新安装林中的每个域控制器,也只是重新安装 AD DS 数据库所驻留的主机。 对 Active Directory 的恶意修改会像复制到多年来一直运行的域控制器一样轻松地复制到新安装的域控制器。
在评估遭入侵的环境时,我们通常会发现,所认为的第一个安全漏洞“事件”实际上是在攻击者最初入侵环境后的数周、数月或甚至数年之后触发的。 攻击者通常早在检测到安全漏洞之前就已获得高度特权帐户的凭据,并利用这些帐户入侵目录、域控制器、成员服务器、工作站以及甚至连接的非 Windows 系统。
这些结果与 Verizon 2012 年数据泄露调查报告中的一些结果一致,该报告指出:
98% 的数据泄露源于外部代理
85% 的数据泄露需要数周或更多时间才能发现
92% 的事件是由第三方发现的,以及
可通过简单的或中级控制措施避免 97% 的泄露。
达到前面所述的程度的泄漏实际上无法修复,并且在 Active Directory 已遭入侵或销毁的情况下,“平展和重新构建”每个遭入侵系统的标准建议完全不可行或甚至是不可能的。 即使还原到已知的良好状态也无法消除最初使环境遭到入侵的缺陷。
虽然你必须全方位保护基础结构,但攻击者只需要在你的防御中找到足够多的缺陷就能达到他们期望的目标。 如果你的环境是一个相对简单和原始的环境,并且历来管理良好,那么实现本文档前面提供的建议可能是一个简单的主张。
但是,我们发现,对于更旧、更大且更复杂的环境,本文档中的建议不可行或甚至不可能实现的可能性越大。 相比于重头开始构建一个可抵御攻击和入侵的环境,事后保护基础结构要困难得多。 但如前所述,重新构建整个 Active Directory 林并非易事。 出于这些原因,建议采用一种更有侧重性、更有针对性的方法来保护 Active Directory 林。
请考虑采用一种方法,在其中根据对业务和基础结构中最重要的内容来确定优先级,而不是专注于设法修复所有“损坏”的内容。 请考虑创建一个小型、安全的新环境,你可在其中安全地移植对业务至关重要的用户、系统和信息,而不是设法修正一个装满过时的、配置错误的系统和应用程序的环境。
在本部分中,我们将介绍一种方法,通过该方法,你可以创建一个原始 AD DS 林作为核心业务基础结构的“救生船”或“安全单元”。 原始林仅仅是新安装的 Active Directory 林,通常在大小和范围方面受限,并且它是使用当前操作系统和应用程序并遵循减少 Active Directory 攻击面中所述的原则构建的。
通过在新构建的林中实现建议的配置设置,可以创建一个完全基于安全设置和做法生成的 AD DS 安装,并且可以减少为旧系统和应用程序提供支持所带来的挑战。 虽然有关设计和实现原始 AD DS 安装的详细说明不在本文档的范围之内,但应遵循一些一般原则和准则来创建可在其中存放大部分关键资产的“安全单元”。 这些准则如下:
确定隔离和保护关键资产的原则。
定义有限的、基于风险的迁移计划。
在必要时利用“非迁移式”迁移。
实现“创造性破坏”。
隔离旧系统和应用程序。
为最终用户简化安全性功能。
确定隔离和保护关键资产的原则
为存放关键资产而创建的原始环境的特征可能有很大差异。 例如,可以选择创建仅将 VIP 用户和只有这些用户可以访问的敏感数据迁移到其中的原始林。 可以创建不仅向其中迁移 VIP 用户,还将其实现为管理林的原始林,并实施减少 Active Directory 攻击面中所述的原则,以创建可用于从该原始林管理旧版林的安全管理帐户和主机。 可以实现“专用”林,用于存放 VIP 帐户、特权帐户和需要额外安全性的系统,例如运行 Active Directory 证书服务 (AD CS) 的服务器,其唯一目标是将它们与安全性较低的林隔离。 最后,可以实现将成为存放所有新用户、系统、应用程序和数据的实际位置的原始林,从而使你最终能够通过消耗来停用旧版林。
无论原始林是包含少量用户和系统,还是构成更积极迁移的基础,你都应该在规划中遵循以下原则:
假设旧版林已遭入侵。
不要将原始环境配置为信任旧版林,但可以将旧环境配置为信任原始林。
如果帐户的组成员身份、SID 历史记录或其他属性可能已遭到恶意修改,请不要将用户帐户或组从旧版林迁移到原始环境。 可以改用“非迁移式”方法来填充原始林。 (本部分稍后会对非迁移式方法进行介绍。)
不要将计算机从旧版林迁移到原始林。 在原始林中实现新安装的服务器,在新安装的服务器上安装应用程序,并将应用程序数据迁移到新安装的系统。 对于文件服务器,将数据复制到新安装的服务器,使用新林中的用户和组设置 ACL,然后以类似的方式创建打印服务器。
不允许在原始林中安装旧版操作系统或应用程序。 如果无法对某个应用程序执行更新和全新安装,请将它保留在旧版林中,并考虑通过创造性破坏来替换该应用程序的功能。
定义有限的、基于风险的迁移计划
创建有限的、基于风险的迁移计划仅意味着,在确定要将哪些用户、应用程序和数据迁移到原始林时,如果其中一个用户或系统已遭入侵,则应根据组织所面临的风险程度来确定迁移目标。 应将其帐户最有可能成为攻击者目标的 VIP 用户存放在原始林中。 应将提供重要业务功能的应用程序安装在原始林中的全新内置服务器上,并且应将高度敏感数据移动到原始林中的安全服务器。
如果你还未清楚地了解 Active Directory 环境中对业务最关键的用户、系统、应用程序和数据,请与业务部门协作以确定这些信息。 应确定业务运行所需的任何应用程序,以及存储关键应用程序或存储关键数据的任何服务器。 通过确定组织继续正常运行所需的用户和资源,可以创建一个具有自然优先排序的资产集合,你会将精力集中在这些资产上。
利用“非迁移式”迁移
无论你是知道环境已遭入侵、怀疑它已遭入侵,还是单纯地不希望将旧版 Active Directory 安装中的旧数据和对象迁移到新的安装,请考虑采用在技术上不“迁移”对象的迁移方法。
用户帐户
在从一个林到另一个林的传统 Active Directory 迁移中,用户对象上的 SIDHistory(SID 历史记录)属性用于存储用户的 SID 以及用户在旧版林中属于其成员的组的 SID。 如果已将用户帐户迁移到新林,并且他们要访问旧版林中的资源,则 SID 历史记录中的 SID 可用于创建访问令牌,该令牌允许用户访问在迁移帐户之前有权访问的资源。
但是,经证实,在某些环境中维护 SID 历史记录存在问题,因为使用当前的和历史 SID 填充用户访问令牌可能会导致令牌膨胀。 令牌膨胀是指必须存储在用户访问令牌中的 SID 数量超过令牌中可用空间量的问题。
尽管可以在有限的范围内增加令牌大小,但令牌膨胀的最终解决方案是减少与用户帐户关联的 SID 数量,无论是合理化组成员身份、消除 SID 历史记录还是将这两种方式相结合。 有关令牌膨胀的详细信息,请参阅 MaxTokenSize 和 Kerberos 令牌膨胀。
请考虑在不将 SID 历史记录带入新林的情况下,利用元目录应用程序“迁移”用户,而不是使用 SID 历史记录迁移旧环境(尤其是组成员身份和 SID 历史记录可能遭入侵的环境)中的用户。 在新林中创建用户帐户时,可以使用元目录应用程序将帐户映射到旧版林中的相应帐户。
若要为新用户帐户提供对旧版林中的资源的访问权限,可以使用元目录工具来确定已向用户的旧帐户授予对其访问权限的资源组,然后将用户的新帐户添加到这些组中。 根据旧版林中的组策略,可能需要创建用于资源访问的域本地组,或将现有组转换为域本地组,以允许将新帐户添加到资源组。 通过首先关注最关键的应用程序和数据并将其迁移到新环境(可选择是否使用 SID 历史记录),可以限制在旧环境中要完成的工作量。
服务器和工作站
在从一个 Active Directory 林到另一个林的传统迁移中,与迁移用户、组和应用程序相比,迁移计算机通常相对简单。 根据计算机角色,迁移到新林可以像从旧域中脱离并加入新域一样简单。 但是,将计算机帐户完整地迁移到原始林无法达到创建新环境的目的。 应在新环境中重新安装服务器和工作站,而不是将(可能遭入侵、配置错误或过时的)计算机帐户迁移到新林。 可以将数据从旧版林中的系统迁移到原始林中的系统,但不能迁移到存放数据的系统。
应用程序
在从一个林到另一个林的任何迁移中,应用程序都可能带来最大的挑战,但对于“非迁移式”迁移,应该应用的最基本原则之一是原始林中的应用程序应是最新的、受支持的且经过全新安装。 在可能的情况下,可以从旧版林中的应用程序实例中迁移数据。 无法在原始林中“重新创建”应用程序时,应考虑采用创造性破坏或隔离旧版应用程序等方法,如以下部分所述。
实现创造性破坏
创造性破坏是一个经济学术语,描述通过破坏先前秩序而创造的经济发展。 近年来,该术语已应用于信息技术。 它通常是指消除旧基础结构的机制,消除方式不是对它进行升级,而是用全新的内容取代它。 面向 CIO 和高级 IT 管理人员的 Gartner Symposium ITXPO 2011 峰会将创造性破坏作为降低成本和提高效率的关键主题之一。 安全性的提升变得可能,这是进程中的自然结果。
例如,组织可能由多个业务部门组成,这些业务部门使用执行类似功能且提供不同现代化程度和供应商支持的不同应用程序。 从历史上看,IT 部门可能负责分别维护每个业务部门的应用程序,需要他们合作来完成的工作包括尝试找出哪个应用程序提供了最佳功能,然后将数据从其他应用程序迁移到该应用程序。
在创造性破坏中,需实现全新的应用程序来替换旧版应用程序、将数据迁移到新应用程序中,以及停用旧版应用程序和运行它们的系统,而不是维护过时的或冗余应用程序。 在某些情况下,可以通过在自己的基础结构中部署新应用程序来实现旧版应用程序的创造性破坏,但应尽可能考虑将应用程序移植到基于云的解决方案。
通过部署基于云的应用程序来替换旧版内部应用程序,不仅可以减少维护工作量和成本,还可以通过消除存在攻击者可利用的漏洞的旧系统和应用程序来减少组织的攻击面。 此方法为组织提供了更快的方式来获取所需的功能,同时消除基础结构中的旧目标。 尽管创造性破坏的原则不适用于所有 IT 资产,但它提供了一个通常可行的选项,用于消除旧系统和应用程序,同时部署可靠、安全、基于云的应用程序。
隔离旧系统和应用程序
将业务关键型用户和系统迁移到安全的原始环境的自然结果是,旧版林将包含价值较低的信息和系统。 尽管保留在安全性更低的环境中的旧系统和应用程序可能带来更高的泄漏风险,但它们造成的泄漏严重性更低。 通过更改关键业务资产的存储位置并对其进行现代化操作,可以专注于部署高效管理和监视,同时无需适应旧设置和协议。
通过将这些系统从强制实现旧设置的域中移除,随后可以通过将这些域配置为仅支持当前操作系统和应用程序来提高其安全性。 不过,最好尽可能停用旧系统和应用程序。 如果停用对于一小部分旧系统和应用程序并不可行,那么将其隔离到单独的域(或林)将使你能够在旧版安装的其余部分执行增量改进。
为最终用户简化安全性功能
在大多数组织中,由于其在组织中的角色性质而有权访问最敏感信息的用户能花在学习复杂的访问限制和控制措施的时间往往最少。 尽管你应为组织中的所有用户提供全面的安全教育计划,但还应重点关注如何通过实现透明的控制措施并简化用户所遵循的原则,尽可能使安全性功能易于使用。
例如,可以定义一个策略,在该策略中,高级管理人员和其他 VIP 需要使用安全工作站来访问敏感数据和系统,并允许他们使用自己的其他设备访问敏感度更低的数据。 这是用户需记住的一个简单原则,但你可以实现许多后端控制措施来帮助强制执行此方法。
可以使用身份验证机制保证来允许用户仅在使用其智能卡登录安全系统后才能访问敏感数据,并且可以使用 IPsec 和用户权限限制来控制他们可以从中连接到敏感数据存储库的系统。 可以实现动态访问控制,以根据访问尝试的特征限制对数据的访问,从而将业务规则转换为技术控制。
从用户的角度来看,从安全系统访问敏感数据“行之有效”,而尝试从不安全的系统访问敏感数据“行不通”。但是,从监视和管理环境的角度来看,你是在帮助创建有关用户访问敏感数据和系统的方式的可识别模式,从而使你能够更轻松地检测异常访问尝试。
在因用户抵制长而复杂的密码而导致密码策略不足的环境中,特别是对于 VIP 用户,请考虑使用替代的身份验证方法。 替代的方法包括智能卡(具有多种外形规格和用于增强身份验证的附加功能)、生物识别控制(如手指轻扫读取器),甚至是用户计算机中由受信任的平台模块 (TPM) 芯片保护的身份验证数据。 如果计算机已遭入侵,则多重身份验证无法防止凭据盗窃攻击。 但是,通过为用户提供易于使用的身份验证控制,可以将更可靠的密码分配给传统用户名和密码控制措施难以掌控的用户帐户。