Windows Server 2025 / 使用 Active Directory 配置 Windows LAPS

Windows 本地管理员密码解决方案(Windows Local Administrator Password Solution,Windows LAPS)为每台设备生成不同的本地管理员密码,定期更换,并支持授权人员取回密码。要把密码加密保存到 Active Directory(AD),必须分别准备架构、计算机写入权限、读取与解密权限以及计算机策略。本练习管理 FS1 上的本地 labadmin 帐户,不修改域用户的密码。

选择帐户并确认前提条件

FS1 应是已加入 ad.example.test 的 Windows Server 2025 成员服务器,其计算机对象位于用户、组和 OU 课程中准备的组织单位(OU)Lab\Servers。不要在域控制器 DC1 上执行这里的本地帐户创建操作;本练习也不配置目录服务还原模式(DSRM)密码。Windows LAPS 内置于 Windows,在架构、策略和命令方面均与旧版 Microsoft LAPS 不同,不能用安装旧版软件包代替以下步骤。

  • 检查 FS1 与管理电脑的系统版本、更新、LAPS 模块以及当前策略模板。
  • 确定哪些管理身份确实需要取回密码,并将 GG_LAPSReaders 成员限制在该范围内。
  • 验证一条不依赖受管密码的替代管理和恢复路径。
  • 确认实际域功能级别以及在 AD 中加密保存密码的前提条件。

启用加密前,使用 Get-ADDomain 查看 DomainMode,确认域功能级别为 Windows Server 2016 或更高。仅凭 FS1 的系统版本不能确认这个条件,也不要为了练习而直接提高生产域的功能级别。Microsoft 的 Windows LAPS 与 AD 部署指南说明了这些要求。本例备份目标是本地 AD,并非 Microsoft Entra ID。在 LAPS 更换 labadmin 密码之前,应验证另一条管理与恢复路径,并保留可用的替代管理会话。

在 FS1 上准备本地 labadmin 帐户

在 FS1 控制台上,以本地管理员身份打开 64 位 Windows PowerShell,并确认 Microsoft.PowerShell.LocalAccounts 模块可用且查询正常。先只执行第一行查询。如果 labadmin 已存在,停止并核对用途,不要继续创建;查询失败也不能证明帐户不存在。只有确认缺失后才分阶段执行后续操作。Read-Host 将初始的唯一密码作为安全字符串读入,无需把密码写进脚本。安全标识符(SID)S-1-5-32-544 用于查找内置管理员组,可避免系统语言造成的组名差异:

Get-LocalUser -Name 'labadmin' -ErrorAction SilentlyContinue
$initialLocalPassword = Read-Host 'Initial local password' -AsSecureString
New-LocalUser -Name 'labadmin' -Password $initialLocalPassword -Description 'LAPS lab account'
$localAdminGroup = (Get-LocalGroup -SID 'S-1-5-32-544').Name
Add-LocalGroupMember -Group $localAdminGroup -Member "$env:COMPUTERNAME\labadmin"

在 FS1 的“计算机管理 → 本地用户和组”中,确认 labadmin 已创建并属于本地管理员组。如果创建失败,不要继续添加组成员。这里采用Windows LAPS 的手动帐户管理模式:管理员负责创建帐户及维护其属性,LAPS 管理密码。此练习应保持自动帐户管理关闭;自动模式是另一种部署方式,从 Windows Server 2025 和 Windows 11 24H2 开始支持。如果不配置管理员帐户名称,默认目标是内置 Administrator,而不是 labadmin。

准备架构与最小范围的 AD 授权

从 DC1 或安装了 LAPS 模块的管理电脑准备 AD,组管理命令还需要 ActiveDirectory 模块。先确认域上下文,并记录 Lab\Servers 原有的委派权限。Update-LapsADSchema向整个林的架构添加 Windows LAPS 属性;删除策略链接不能撤销架构变更。修改架构需要相应权限,例如 Schema Admins 所具有的权限,而 OU 委派需要另外的权限。在生产环境中,应先完成变更与恢复规划;在隔离实验环境中,也要先确认第一项操作成功,再继续第二项:

Update-LapsADSchema
Set-LapsADComputerSelfPermission -Identity 'OU=Servers,OU=Lab,DC=ad,DC=example,DC=test'

第二行设置可继承权限,使该 OU 中的计算机能够更新自己的 LAPS 数据,并不允许任意管理员读取密码。作用范围是 Lab 下的 Servers,而不是域根目录。执行下一代码块前,在“Active Directory 用户和计算机”(dsa.msc)中检查 GG_LAPSReaders 是否存在。仅在缺失时执行 New-ADGroup,失败就停止;若已存在,跳过创建并核对用途。组创建成功或核实无误后,打开“属性 → 成员”,只加入指定的管理身份。创建命令只生成空组,不会自动加入管理员。随后再授予读取权限并查询结果。不要为了方便加入 labuser1 或全部域用户,也要检查嵌套组成员。

New-ADGroup -Name 'GG_LAPSReaders' -GroupCategory Security -GroupScope Global -Path 'OU=LabGroups,OU=Lab,DC=ad,DC=example,DC=test'
Set-LapsADReadPasswordPermission -Identity 'OU=Servers,OU=Lab,DC=ad,DC=example,DC=test' -AllowedPrincipals 'AD\GG_LAPSReaders'
Find-LapsADExtendedRights -Identity 'OU=Servers,OU=Lab,DC=ad,DC=example,DC=test'

