什么是LAPS
Local Administrator Password Solution,简称LAPS,是微软提供的一种用于管理本地管理员密码的解决方案。用于在Active Directory(AD)环境中自动管理和轮换众多客户端Windows的本地管理员账户及密码。
在没有这个工具之前, 本地管理员密码管理会非常的复杂。比如,管理员需要为每一台计算机配置不同的本地管理员密码,记录在一个excel表格里面,也没有很好的办法对这些密码进行周期性的更新。 有的公司的本地管理员密码根本就是同一个,这个密码一旦泄露,后果非常的严重。
有时候回想一下, 只要是公司环境大量使用Windows终端, Windows AD还是一个很不错的选择, 想绕过Windows AD, 很多管理工作是没有很优雅的办法实现的。
- LAPS服务一部署到DC,通过组策略给客户端安装LAPS客户端,实现本地密码的管理,安装时要全部安装。
- 域控服务器的Domain Level需要在2016或以上。但使用ADCU工具的域控制器得在Windows Server 2019以上,WS2016的DC中在ADUC下查看加密密码会不显示。
- 对于客户机, Win11的23H2版本以后,不需要独立安装LAPS客户端,GPO的MSI安装包也会自动拒绝安装。对于Win11 23H2之前的版本,去官网下载LAPS的客户端, https://www.microsoft.com/en-us/download/details.aspx?id=46899
- 客户机上需要事先建立一个指定名称的本地管理员账户,密码可以设置成任意值, 在LAPS系统部署完成后,客户机会自动更新这个密码并把它保存到AD的计算账户中。
Windows LAPS与旧版的Microsoft LAPS
LAPS有两种, 一种是Windows Server 2016用的,这也是LAPS能支持的最低的Domain Level版本,叫Microsoft LAPS,在部署的时候需要在DC安装LAPS.msi,客户机版本如果低于Win11 23H2,也需要安装。
从Windows Server 2019开始,新的LAPS叫Windows LAPS,它已经内置到了Windows Server 2019和Windows 11 23H2以后版本的操作系统中,在部署的时候,需要在DC端使用新版本的命令格式。 在DC上不需要安装客户端,但也不全是,LAPS.msi中包含了GPO的Template,不安装的话做GPO的时候没有LAPS策略模板。所以也可以安装一下,但是只选择GPO Template,或者手动把下载好的Template复制到组策略的目录中。
本文使用Microsoft LAPS,因为企业的环境中仍然在使用Windows Server 2016的DC,拥有更新DC的同学们可以跳过安装LAPS.msi的部分,并且使用Windows LAPS的PowerShell 命令。
旧版 Microsoft LAPS 包括一个名为 AdmPwd.PS 的 PowerShell 模块,在执行powershell命令前需要首先import该模块。 下表提供两个模块之间的映射。 新旧命令产生的效果应该是相同的,只是有些格式上的差异,除了最后一个Update-LapsADSchema,新版本的会扩展6个不同的属性而老版本的只扩展2个,而对于客户机管理只有这2个起作用,而且老版本只支持明文密码存储在AD中。
Windows LAPS cmdlet | 旧版 Microsoft LAPS cmdlet |
---|---|
Get-LapsAADPassword |
不适用 |
Get-LapsDiagnostics |
不适用 |
Find-LapsADExtendedRights |
Find-AdmPwdExtendedRights |
Get-LapsADPassword |
Get-AdmPwdPassword |
Invoke-LapsPolicyProcessing |
不适用 |
Reset-LapsPassword |
不适用 |
Set-LapsADAuditing |
Set-AdmPwdAuditing |
Set-LapsADComputerSelfPermission |
Set-AdmPwdComputerSelfPermission |
Set-LapsADPasswordExpirationTime |
Reset-AdmPwdPassword |
Set-LapsADReadPasswordPermission |
Set-AdmPwdReadPasswordPermission |
Set-LapsADResetPasswordPermission |
Set-AdmPwdResetPasswordPermission |
Update-LapsADSchema |
Update-AdmPwdADSchema |
本地管理员账户
为了使用LAPS自动管理本地管理员账户的密码,首先要有一个本地管理员账户,也只能管理一个。这个账户通常是为了管理目的而设置的,给IT部门使用的。
为了创建这个账户,你可以使用GPO批量的在所有计算机创建一个这样的账户,或者也许你公司部署笔记本的流程中已经有个创建这样一个本地管理员账户的步骤了。
本例中使用macross这个本地管理员账户,密码随意配置系统能接受的密码。 LAPS部署完成后这个账户的密码会被自动更新。
记住,一定是macross这个名称,这和下面步骤的GPO中指定的用户名保持一致;而且这个macross账户一定要加入本地管理员组。
Microsoft LAPS部署
新版本的Windows LAPS命令会写在步骤后面,如果你用的是Microsoft LAPS,那就不需要执行Windows LAPS的命令;同样,如果你是比WS2019还新的环境,你也不必要执行Microsoft LAPS的命令。
安装LAPS.MSI
(Windows Server 2019的DC不需要安装,也可以安装,如果安装了就需要使用旧版的Microsoft LAPS Powershell命令)
DC上安装LAPS.msi客户端管理插件,注意要把Management Tools全部安装上
扩展AD Schema
在DC上以管理员身份运行PowerShell,需要操作账户有架构管理员的权限(Schema Admin)
Import-Module AdmPwd.PS
Update-AdmPwdADSchema
#扩展2个新的属性:
#ms-Mcs-AdmPwd
#ms-Mcs-AdmPwdExpirationTime
# 新版本的Windows LAPS , Update-LapsADSchema 扩展ADSchema,此动作会为计算机账户扩展出6个属性:
#ms-LAPS-EncryptedDSRMPassword
#ms-LAPS-EncryptedDSRMPasswordHistory
#ms-LAPS-EncryptedPassword
#ms-LAPS-EncryptedPasswordHistory
#ms-LAPS-Password
#ms-LAPS-PasswordExpirationTime
配置LAPS管理员权限
#Microsoft LAPS命令
#允许Domain Admins组的用户读取CHINA OU下计算账户的LAPS密码
Set-AdmPwdReadPasswordPermission -Identity "ou=china,dc=lit,dc=local" -AllowedPrincipals "Domain Admins"#授权计算机账户自我管理,到期了自己更新密码
Set-AdmPwdComputerSelfPermission -OrgUnit "Ou=china,dc=lit,dc=local"
#新版的Windows LAPS命令
Set-LapsADReadPasswordPermission -Identity "OU=China,DC=lit,DC=local" -AllowedPrincipals "Domain Admins"
Set-AdmPwdComputerSelfPermission -OrgUnit "Ou=china,dc=lit,dc=local"
配置GPO
LAPS密码策略
新建一条Default-LAPS策略, 展开至:计算机配置\策略\管理模板\系统\LAPS,
- Password Settings: 这里配置密码长度和过期时间,默认是14位和30天
- Name of administrator account to manage: 用LAPS进行管理的本地账户,这个账户不需要已经存在,比如 LocalAdmin
- Do not allow password expiration time longer than required by policy: 不允许密码过期时间在别的地方配置的比在上面的Password Settings的更长。
- Enable local admin password management: 这是总开关,启用后才能生效
把Default-LAPS策略分配到需要管理的计算OU上,比如Computers OU或者企业中用于存放计算机账户的OU。
LAPS.MSI推送策略(针对老客户机)
发布LAPS.msi包给所有计算机,Win1123H2以下版本自动安装,重启生效。Win1123H2及以上自动拒绝安装。
-
打开组策略控制台gpmc.msc,计算机配置--策略--软件设置--软件安装--属性--添加共享的LAPS数据包位置,选择“分配”
-
将组策略发布给各Workstations OU,组策略名称为Install_LAPS_Client
-
要立即生效的话,客户机上刷新组策略gpupdate /force,重启后会静默安装一个Local Administrator Password Solution的应用。
查看本地密码
查看客户机的本地日志
在eventvwr.msc中,应用程序和服务日志\Microsoft\Windows\LAPS\Operational,可以看到LAPS客户端的动作
在DC上查询某台计算机的本地密码
Get-LapsADPassword -Identity laptop01 -AsPlainTextComputerName : laptop01
DistinguishedName : CN=laptop01,OU=Workstations,OU=China,DC=owl,DC=local
Account :
Password : (1XJd4Fed/z%o4
PasswordUpdateTime :
ExpirationTimestamp : 2025/1/12 21:13:28
Source : LegacyLapsCleartextPassword#尽管我在部署的是Microsoft LAPS,但是, 在域环境中的Windows 2019 Server下仍然可以使用Windows LAPS的命令。 对应的Windows LAPS命令是: Get-AdmPwdPassword -ComputerName shaitadm01
Get-LapsADPassword -Identity laptop01 -AsPlainText
Windows LAPS PowerShell与旧版的Microsoft LAPS PowerShell
旧版 Microsoft LAPS 包括一个名为 AdmPwd.PS 的 PowerShell 模块。你在搜索资料时,有可能会看到Microsoft LAPS的操作指南 ,那个指南的命令中会有Adm这样的字眼,比如Set-AdmPwdReadPasswordPermission
。这两个模块在功能方面有许多相似之处,但也存在许多差异。 下表提供两个模块之间的映射。 新旧命令产生的效果应该是相同的,只是有些格式上的差异,除了最后一个Update-LapsADSchema,新版本的会扩展6个不同的属性而老版本的只扩展2个,而对于客户机管理只有这2个起作用。
Windows LAPS cmdlet | 旧版 Microsoft LAPS cmdlet |
---|---|
Get-LapsAADPassword |
不适用 |
Get-LapsDiagnostics |
不适用 |
Find-LapsADExtendedRights |
Find-AdmPwdExtendedRights |
Get-LapsADPassword |
Get-AdmPwdPassword |
Invoke-LapsPolicyProcessing |
不适用 |
Reset-LapsPassword |
不适用 |
Set-LapsADAuditing |
Set-AdmPwdAuditing |
Set-LapsADComputerSelfPermission |
Set-AdmPwdComputerSelfPermission |
Set-LapsADPasswordExpirationTime |
Reset-AdmPwdPassword |
Set-LapsADReadPasswordPermission |
Set-AdmPwdReadPasswordPermission |
Set-LapsADResetPasswordPermission |
Set-AdmPwdResetPasswordPermission |
Update-LapsADSchema |
Update-AdmPwdADSchema |
微软官方资源
https://learn.microsoft.com/zh-cn/windows-server/identity/laps/laps-faq