Microsoft 本地管理员密码解决方案 (LAPS)

2022-01-24 16:11:31 浏览数 (1)

问题 企业环境中计算机上本地帐户的真正问题是“本地”一词用词不当。如果网络上的 50 台计算机的本地管理员帐户为“Administrator”,密码为“P@55w0rd1!”,首先这是一个可怕的密码。其次,更重要的是,如果其中一台计算机受到威胁,它们都将受到威胁。Windows 非常有帮助。非常有用,如果您将本地管理员凭据传递给具有相同本地凭据的另一台计算机,则授予访问权限,就像您使用目标系统凭据登录一样。将管理员凭据转储到一个以获取所有管理员!缓解此问题的最佳方法是确保每台计算机都有一个不同的本地管理员帐户密码,该密码长、复杂且随机,并且会定期更改。

早期尝试提供一种定期更改 Microsoft 本地管理员密码的方法并不理想(请参阅组策略首选项密码存储安全问题)。您也不应该使用包含明文密码的脚本来更改本地管理员密码,因为这些脚本往往放置在易于访问的位置,例如 SYSVOL(以利用组策略)。

即使您部署了 LAPS 或其他一些本地管理员帐户密码管理解决方案,仍然建议安装KB2871997(如果需要)并配置组策略以阻止本地帐户通过网络进行身份验证。KB2871997 为属于管理员组成员的任何本地帐户添加了两个新的本地 SID,包括 LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP (S-1-5-114)。使用“拒绝从网络访问此计算机”和“拒绝通过远程桌面服务登录”设置在组策略中配置此 SID 可防止本地帐户通过网络连接(对于工作站,请在部署到服务器之前仔细测试)。

我还在 2016 年 8 月发布了有关“ Microsoft LAPS 安全性和 Active Directory LAPS 配置侦察”的文章,其中涵盖了一些更有趣的 LAPS 安全场景。

Microsoft 本地管理员密码解决方案 (LAPS) 概述

Microsoft 本地管理员密码解决方案 ( LAPS )为 Active Directory 中的每台计算机提供自动化的本地管理员帐户管理(LAPS 最适合工作站本地管理员密码)。安装在每台计算机上的客户端组件会生成随机密码,更新关联 AD 计算机帐户上的(新)LAPS密码属性,并在本地设置密码。LAPS配置通过组策略进行管理,组策略提供密码复杂性、密码长度、密码更改的本地帐户名称、密码更改频率等值。

Microsoft 本地管理员密码解决方案 ( LAPS ):

对于要求用户在没有域凭据的情况下登录计算机的环境,密码管理可能成为一个复杂的问题。这样的环境大大增加了 Pass-the-Hash (PtH) 凭证重放攻击的风险。本地管理员密码解决方案 (LAPS) 为在域中的每台计算机上使用具有相同密码的通用本地帐户提供了解决方案。LAPS 通过为域中每台计算机上的通用本地管理员帐户设置不同的随机密码来解决此问题。使用该解决方案的域管理员可以确定哪些用户(例如帮助台管理员)有权读取密码。 LAPS 简化了密码管理,同时帮助客户实施针对网络攻击的推荐防御措施。特别是,该解决方案降低了当客户在其计算机上使用相同的管理本地帐户和密码组合时导致的横向升级风险。LAPS 将每台计算机的本地管理员帐户的密码存储在 Active Directory 中,并以计算机对应 Active Directory 对象的机密属性进行保护。允许计算机在 Active Directory 中更新自己的密码数据,域管理员可以授予授权用户或组(例如工作站帮助台管理员)读取权限。 使用 LAPS 自动管理加入域的计算机上的本地管理员密码,以便密码在每台托管计算机上是唯一的、随机生成的,并安全地存储在 Active Directory 基础结构中。该解决方案建立在 Active Directory 基础架构之上,不需要其他支持技术。LAPS 使用安装在托管计算机上的组策略客户端扩展 (CSE) 来执行所有管理任务。该解决方案的管理工具提供了简单的配置和管理。 LAPS 是如何工作的? LAPS 解决方案的核心是一个 GPO 客户端扩展 (CSE),它执行以下任务并可以在 GPO 更新期间强制执行以下操作: • 检查本地管理员帐户的密码是否已过期。 • 当旧密码过期或需要在过期前更改时生成新密码。 • 根据密码策略验证新密码。 • 将密码报告给 Active Directory,并将其与计算机帐户的机密属性一起存储在 Active Directory 中。 • 向 Active Directory 报告密码的下一次到期时间,并将其与计算机帐户的属性一起存储在 Active Directory 中。 • 更改管理员帐户的密码。 然后,允许这样做的用户可以从 Active Directory 中读取密码。符合条件的用户可以请求更改计算机的密码。 LAPS的特点是什么? LAPS 包括以下功能: • 提供以下功能的安全性: • 随机生成可在托管计算机上自动更改的密码。 • 有效缓解依赖相同本地帐户密码的PtH 攻击。 • 在传输过程中通过使用 Kerberos 版本 5 协议的加密来强制密码保护。 • 使用访问控制列表 (ACL) 保护 Active Directory 中的密码并轻松实施详细的安全模型。 • 可管理性,提供以下功能: • 配置密码参数,包括使用期限、复杂性和长度。 • 在每台机器上强制重置密码。 • 使用与 Active Directory 中的 ACL 集成的安全模型。 • 使用任何选择的Active Directory 管理工具;提供了自定义工具,例如 Windows PowerShell。 • 防止计算机帐户被删除。 • 以最小的占用空间轻松实施解决方案。

