Windows Server LAPS 本地密码管理方案

LAPS全称是Local Administrator Password Solution,是微软推出的本地密码管理方案。现有网络上的利用组策略来修改本地管理员密码的全部失效,具体原因看这里《MS14-025:组策略首选项中的漏洞可能允许特权提升》组策略漏洞的公告是2014年5月13日发布后续更新了KB2928120补丁后组策略就失效。

LAPS是2015年6月推出的,最后更新日期是2018年6月。目前的版本是6.2,微软官方下载地址及安装指导《LAPS》为英文版,暂时没有其他语言版本。由于我工作中的需要,目前我在100+的实际生产环境中已经部署完毕,LAPS可以设置本地管理员的密码有效期,到期自动更新密码并且每台电脑的管理员密码都不一样。大大的减少了风险。在虚拟环境中又部署了一遍,给有需要的朋友参考。

0x01 测试说明

ServerCPZ-01PZ-02
Server 2019Win10 LTSC 2019Win10 LTSC 2019
PDC域客户端域客户端
PDC建立:计算机 OU,PWAdmin OU,PWAdmin组,PWAdmins用户;
将PZ-01、PZ-02从 Computers OU;移动到 计算机 OU;PWAdmin组,PWAdmins用户,移动到 PWAdmin OU
PWAdmins用户、PZ-01、PZ-02加入到PWAdmin组

0x02 微软下载

Local Administrator Password Solution (LAPS)》点击Download

LAPS分x64和x86根据自己的系统选择,LAPS_OperationsGuide为安装指导文档(英文)

0x03 安装LAPS

在域控制器(PDC)上安装LAPS.x64。点击下一步安装。

又是霸王条款,没得选择

除了第一项其他的都装上,第一项是安装在客户端上的,如果你把第一项安装在PDC上那么很高兴的告诉你有的玩了,等你设置完策略后域管理员的密码会被覆盖。所以切记没有特殊需要一定不要在PDC上安装第一项,除非你已经规划好了查看账号密码的权限组

点击 Insstall 开始安装

Finish 完成安装

0x04 扩展架构

导入LAPS PowerShell 模块,扩展AD架构增加LAPS扩展;

Import-Module AdmPwd.PS    #导入LAPS PowerShell 模块
Update-AdmPwdADSchema    #扩展AD架构增加LAPS扩展

0x05 编辑权限

打开ADSI编辑器,如果你不想让某些用户组查看到LAPS的扩展属性,可以通过此步骤来取消这个用户组的扩展权限;此步骤也可以忽略但是可能存在一些风险,请自行评估;

连接到

默认命名上下文

在“计算机”OU上右键属性

点击高级

点击禁用继承

选择将已继承的权限转换为此对象的显式曲线

选择一个不想让它读取到扩展的用户点击编辑

去掉所有扩展权限的✔

0x06 创建OU、组、用户

创建PWAdmin OU、创建PWAdmin组、创建PWAdmins用户,并将PWAdmins用户加入到PWAdmin组;PWAdmins用户可以不用创建,根据自己需求;

将PZ-01、PZ-02加入到PWAdmin组并移动到计算机 OU

0x07 扩展权限查询

Find-AdmPwdExtendedrights -identity 计算机 | Format-Table    #查询“计算机”这个OU有哪些用户组有扩展权限,从下面可以看出一个system和域管理员组可以访问这个OU的扩展权限;

0x08 属性权限

设置“计算机”这个OU上的电脑拥有扩展属性权限,ms-Mcs-AdmPwd - 以明文形式存储密码;ms-Mcs-AdmPwdExpirationTime - 存储重置密码的时间。

Set-AdmPwdComputerSelfPermission -OrgUnit 计算机    #计算机这个OU的电脑对上面两个扩展拥有读写权限;

0x09 读取权限

设置允许读取“计算机”这个OU上的管理员账号和密码的用户组。Set-AdmPwdReadPasswordPermission -OrgUnit 计算机 -AllowedPrincipals PWAdmin #设置PWAdmin用户组可以读取“计算机”这个OU里面的本地管理员账号和密码

0x10 重置权限

设置允许重置“计算机”这个OU上的管理员账号和密码的用户组。Set-AdmPwdResetPasswordPermission -OrgUnit 计算机 -AllowedPrincipals PWAdmin #设置PWAdmin用户组可以重置“计算机”这个OU里面的本地管理员账号和密码

0x11 配置GPO

让客户端通过GPO来更新本地管理员的账号和密码

新建LAPS的GPO并应用到计算机这个OU

编辑LAPS这个GPO点击策略 → 管理模板:从本地计算机 → LAPS

我只用到到了第一条和第四条,其他的根据情况自行决定;

  1. Password Settings:配置密码参数
    密码复杂性:生成新密码时使用哪些字符;默认值:大字母+小写字母+数字+特殊字符;
    密码长度: 最少:8个字符;最大值:64个字符;默认值:14个字符
    密码年龄(天):最少:1天;最长:365天;默认值:30天
  2. Name of administrator account to manage:本地管理员名称管理
    管理员帐户名称:要为其管理密码的本地帐户的名称。
    使用内置管理员帐户时请勿配置。 即使重命名,内置的管理员帐户也会由知名的SID自动检测
    在使用自定义本地管理员帐户时进行配置
  3. Do not allow password expiration time longer than required by policy:密码到期时间可能比“密码设置”策略所需的时间长
    启用此设置时,不允许计划密码到期时间长于“密码设置”策略规定的密码时间。 当检测到此类到期时,立即更改密码并根据策略设置密码到期。
    禁用或未配置此设置时,密码到期时间可能比“密码设置”策略所需的时间长。
  4. Enable local admin password management:启用本地管理员帐户的密码管理
    启用本地管理员帐户的密码管理
    如果启用此设置,则管理本地管理员密码
    如果禁用或未配置此设置,则不管理本地管理员密码

0x12 域客户端安装

域客户端安装有很多方法,可以手动安装,可以通过策略开机启动;域客户端只需要安装第一项就可以了,其他的选项没用,就算装上去了。也与用户所在的用户组也没有权限读取本地账号和密码;

安装完成后,应用和功能会多出一项“Local Administrator Password Solution”重启电脑让AD的策略下发后验证

0x13 验证LAPS

可以通过PowerShell、LAPS UI、计算机属性来查看本地管理员的密码:

Get-AdmPwdPassword -ComputerName <computername>    #PowerShell查看本地管理员密码,<computername>为本地计算机名称;

想了解更多的关于LAPS的内容,建议认真阅读指导文档,或者参考以下这两个链接:

Microsoft Local Administrator Password Solution (LAPS)

Microsoft LAPS Security & Active Directory LAPS Configuration Recon

相关推荐
python ERROR: Command errored out with exit status 1:
Windows Server 2016 搭建 SMB 共享文件
Windows Server 2019 域环境搭建 SMB 共享文件服务
Parallels Desktop 15.1.3