Windows LAPS 本地管理员密码集中管理部署文档

2026-09-22 08:54:19 RAIZ
环境:Windows Server 2019 域控 · Windows 10 / 11 客户端
模式:手动账户管理(半自动)
版本:v1.1

目录

方案概述

两种部署模式说明

前置条件与注意事项

第 1 步:扩展 AD 架构

第 2 步:配置 LAPS 组策略

第 3 步:批量创建本地管理员账户

第 4 步:验证部署

手动触发密码轮换

常用运维命令

关键注意事项与排错

1. 方案概述

1.1 背景与目的

企业域环境中,客户端本地管理员账户常存在「一密多用、长期不变、难以追溯」的问题。一旦某台机器失陷,攻击者可凭本地管理员凭证横向移动至整个网络。
Windows LAPS(Local Administrator Password Solution) 是微软官方方案,用于:
  • 定期随机生成高强度密码
  • 集中备份到 AD 并加密存储
  • 按策略周期自动轮换
  • 授权管理员按需读取
  • 从根本上消除共享本地管理员密码带来的横向移动风险。

1.2 技术原理

环节

说明

客户端

接收 GPO → 按配置生成密码 → 写入本地受保护存储 → 上报 AD

服务端(AD)

存储到计算机对象属性:msLAPS-Password(明文)或 msLAPS-EncryptedPassword(加密)+ 过期时间

读取端

授权管理员通过 Get-LapsADPassword 读取并自动解密

1.3 本环境方案定位

域控为 Windows Server 2019,客户端含 Win10 / Win11,采用 「手动账户管理 + 自动密码管理」混合路线:

能力

是否支持

说明

账户自动创建

需 Win11 24H2+ / Server 2025

密码自动轮换

所有支持客户端

密码备份至 AD

明文或加密

密码加密存储

需满足 DFL + 补丁条件

自动加组/随机化账户名

仅最新客户端支持

一句话总结:GPO 脚本建号 + LAPS 接管密码 + AD 加密备份 + 周期轮换

2. 两种部署模式说明(按客户端系统区分)

① 全自动模式(本环境暂不可用)

适用:Windows 11 24H2+ / Windows Server 2025
能力:自动创建账户、加组、随机化账户名、管理密码,无需脚本
GPO 路径:计算机配置 → 策略 → 管理模板 → 系统 → LAPS → 配置自动账户管理

② 半自动模式(✅ 本环境采用)

适用:Windows 10 / Server 2016/2019/2022
能力:仅自动管理密码,不自动建号
要求:需预先通过脚本或 GPP 创建本地管理员账户,LAPS 接管后自动轮换
关键限制:若目标账户不存在,LAPS 策略静默失败
⚠️ 常见误区:自动账户管理取决于客户端版本,与域控版本无关。在 Win10 上配置该策略不会报错但无效。

3. 前置条件与注意事项

3.1 架构扩展

需在架构主机上以 Schema Admins 成员执行
全林一次性操作,不可撤销
Server 2019 域控运行 Update-LapsADSchema 不会安装 2025 新增属性,但核心属性足够

4. 第 1 步:扩展 AD 架构(一次性操作)

在架构主机上以 Schema Admins 身份打开 PowerShell:
Import-Module LAPS Update-LapsADSchema -Verbose
看到 Successfully 即完成。新增属性会加入计算机架构类的 mayContain 列表。
建议先在变更窗口执行,并确认架构主机:Get-ADForest | Select-Object SchemaMaster

5. 第 2 步:配置 LAPS 组策略

创建 GPO(如 计算机-LAPS管理策略),链接到目标计算机 OU。
路径:计算机配置 → 策略 → 管理模板 → 系统 → LAPS

5.1 核心策略

策略名称

建议设置

说明

要管理的管理员账户名称

lapsadmin

与脚本创建的一致;留空则管理内置 Administrator

配置密码备份目录

已启用 → Active Directory

注册表值设为 2

密码长度

10(推荐)

范围 8–64,默认 14

密码复杂度

大写+小写+数字+特殊字符

最高复杂度

密码期限(天)

30(默认)

高威胁环境可缩至 7–14 天

5.2 安全增强策略(推荐)

策略名称

建议设置

作用

启用密码加密

已启用

写入前加密,需满足 3.2 条件

不允许密码过期时间超过策略所需的时间

已启用

防止密码被设为永不过期

配置加密密码历史记录的大小

已启用 → 1–2

保留历史密码便于恢复

6. 第 3 步:批量创建本地管理员账户(手动模式)

6.1 方案选择

方案

说明

推荐度

GPO 启动脚本

PowerShell 脚本创建账户,LAPS 接管

⭐⭐⭐ 推荐

先手动建号再交 LAPS

预创建账户,LAPS 自动轮换

⭐⭐ 适合小规模

~~GPP 本地用户和组~~

密码字段灰色不可用(MS14-025 修复)

❌ 不可用

⚠️ 为什么 GPP 不可用:微软修复 MS14-025 后禁用了 GPP 密码设置功能,防止明文存储。