Microsoft 安全公告 3062591包含有关 LAPS 的其他信息。

为什么这很重要?

LAPS解决了管理每台计算机的本地管理员帐户密码的难题,该密码通常仅在域帐户无法使用的情况下使用。本地管理员帐户密码通常会在计算机的整个生命周期内保持不变,并且通常与网络上的许多其他计算机相同。攻击者可以利用多台计算机上的相同本地管理员帐户和密码来破坏网络。确保网络上每台计算机上的本地管理员帐户密码都不同,可以减轻攻击者使用本地凭据将管理控制扩展到单个系统之外的能力。

它是如何配置的?

LAPS部署有几个步骤:

  1. 下载 LAPS 文件……这包括操作指南——请在部署前仔细阅读
  2. Active Directory 架构更新为计算机帐户添加 2 个必需的LAPS属性。
  3. 在域或组织单位 (OU) 级别进行委派,以便计算机可以更新其LAPS密码。
  4. OU 级别的委派使 AD 组能够查看或强制重置计算机本地管理员帐户密码。
  5. 安装LAPS客户端组件(通过 SCCM 或类似组件),该组件执行密码更改并根据 LAPS GPO 设置更新计算机的属性。
  6. 创建了一个新的组策略,使LAPS客户端组件能够更改本地帐户密码,并为客户端提供LAPS配置(密码复杂性、密码长度、密码更改的本地帐户名称、密码更改频率等)。

部署 LAPS 后,经批准的用户可以通过多种方法查看计算机本地管理员密码:

  • PowerShell: Get-AdmPwdPassword -ComputerName <计算机名>
  • Active Directory 用户和计算机: 查看计算机属性 ms-Mcs-AdmPwd 的值
  • LAPS 客户端

优点:

  • 全自动、可配置的计算机本地管理员帐户更新
  • OU 访问存储密码的简单委托。
  • 由于LAPS利用 Active Directory 组件(组策略、计算机对象属性等),因此无需额外的服务器。
  • 计算机帐户只能写入/更新自己的本地管理员帐户密码(ms-Mcs-AdmPwd 属性),不能从该属性中读取密码。
  • 密码更新流量已加密。
  • 可以轻松更改 OU/域中每台计算机的密码。(清除密码最后设置属性)
  • 免费(因为软件免费,您的时间和资源是额外的)