读取和解密是两层独立权限,取回加密密码需要两者均符合要求。Find-LapsADExtendedRights 有助于发现过宽的机密属性读取权限,但不能单凭其结果证明具备解密权限。将结果与权限计划比较,先调查意外身份,不要盲目删除通用权限。读取权限也不会自动授予修改密码到期时间的权限。变更委派前请核对Windows LAPS PowerShell 命令。选作解密主体的组必须已存在,并且能被 FS1 解析;无效的主体名称可能导致 AD 备份失败。

只向测试服务器应用策略

  1. 打开“组策略管理”(gpmc.msc)并检查 Lab\Servers 中的计算机对象。如果包含生产服务器,应停止并先准备独立测试范围,再调整命令中的路径。在预定实验环境中,创建组策略对象(GPO)Lab-LAPS-Servers,仅链接到 Lab\Servers。
  2. 在编辑器中进入“计算机配置 → 策略 → 管理模板 → 系统 → LAPS”(Computer Configuration → Policies → Administrative Templates → System → LAPS)。使用中央存储时,检查当前 LAPS.admx 以及匹配语言的 LAPS.adml;Windows 更新不会自动将模板复制到中央存储。
  3. 启用备份目录设置并选择 Windows Server Active Directory,对应 BackupDirectory = 2。
  4. 将受管管理员帐户名称设为 labadmin,并确认其他策略没有启用自动帐户管理。
  5. 启用密码加密,将 AD\GG_LAPSReaders 设置为授权解密主体,输入框中不要额外加引号。仅在 OU 上授予读取权限并不充分。
  6. 配置密码长度 20、复杂度 4、最长使用期限 30 天。检查链接范围与安全筛选,使 FS1 获得计算机配置,不要强制链接到整个域。

长度 20 个字符、复杂度 4(大写字母、小写字母、数字及特殊字符)、最长使用期限 30 天均为实验值,不是通用生产建议。应检查本地密码策略是否兼容,不要通过弱化本地策略来掩盖错误。Windows LAPS 策略文档说明了不同系统版本的支持条件,不能把新的密码短语选项直接套到旧设备。测试登录前,还应检查身份验证后的操作及宽限期,因为这些操作可能更换密码并注销会话。仅修改最长使用期限,不会立即强制轮换现有密码。

验证策略处理、密码恢复与停用流程

在 FS1 上以管理员身份运行 Windows PowerShell,更新计算机策略并请求 LAPS 处理。在 FS1 自己的事件查看器中,打开“应用程序和服务日志 → Microsoft → Windows → LAPS → Operational”。DC1 上的相同通道反映 DC1 自身作为 LAPS 客户端的行为,不会集中显示 FS1 的事件:

gpupdate /target:computer /force
Invoke-LapsPolicyProcessing

应关联同一处理周期内的近期事件,而不是只找一条旧的成功记录。根据Windows LAPS 事件说明,10003 表示开始处理,10004 表示周期成功,10005 表示失败。10021 显示 AD 配置,可用于核对帐户、备份目标和加密。首次更新时,10018 确认新密码写入 AD,10020 确认本地帐户密码更新。请求处理不等于每次都轮换密码:尚未到期且没有其他触发条件时,可能没有新的密码变更事件。发生错误时,先检查错误代码及中间事件,再决定是否重试。

授权管理员可以从 AD 管理电脑使用 Get-LapsADPassword 检查 FS1 的元数据。下面的选择列表不输出 Password 属性,也不要求显示明文,但命令本身仍会查询凭据信息。因此只能在授权会话中使用,不能把它当作面向所有设备的普通资产收集命令:

Get-LapsADPassword -Identity 'FS1' | Select-Object ComputerName,Account,PasswordUpdateTime,ExpirationTimestamp,DecryptionStatus

本例加密部署的预期结果是 ComputerName 为 FS1、Account 为 labadmin,更新时间与到期时间合理,且具有读取和解密权限的身份得到 DecryptionStatus Success。NotApplicable 不能证明密码已经加密保存;Unauthorized 表示查询身份没有所需的解密权限。若数据缺失或时间过旧,应先检查事件、会话身份、策略范围及 AD 复制,而不是批量扩大权限。授权查询成功,也不能证明未授权用户被拒绝;应另外经授权使用不具备这些权限的测试帐户核对访问边界,不记录密码,也不通过失败登录触发帐户锁定。

实际恢复验证可使用“Active Directory 用户和计算机”的 LAPS 选项卡。从授权会话打开计算机对象 FS1 → 属性 → LAPS,检查帐户名称和到期时间。显示或复制密码是另外的保密操作,应避开屏幕共享、录制及转录,只将密码用于指定访问。验证 FS1 登录时,使用 FS1\labadmin 或 .\labadmin,而不是 AD\labadmin,并考虑身份验证后的操作。能够取回密码和成功登录是不同检查,帐户状态及登录权限也会影响结果。

禁用策略不会恢复旧密码,也不会自动清除 AD 委派。停用 LAPS 前,先验证替代管理路径,并规划在帐户不再受管后设置和确认新的唯一密码。仅移除 Lab-LAPS-Servers 链接以及此次练习新增的授权,并与初始记录比较;不要删除其他设备仍需使用的组或共享权限。如果无法明确识别新增授权,应保持安全状态并先复核委派。不要删除架构属性,也不要让全部服务器重新共用一个密码。