6.2 创建lapsadmin用户启动脚本(幂等)

创建一个lapsadmin用户的启动脚本,保存为 Create-LapsAdmin.ps1,放入 GPO 的 Scripts\Startup 文件夹:







$username = "lapsadmin"   # 与 GPO 中配置一致$password = ConvertTo-SecureString "YourStr0ng!Pass#2026" -AsPlainText -Force# 判断是否存在lapsadmin用户,没有则创建if (-not (Get-LocalUser -Name $username -ErrorAction SilentlyContinue)) {    New-LocalUser -Name $username -Password $password -FullName "LAPS Admin" -Description "Managed by LAPS" -PasswordNeverExpires    Add-LocalGroupMember -Group "Administrators" -Member $username}

6.3 部署脚本

使用之前创建的策略,GPO 编辑器中导航至:计算机配置 → 策略 → Windows 设置 → 脚本(启动/关机)→ 启动,添加上述脚本。
使用内置 Administrator 账户:将 GPO 中「要管理的管理员账户名称」留空即可,需确保该账户已启用(默认禁用),可跳过本步骤。

7. 第 4 步:验证部署

7.1 强制刷新



#在客户端命令行中执行 gpupdate /force

7.2 手动触发策略处理



#在客户端命令行中执行 Invoke-LapsPolicyProcessing

7.3 验证本地账户




# 在客户端命令行中执行Get-LocalUser -Name "lapsadmin"Get-LocalGroupMember -Group "Administrators" | Where-Object { $_.Name -like "*lapsAdmin*" }

7.4 验证密码已写入 AD



#在有域管理员权限的电脑上查看,或者在域控上查看 Get-LapsADPassword -Identity "PC01" -AsPlainText


7.5 检查事件日志

客户端事件查看器 → Microsoft-Windows-LAPS/Operational

事件 ID

含义

10018

✅ 密码成功备份到 AD(最关键成功标志)

✅ 部署成功判定:① 事件 10018 出现 + ② Get-LapsADPassword 返回明文密码 + ③ 巡检脚本显示已备份

8. 手动触发密码轮换

方法一:客户端命令(推荐)




#在管理员权限命令行下 Reset-LapsPassword
该命令会立即为当前托管的本地账户轮换密码,无论当前密码是否已过期。它适用于密码备份到 AD 。

方法二:ADUC 图形界面

ADUC → 目标计算机 → 属性 → LAPS 选项卡
设置新密码过期时间为当前或更早 → 点击「立即过期」
客户端下次 gpupdate 时触发轮换

方法三:结合策略处理

如果你已经在客户端上通过 ADUC 将密码标记为过期,或者希望强制客户端立即处理策略,可以在客户端上运行:

Invoke-LapsPolicyProcessing
⚠️ 注意:Reset-LapsPassword 需本地管理员权限;ADUC 操作需 AD 委派权限。该命令会启动一次策略处理周期,LAPS 客户端将检查密码状态并执行必要的轮换操作。

9.轮换后如何验证

轮换完成后,可以通过以下方式确认:
检查客户端事件日志:在客户端的事件查看器中,导航至应用程序和服务日志MicrosoftWindowsLAPSOperational。查找 事件 ID 10018(密码成功更新到 AD)或类似事件。
在域控上查询新密码:稍等片刻(等待 AD 复制),然后在域控上运行:

Get-LapsADPassword -Identity "目标计算机名" -AsPlainText
如果命令返回了新的密码明文,说明轮换已成功并同步到 AD

10. 常用运维命令



















# 查某 OU 下所有已备份密码的电脑Get-ADComputer -SearchBase "OU=集团公司,DC=test,DC=com" `    -LDAPFilter '(msLAPS-PasswordExpirationTime=*)' `    -Properties msLAPS-PasswordExpirationTime, msLAPS-Password, msLAPS-EncryptedPassword |    Select-Object Name,        @{n='密码过期时间'; e={ [datetime]::FromFileTime($_.'msLAPS-PasswordExpirationTime') }},        @{n='剩余天数'; e={ [math]::Round((New-TimeSpan -Start (Get-Date-End ([datetime]::FromFileTime($_.'msLAPS-PasswordExpirationTime'))).TotalDays, 1) }}|        Sort-Object 剩余天数 | Format-Table -AutoSize
# 统计OU下电脑总数、已备份密码的电脑台数$base = "OU=集团公司,DC=test,DC=com"$all = @(Get-ADComputer -SearchBase $base -Filter *)$done = @(Get-ADComputer -SearchBase $base -LDAPFilter '(msLAPS-PasswordExpirationTime=*)')"域内计算机: $($all.Count) 台,已备份 LAPS 密码: $($done.Count) 台"# 查看单台计算机密码 Get-ADComputer -Identity "0LJMWL" -Properties msLAPS-Password, msLAPS-PasswordExpirationTime, msLAPS-EncryptedPassword | Format-List# 查看计算机密码,但需要管理员权限Get-LapsADPassword -Identity "0LJMWL" -AsPlainText

注:转载文章来源于网络,版权归原作者或企业所有,侵删!

我要咨询