附录 I:为 Active Directory 中受保护的帐户和组创建管理帐户
实现不依赖于高特权组中永久成员身份的 Active Directory 模型的一个挑战是,当需要组中的临时成员身份时,必须有一种机制来填充这些组。 某些特权标识管理解决方案要求在林中的每个域中的组(如 DA 或管理员)中向软件的服务帐户授予永久成员身份。 但是,从技术上讲,Privileged Identity Management (PIM) 解决方案没有必要在此类高特权上下文中运行其服务。
本附录提供的信息可用于原生实现的或第三方 PIM 解决方案,以创建具有有限权限且可严格控制的帐户,但在需要临时提升时可用于填充 Active Directory 中的特权组。 如果要将 PIM 作为原生解决方案实现,则管理人员可能会使用这些帐户来执行临时组填充;如果通过第三方软件实现 PIM,则可以调整这些帐户以充当服务帐户。
注意
本附录中描述的过程提供了一种在 Active Directory 中管理高特权组的方法。 可以根据需要调整这些过程、添加其他限制或省略此处描述的一些限制。
为 Active Directory 中受保护的帐户和组创建管理帐户
创建可用于管理特权组成员身份而无需向管理帐户授予过多权限的帐户包括以下分步说明中所述的四个常规活动:
首先,应创建一个用于管理帐户的组,因为这些帐户应由一组有限的受信任用户管理。 如果还没有一个 OU 结构来将特权和受保护帐户及系统与域中的一般人群隔离开来,则应创建一个。 尽管本附录中未提供具体说明,但屏幕截图显示了此类 OU 层次结构的示例。
创建管理帐户。 这些帐户应创建为“常规”用户帐户,并且除了默认已向用户授予的用户权限之外,不授予任何其他用户权限。
对管理帐户实施限制使其只能用于创建帐户的专用目的,并控制谁可以启用和使用帐户(在第一步中创建的组)。
配置对每个域中 AdminSDHolder 对象的权限,以允许管理帐户更改域中特权组的成员身份。
在生产环境中实施所有这些过程之前,应全面测试所有这些过程,并根据环境的需要进行修改。 还应验证所有设置是否按预期工作(本附录中提供了一些测试过程),并且应测试灾难恢复方案,在该方案中,管理帐户不可用于填充受保护组以进行恢复。 有关备份和恢复 Active Directory 的详细信息,请参阅 AD DS 备份和恢复分步指南。
注意
通过实施本附录中所述的步骤,你将创建能够管理每个域中所有受保护组的成员身份的帐户,而不仅仅是 EA、DA 和 BA 等最高特权 Active Directory 组。 有关 Active Directory 中受保护组的详细信息,请参阅附录 C:Active Directory 中的受保护帐户和组。
为受保护组创建管理帐户的分步说明
创建组以启用和禁用管理帐户
管理帐户应在每次使用时重置其密码,并在需要密码的活动完成时禁用。 虽然还可以考虑为这些帐户实现智能卡登录要求,但它是一种可选配置,这些说明假定管理帐户将配置用户名和长而复杂的密码作为最低控制。 在此步骤中,你将创建一个组,该组有权重置管理帐户的密码以及启用和禁用帐户。
若要创建组以启用和禁用管理帐户,请执行以下步骤:
在将容纳管理帐户的 OU 结构中,右键单击要在其中创建组的 OU,单击“新建”,然后单击“组”。
在“新建对象 - 组”对话框中,输入组的名称。 如果计划使用此组来“激活”林中的所有管理帐户,请将其设为通用安全组。 如果你有一个单域林,或者如果你打算在每个域中创建一个组,则可以创建一个全局安全组。 单击“确定”以创建组。
右键单击刚创建的组,单击“属性”,然后单击“对象”选项卡。在组的“对象属性”对话框中,选择“防止对象被意外删除”,这不仅会阻止以其他方式授权的用户删除组,而且会阻止将组移动到另一个 OU(除非首先取消选择了该属性)。
注意
如果已对组的父 OU 配置权限以将管理限制为有限的一组用户,则可能不需要执行以下步骤。 此处提供了这些步骤,目的是确保你即使尚未对在其中创建此组的 OU 结构实施有限的管理控制,也可以保护该组免受未经授权的用户修改。
单击“成员”选项卡,为负责启用管理帐户或在必要时填充受保护组的团队成员添加帐户。
如果尚未这样做,请在“Active Directory 用户和计算机”控制台中单击“查看”,然后选择“高级功能”。 右键单击刚刚创建的组,单击“属性”,然后单击“安全”选项卡。在“安全”选项卡上,单击“高级”。
在“[组] 的高级安全设置”对话框中,单击“禁用继承”。 出现提示时,单击“将继承的权限转换为对此对象的显式权限”,然后单击“确定”返回到组的“安全”对话框。
在“安全”选项卡上,删除不应允许访问此组的组。 例如,如果不希望经过身份验证的用户能够读取组的名称和常规属性,则可以删除该 ACE。 还可以删除 ACE,例如帐户操作员的 ACE 和 Windows 2000 之前的服务器兼容访问。 但是,应保留最少的对象权限集。 保留以下 ACE 不变:
SELF
SYSTEM
Domain Admins
Enterprise Admins
Administrators
Windows 授权访问组(如果适用)
企业域控制器
尽管允许 Active Directory 中最高特权组管理此组似乎有悖常理,但实现这些设置的目标并不是阻止这些组的成员进行授权更改。 相反,目标是确保在需要非常高的特权级别时,授权更改会成功。 正因为如此,本文档中不建议更改默认特权组嵌套、权利和权限。 通过保持默认结构不变并清空目录中最高特权组的成员身份,可以创建一个更安全的环境,该环境仍按预期运行。
注意
如果尚未为创建此组的 OU 结构中的对象配置审核策略,则应配置审核以记录此组的更改。
你已完成组配置,该组将用于在需要时“签出”管理帐户,并在其活动完成后“签入”帐户。
创建管理帐户
应至少创建一个帐户,用于管理 Active Directory 安装中特权组的成员身份,最好创建另一个帐户作为备份。 无论是选择在林的单个域中创建管理帐户,并向其授予所有域受保护组的管理功能,还是选择在林的每个域中实现管理帐户,过程实际上都是相同的。
注意
本文档中的步骤假定你尚未实现 Active Directory 的基于角色的访问控制和特权标识管理。 因此,某些过程必须由其帐户是相关域的域管理员组成员的用户执行。
使用具有 DA 特权的帐户时,可以登录到域控制器来执行配置活动。 不需要 DA 特权的步骤可由登录到管理工作站的较低特权帐户执行。 显示浅蓝色边框对话框的屏幕截图表示可在域控制器上执行的活动。 显示深蓝色对话框的屏幕截图表示可以在具有有限特权的帐户的管理工作站上执行的活动。
若要创建管理帐户,请执行以下步骤:
使用属于域 DA 组成员的帐户登录到域控制器。
启动“Active Directory 用户和计算机”并导航到要在其中创建管理帐户的 OU。
右键单击 OU,单击“新建”,然后单击“用户”。
在“新建对象 - 用户”对话框中,输入所需的帐户命名信息,然后单击“下一步”。
提供用户帐户的初始密码,清除“用户下次登录时必须更改密码”,选择“用户不能更改密码”和“帐户已禁用”,然后单击“下一步”。
验证帐户详细信息是否正确,然后单击“完成”。
右键单击刚刚创建的用户对象,然后单击“属性”。
单击“帐户”选项卡 。
在“帐户选项”字段中,选择“帐户敏感且无法委派”标志,选择“此帐户支持 Kerberos AES 128 位加密”和/或“此帐户支持 Kerberos AES 256 位加密”标志,然后单击“确定”。
注意
由于此帐户与其他帐户一样,具有有限但强大的功能,因此该帐户应仅在安全管理主机上使用。 对于环境中的所有安全管理主机,应考虑实现组策略设置“网络安全:配置 Kerberos 允许的加密类型”,以仅允许可以为安全主机实现的最安全加密类型。
虽然为主机实现更安全的加密类型并不能缓解凭据盗窃攻击,但安全主机的适当使用和配置可以缓解。 为仅由特权帐户使用的主机设置更强大的加密类型会减少计算机的整体攻击面。
有关在系统和帐户上配置加密类型的详细信息,请参阅 Kerberos 支持的加密类型的 Windows 配置。
这些设置仅在运行 Windows Server 2012、Windows Server 2008 R2、Windows 8 或 Windows 7 的计算机上受支持。
在“对象”选项卡上,选择“防止对象被意外删除”。 这不仅会阻止对象被删除(甚至由授权用户删除),还会防止将其移动到 AD DS 层次结构中的其他 OU,除非具有更改属性权限的用户首先清除该复选框。
单击“远程控制”选项卡。
清除“启用远程控制”标志。 支持人员永远不必连接到此帐户的会话来实施修复。
注意
Active Directory 中的每个对象都应具有指定的 IT 所有者和指定的业务所有者,如针对泄露情况进行规划中所述。 如果要在 Active Directory(而不是外部数据库)中跟踪 AD DS 对象的所有权,则应在此对象的属性中输入适当的所有权信息。
在这种情况下,业务所有者很可能是 IT 部门,并且没有禁止业务所有者也是 IT 所有者。 建立对象所有权的目的是让你在需要对对象进行更改时识别联系人,可能是从其最初创建后的几年。
单击“组织”选项卡。
输入 AD DS 对象标准中所需的任何信息。
单击“拨入”选项卡。
在“网络访问权限”字段中,选择“拒绝访问”。此帐户永远不需要通过远程连接进行连接。
注意
此帐户不太可能用于登录到环境中的只读域控制器 (RODC)。 但是,如果情况需要该帐户登录到 RODC,则应将此帐户添加到拒绝的 RODC 密码复制组,以确保其密码不会缓存在 RODC 上。
尽管每次使用后都应重置帐户的密码,并且应禁用帐户,但实现此设置不会对帐户产生有害影响,并且当管理员忘记重置帐户密码并禁用它时,可能会有所帮助。
单击“隶属于”选项卡。
单击“添加”。
在“选择用户、联系人、计算机”对话框中键入“拒绝的 RODC 密码复制组”,然后单击“检查名称”。 当组的名称在对象选取器中带有下划线时,单击“确定并验证该帐户现在是以下屏幕截图中显示的两个组的成员。 不要将帐户添加到任何受保护的组。
单击“确定”。
单击“安全”选项卡,然后单击“高级”。
在“高级安全设置”对话框中,单击“禁用继承”并将继承的权限复制为显式权限,然后单击“添加”。
在“[帐户] 的权限条目”对话框中,单击“选择主体”,并添加在上一过程中创建的组。 滚动到对话框底部,然后单击“全部清除”以删除所有默认权限。
滚动到“权限条目”对话框的顶部。 确保“类型”下拉列表设置为“允许”,然后在“应用于”下拉列表中,选择“仅此对象”。
在“权限”字段中,选择“读取所有属性”、“读取权限”和“重置密码”。
在“属性”字段中,选择“读取 userAccountControl”和“写入 userAccountControl”。
单击“确定”,然后在“高级安全设置”对话框中再次单击“添加”。
注意
userAccountControl 属性控制多个帐户配置选项。 向属性授予写入权限时,不能仅授予更改某些配置选项的权限。
在“安全”选项卡的“组或用户名”字段中,删除不应允许访问或管理帐户的任何组。 不要删除配置了“拒绝 ACE”的任何组,例如“所有人”组和 SELF 计算帐户(在创建帐户期间启用“用户无法更改密码”标志时设置了 ACE)。 也不要删除刚刚添加的组、系统帐户或者 EA、DA、BA 或 Windows 授权访问组之类的组。
单击“高级”并验证“高级安全设置”对话框是否类似于以下屏幕截图。
单击“确定”,然后再次单击“确定”以关闭帐户的属性对话框。
第一个管理帐户的设置现已完成。 你将在后面的过程中测试该帐户。
创建其他管理帐户
创建其他管理帐户的方法有:重复上述步骤、复制刚刚创建的帐户,或者创建脚本来创建具有所需配置设置的帐户。 但请注意,如果复制刚刚创建的帐户,许多自定义设置和 ACL 将不会复制到新帐户,并且必须重复大部分配置步骤。
可以改为创建一个组,向其委派填充和取消填充受保护组的权限,但需要保护该组以及在其中放置的帐户。 由于目录中应该很少有帐户被授予管理受保护组成员身份的能力,因此创建单个帐户可能是最简单的方法。
无论你选择如何创建用于放置管理帐户的组,都应确保每个帐户都受到上述保护。 还应考虑实施类似于附录 D:保护 Active Directory 中的内置管理员帐户中所述的 GPO 限制。
审核管理帐户
应将帐户上的审核配置为至少记录对帐户的所有写入。 不仅可以识别在授权使用期间成功启用帐户和重置其密码,还可以识别未经授权的用户操纵帐户的意图。 应在安全信息和事件监视 (SIEM) 系统(如果适用)中捕获帐户上的失败写入,并应触发警报,向负责调查潜在危害的人员提供通知。
SIEM 解决方案从所涉及的安全源(例如,事件日志、应用程序数据、网络流、反恶意软件产品和入侵检测源)获取事件信息,整理数据,并尝试创建智能视图和主动操作。 有许多商业 SIEM 解决方案,许多企业创建专用实现。 设计良好且实施得当的 SIEM 可以显著增强安全监视和事件响应功能。 但是,不同解决方案的功能和准确性差异很大。 SIEM 超出了本文的范围,但任何 SIEM 实施者都应考虑包含的特定事件建议。
有关域控制器的建议审核配置设置的详细信息,请参阅监视 Active Directory 是否存在泄露迹象。 监视 Active Directory 是否存在泄露迹象中提供了域控制器特定的配置设置。
使管理帐户能够修改受保护组的成员身份
在此过程中,你将配置对域的 AdminSDHolder 对象的权限,以允许新创建的管理帐户修改域中受保护组的成员身份。 此过程不能通过图形用户界面 (GUI) 执行。
如附录 C:Active Directory 中的受保护帐户和组中所述,当 SDProp 任务运行时,域的 AdminSDHolder 对象的 ACL 会有效地“复制到”受保护的对象。 受保护的组和帐户不会从 AdminSDHolder 对象继承其权限;其权限显式设置为与 AdminSDHolder 对象上的权限匹配。 因此,在修改对 AdminSDHolder 对象的权限时,必须针对适合目标受保护对象的类型的属性修改这些权限。
在这种情况下,将授予你新创建的管理帐户,以允许它们在组对象上读取和写入成员属性。 但是,AdminSDHolder 对象不是组对象,并且组属性不会在图形 ACL 编辑器中公开。 因此,你将通过 Dsacls 命令行实用工具实现权限更改。 若要向(已禁用的)管理帐户授予修改受保护组成员身份的权限,请执行以下步骤:
使用已成为域中 DA 组成员的用户帐户的凭据登录到域控制器,最好是具有 PDC 模拟器 (PDCE) 角色的域控制器。
右键单击“命令提示符”,然后单击“以管理员身份运行”,打开提升的命令提示符。
当提示批准提升时,单击“是”。
注意
有关 Windows 中提升和用户帐户控制 (UAC) 的详细信息,请参阅 TechNet 网站上的 UAC 过程和交互。
在命令提示符下,键入(替换域特定的信息)“Dsacls [域中 AdminSDHolder 对象的可分辨名称] /G [管理帐户 UPN]:RPWP;成员”。
上一个命令(不区分大小写)的工作方式如下:
Dsacls 在目录对象上设置或显示 ACE
CN=AdminSDHolder,CN=System,DC=TailSpinToys,DC=msft 标识要修改的对象
/G 表示正在配置授权 ACE
PIM001@tailspintoys.msft 是将向其授予 ACE 的安全主体的用户主体名称 (UPN)
RPWP 授予读取属性和写入属性权限
成员是将对其设置权限的属性(特性)的名称
有关使用 Dsacls 的详细信息,请在命令提示符下键入不带任何参数的 Dsacls。
如果已为域创建了多个管理帐户,则应为每个帐户运行 Dsacls 命令。 在 AdminSDHolder 对象上完成 ACL 配置后,应强制 SDProp 运行,或等待其计划运行完成。 有关强制 SDProp 运行的信息,请参阅附录 C:Active Directory 中的受保护帐户和组中的“手动运行 SDProp”。
运行 SDProp 后,可以验证对 AdminSDHolder 对象所做的更改是否已应用于域中的受保护组。 由于前面所述的原因,无法通过查看 AdminSDHolder 对象上的 ACL 来验证这一点,但可以通过查看受保护组上的 ACL 来验证是否已应用权限。
在“Active Directory 用户和计算机”中,验证是否已启用“高级功能”。 为此,请单击“查看”,找到“域管理员”组,右键单击该组,然后单击“属性”。
单击“安全”选项卡,然后单击“高级”打开“域管理员的高级安全设置”对话框。
选择“允许管理账户使用 ACE”,然后单击“编辑”。 验证帐户是否仅被授予 DA 组的“读取成员”和“写入成员”权限,然后单击“确定”。
在“高级安全设置”对话框中单击“确定”,然后再次单击“确定”关闭 DA 组的属性对话框。
可以对域中的其他受保护组重复上述步骤;所有受保护组的权限应相同。 现在,你已完成此域中受保护组的管理帐户的创建和配置。
注意
有权在 Active Directory 中写入组成员身份的任何帐户也可以将自身添加到组。 此行为是设计使然,无法禁用。 因此,在不使用管理帐户时,应始终保持禁用状态,并在帐户被禁用和使用时密切监视帐户。
验证组和帐户配置设置
创建并配置了可以修改域中受保护组(包括最高特权的 EA、DA 和 BA 组)成员身份的管理帐户后,应验证是否已正确创建帐户及其管理组。 验证包括以下常规任务:
测试可以启用和禁用管理帐户的组,以验证组成员是否可以启用和禁用帐户并重置其密码,但无法对管理帐户执行其他管理活动。
测试管理帐户,验证它们是否可以向域中的受保护组添加和删除成员,但不能更改受保护帐户和组的任何其他属性。
测试将启用和禁用管理帐户的组
若要测试启用管理帐户并重置其密码,请使用属于你在附录 I:在 Active Directory 中为受保护的帐户和组创建管理帐户中创建的组的成员的帐户登录到安全管理工作站。
打开“Active Directory 用户和计算机”,右键单击管理帐户,然后单击“启用帐户”。
应显示一个对话框,确认帐户已启用。
接下来,重置管理帐户的密码。 为此,请再次右键单击该帐户,然后单击“重置密码”。
在“新密码”和“确认密码”字段中键入帐户的新密码,然后单击“确定”。
应显示一个对话框,确认帐户的密码已重置。
现在尝试修改管理帐户的其他属性。 右键单击帐户,单击“属性”,然后单击“远程控制”选项卡。
选择“启用远程控制”,然后单击“应用”。 该操作应该会失败,并且应显示“访问被拒绝”错误消息。
单击帐户的“帐户”选项卡,并尝试更改帐户的名称、登录小时数或登录工作站。 所有操作都应该会失败,并且不受 userAccountControl 属性控制的帐户选项应灰显且无法进行修改。
尝试将管理组添加到受保护的组,例如 DA 组。 单击“确定”时,应该会显示一条消息,告知你没有修改组的权限。
根据需要执行其他测试,以验证除了 userAccountControl 设置和密码重置之外,你不能在管理帐户上配置任何内容。
注意
userAccountControl 属性控制多个帐户配置选项。 向属性授予写入权限时,不能仅授予更改某些配置选项的权限。
测试管理帐户
启用一个或多个可更改受保护组成员身份的帐户后,可以测试这些帐户以确保它们可以修改受保护的组成员身份,但不能对受保护的帐户和组执行其他修改。
以第一个管理帐户身份登录到安全管理主机。
启动“Active Directory 用户和计算机”并找到“域管理员”组。
右键单击“域管理员”组,然后单击“属性”。
在“域管理员属性”中,单击“成员”选项卡,然后单击“添加”。 输入将被授予临时域管理员权限的帐户的名称,然后单击“检查名称”。 当帐户名称带有下划线时,单击“确定”返回到“成员”选项卡。
在“域管理员属性”对话框的“成员”选项卡上,单击“应用”。 单击“应用”后,该帐户应保持为 DA 组的成员,并且你应该不会收到任何错误消息。
单击“域管理员属性”对话框中的“管理者”选项卡,并验证是否不能在任何字段中输入文本,并且所有按钮都灰显。
单击“域管理员属性”对话框中的“常规”选项卡,并验证是否不能修改有关该选项卡的任何信息。
根据需要对其他受保护组重复这些步骤。 完成后,使用属于你创建的组的成员的帐户登录到安全管理主机,以启用和禁用管理帐户。 然后重置刚刚测试的管理帐户的密码并禁用该帐户。 你已完成管理帐户和负责启用和禁用该帐户的组的设置。