缺点:

  • 密码以明文形式存储,如果未正确规划/部署委派,则可能会暴露密码。请注意,加密密钥管理很困难并且使解决方案复杂化。专注于适当的授权,这种风险就会得到缓解。
  • 只有当前密码被存储并可用于检索。
  • LAPS一次只能管理一个本地管理员帐户的密码(只有一个密码属性)。
  • 域控制器泄露可以泄露域中的所有本地管理员帐户密码。
  • 密码可以在任何时候被访问,并且被委派的人可以在任何时候使用它们来查看它们。虽然可以启用审核,但必须为每个 OU、每个在域控制器上记录事件 ID 4662 的组进行配置。此外,与其他一些本地帐户密码管理解决方案一样,密码在使用后不会自动更改。
  • 可以在环境中配置扩展权限,这可能允许未经授权的用户访问某些计算机上的 LAPS 密码。有关如何删除扩展权限的其他信息,请参阅 LAPS 操作指南(其中一些位于本文末尾的委派部分。

LAPS 启用本地管理员帐户 (RID 500) 密码或其他自定义本地帐户的密码管理。Microsoft 建议只有默认管理员本地帐户是本地管理员组的成员,并且 LAPS 管理该帐户。

虚拟环境中的 LAPS:

在不改变状态的物理计算机上配置时,LAPS 运行良好。当您在 VDI 环境中引入 LAPS 时,事情会变得有些棘手。

永久 VDI(相同的计算机名称): 此过程与物理计算机相同,因为用户连接到相同的 VDI 映像,该映像仍然存在(注销时不会被破坏)。

非持久性 VDI(新计算机名): 如果 VDI 工作站在每次连接时都有一个新计算机名(非持久性会话,新计算机映像作为用户登录的一部分启动),那么 LAPS 将在 LAPS 更新密码客户端运行并注意到 AD 计算机帐户的 ms-Mcs-AdmPwdExpirationTime 属性为空。作为此过程的一部分,LAPS 客户端生成并设置本地管理员密码,然后更新 AD 计算机帐户上的 LAPS ms-Mcs-AdmPwd 属性(ms-Mcs-AdmPwdExpirationTime 属性也会更新)。这里没有问题,因为此过程与物理计算机相同。

非持久性 VDI(相同的计算机名称: 如果 VDI 工作站在每次连接时都具有相同的计算机名称(非持久会话,相同的计算机映像启动),那么当 LAPS 客户端在启动后不久运行时,LAPS 将不会更新密码,因为它会注意到 ms-Mcs -AD 计算机帐户的 AdmPwdExpirationTime 属性在定义的阈值内(例如 14 天)。在这种情况下,LAPS 客户端将休眠,直到它注意到 ms-Mcs-AdmPwdExpirationTime 属性中的值大于阈值。这意味着 VDI 系统将在阈值期间的大部分时间以及超过 LAPS 阈值时 VDI 系统处于活动状态的时间内拥有默认的 VDI 映像密码。这一点, 由于 LAPS 没有(明显的)选项来强制 LAPS 客户端在启动时更改密码,因此需要运行一个脚本来清除 ms-Mcs-AdmPwdExpirationTime 属性,以便在 LAPS 客户端运行时(GPO 刷新时间) 并检查最后一次密码更改时间 (ms-Mcs-AdmPwdExpirationTime),本地管理员密码将被更改。可以配置 PowerShell 脚本,在用户注销时(或在其他事件期间)清除 ms-Mcs-AdmPwdExpirationTime。VDI 解决方案可以提供此时运行脚本的能力。计算机启动脚本(通过 GPO)也可以工作。

审计访问:

配置 LAPS 访问审计:

Set-AdmPwdAuditing –OrgUnit: <您要设置审计的 OU 的名称> -AuditedPrincipals: :<应审计访问密码的用户/组的标识>

当有人访问 LAPS 密码属性时,会在响应读取请求的域控制器上记录事件 ID 4662。

笔记:

  • 由于此解决方案旨在自动更改本地管理员密码并保持此信息的私密性,因此需要深思熟虑确定谁应该能够检索一组计算机上的本地管理员密码。
  • 关键是需要仔细设计和部署对密码属性的(读取)访问权限的委派。这是 LAPS 部署中最重要的部分:确定谁应该有权读取计算机密码数据。
  • 密码本身应该是大约 25 个字符(因为这在今天是“合理的”)。绝对应该超过15。
  • 本地管理员密码也应至少与计算机 AD 帐户密码一样频繁(每 15 至 30 天)。
  • 被委托将计算机加入域的帐户可能能够查看计算机对象上的 LAPS 密码数据。

LAPS Enterprise (LAPS-E) 注意: 还有另一个版本的 LAPS,称为 LAPS Enterprise (LAPS-E),其中包括其他功能,例如加密密码和多个本地帐户的管理(如果作为自定义 Microsoft 交付的一部分部署) )。但是,LAPS-E 的代码库与 LAPS 不同,并且尚未在 Microsoft 内部完成所需的安全审查。也没有更新模型来确保客户收到代码更新。因此,Microsoft 不支持 LAPS-E,并且不再将 LAPS-E 包含在任何客户可交付成果中。这意味着您不应该使用 LAPS-E(尽管MSDN 上提供了该代码)。事实上,LAPS 工作得非常好,如果需要高级功能,有几个第三方产品可以提供类似的功能,甚至更多(Cyber​​-Ark、Thycotic、Xceedium、Lieberman、Dell 等)。

LAPS 安装

LAPS 需要更新 Active Directory 架构,因此至少部分安装需要架构管理员的成员身份。 请在安装前通读 LAPS 文档(LAPS 操作指南等),这样可以节省您的时间和麻烦。

开始安装…

自定义设置页面有几个选项。 Fat 客户端 UI 和 PowerShell 模块只需要安装在将管理 LAPS 的系统上,其中包括那些将访问密码的系统。 GPO 组件用于部署和管理 LAPS GPO。

注意: 不要在域控制器上安装 LAPS 客户端(并在域级别配置 LAPS GPO),因为 LAPS 将开始更改域的默认管理员帐户 (RID 500)。这发生在我的实验室环境中,追踪它很有趣!

可以通过检查 c:program filesLAPSCSE 中的 admpwd.dll 来验证安装的 LAPS 客户端。 PowerShell 是一种快速简便的验证安装方式​​:  Get-ChildItem 'c:program filesLAPSCSEAdmpwd.dll'

GPO 客户端扩展 (CSE) 在此处注册:HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogonGPExtensions admpwd GPO CSE 在此位置注册。

LAPS 架构更新

安装 LAPS 客户端后,在进行任何其他配置之前,现在是使用 LAPS 计算机对象属性扩展 AD 架构的好时机。请记住在修改 AD 架构之前始终执行备份。

LAPS 架构增加了两个属性:

  • ms-Mcs-AdmPwd – 以明文形式存储密码
  • ms-Mcs-AdmPwdExpirationTime – 存储重置密码的时间

LAPS 包含一个用于更新 AD 架构的 PowerShell cmdlet:Update-AdmPwdADSchma。

在具有 RODC 的环境中安装时,有一个重要的 LAPS 说明:

注意:如果您在环境中安装了 RODC,并且需要将属性 ms-Mcs-AdmPwd 的值复制到 RODC,则需要更改ms-Mcs-AdmPwd 的searchFlags属性值的第 10 位架构对象为 0(从 searchFlags 属性的当前值中减去 512)。

组策略配置

LAPS 组策略管理模板在安装 LAPS 时复制到本地系统:

  • AdmPwd.admx –> %WINDIR%PolicyDefinitions
  • AdmPwd.adml –> %WINDIR%PolicyDefinitionsen-US

这些文件可以复制到AD GPO 中央存储,因此可以从任何系统管理 LAPS GPO(PolicyDefinitions 中的 admx 文件和 en-US 子文件夹中的 adml 文件)。

有四个主要的 LAPS 配置设置:

  1. 密码设置 - 配置密码长度和复杂性。
  2. 配置是否有默认管理员帐户 (RID 500) 以外的帐户。
  3. 启用此选项可防止本地管理员密码早于域密码策略(设置为已启用)。
  4. 启用以启用 LAPS 以管理本地管理员密码。在您准备好让 LAPS 管理密码之前,不要切换到“启用”。如果未启用,LAPS 客户端将不会管理密码。

委派对计算机本地管理员帐户密码的访问

在运行任何 LAPS PowerShell cmdlet 之前,请确保已安装并导入 LAPS PowerShell 模块(“Import-Module AdmPwd.PS”)。

运行包含的 PowerShell cmdlet“ Set-AdmPwdComputerSelfPermission ”,为 OU(或域)中的每台计算机委派权限,以更新其包含本地管理员密码 (ms-Mcs-AdmPwd) 的计算机属性。

运行包含的 PowerShell cmdlet“ Set-AdmPwdReadPasswordPermission ”,为组委派权限以查看指定 OU 中的本地管理员帐户密码。

运行包含的 PowerShell cmdlet“ Set-AdmPwdResetPasswordPermission ”来委派组的权限,以强制更改指定 OU 中的本地管理员帐户密码 (ms-Mcs-AdmPwdExpirationTime)。

委派访问权限后对工作站 OU 的权限。

0 人点赞