当前位置: 首页 > news >正文

本地管理员密码解决方案 Local Admin Password Solution (LAPS)

据调查,大多数的企业在部署AD域后,针对客户端电脑的本机管理员采用以下几种方式管理方式:

1. 禁用本机管理员,只使用域账登录;但存在的问题是:当电脑因故障脱离域,或是无法使用域账号登录时,电脑就无法登录,需要借助PE等工具启用本机管理员并设置密码。

2. 由IT人员在系统部署时设置一个统一的本机管理员密码(或是用GPO统一设置);但存在的问题是:如果密码一旦泄露或是被猜出,***、病毒将能取得电脑控制权,进行大规模的破坏,而且不能按要求定期修改。

3. 同方法2,但是分区域、分部门、或是分OU等,设置多个不同的管理员密码

4. 每台电脑设置一个不同的管理员密码,由IT人员记录在Excel或是笔记本上;但存在的问题是:每次要找某台电脑的管理员密码时,要去找文件或是记录,而且也不能定时修改!

针对以上问题,微软已经给我们提供了一个解决方案:本地管理员密码解决方案(LAPS),最近一个更新版本为2015/5/1,官方下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=46899;里面包含所需的安装程序及英文的原始技术文档。

此方案是将本地管理员密码存储在LDAP上,作为计算机账户的一个机密属性,配合GPO,实现自动定期修改密码、设置密码长度、强度等,然后配置某些指的账号,能查看存储的密码,如果用户需要,可以用PowerShell或指的工具查询密码,但对非授权用户,确无法获取,从而实现本机管理员的自动化管理。

LAPS使用两个LDAP属性来存储本地管理员凭证,这两个属性分别是ms-MCS-AdmPwd(存储密码)和ms-MCS-AdmPwdExpirationTime(存储过期时间)。

其实上面的下载地址已经给出了英文的详细安装配置方式,所以我只做一个大概的配置说明,首先下载后主要是需要用到两个MSI文件,LAPS.x86.msi\LAPS.x64.msi,分别是针对32位和64位两种系统,官方给出支持的操作系统包括:

Windows Server 2012 R2 Datacenter

Windows Server 2012 R2 Standard

Windows Server 2012 R2 Essentials

Windows Server 2012 R2 Foundation

Windows 8.1 Enterprise

Windows 8.1 Pro

Windows Server 2012 Datacenter

Windows Server 2012 Standard

Windows Server 2012 Essentials

Windows Server 2012 Foundation

Windows 8 Enterprise

Windows 8 Pro

Windows Server 2008 R2 Service Pack 1

Windows 7 Service Pack 1

Windows Server 2008 Service Pack 2

Windows Vista Service Pack 2

Microsoft Windows Server 2003 Service Pack 2

1 安装

有两个部分的安装、管理端计算机和被管理的客户端。

1.1 管理端计算机

先选一台电脑做为管理端,也可以直接在DC上(我是直接在DC上操作的) ,也可以在某台成员服务器或是客户端电脑,但需要满足以下条件:

- 系统要求:

Windows Vista 当前最近SP 或以上; x86 or x64

Windows 2003 当前最近 SP 或以上; x86 or x64 (不支持Itanium)

- 管理工具:

.NET Framework 4.0

PowerShell 2.0 或以上

双击你的电脑对应的MSI 安装程序,如:LAPS.x64.msi开始。

image

单击下一步。接受许可协议并单击下一步

对于第一次管理机,您应该启用管理工具的所有安装选择

image

单击下一步

image

单击安装.

image

单击完成.

1.2 安装被管理的客户端

针对需要管理的客户端电脑,需要安装管理端工具,使用的安装文件与管理端电脑一样,即:AdmPwd.x64.msi和AdmPwd.x86.msi,你可以用手动安装主、组策略、SCCM分发、登录脚本等多种方式来完成。

如果要用脚本来实现静默安装,命令如下:

msiexec /i <file location>\LAPS.x64.msi /quiet

msiexec /i <file location>\LAPS.x86.msi /quiet

你需要依你的环境修改 <file location>为你的网络路径,如:

msiexec /i \\server\share\LAPS.x64.msi /quiet

最简单的安装被管理客户端的方法是直接将AdmPwd.dll复制到目标计算机,并使用下面的命令注册dll文件(注意X86/X64使用的DLL文件不一样):

regsvr32.exe的AdmPwd.dll

附件LAPS目录为准备好的X86/X64的安装文件和DLL文件:

image

image

可以直接用批处理来完成,如我将LAPS目录COPY到NETLOGON目录下,然后用BAT文件来(附件包含此文件)完成,请将目录改为你当前环境的目录

@echo off

If exist %windir%\system32\AdmPwd.dll goto ldpsexit else

if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86

if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64

exit

:x64

copy \\szmaxcent.com\NETLOGON\LAPS\X64\AdmPwd.DLL %windir%\system32

regsvr32.exe AdmPwd.dll /s

exit

:x86

copy \\szmaxcent.com\NETLOGON\LAPS\X86\AdmPwd.DLL %windir%\system32

regsvr32.exe AdmPwd.dll /s

:ldpsexit

Exit

配置组策略,调用GPO即可:

image

 

2 AD准备

2.1 修改架构

活动目录架构需要扩展两个新的属性,用来存储每台电脑的本机管理员密和密码到期时间,

ms-Mcs — — AdmPwd — — 以明文形式存储的密码

ms-Mcs — — AdmPwdExpirationTime — — 存储时间重置密码

在更新架构前,首先需要导入的 PowerShell 模块的架构。用管理员打开PowerShell并使用命令: Import-module AdmPwd.PS

image

使用此命令更新架构:

Update-AdmPwdADSchema

image


注意: 如果你有 RODC 安装在环境中,您需要将属性 ms Mcs AdmPwd 的值复制到 RODC,你需要改变searchFlags的第10位属性值的MS-MCS-AdmPwd架构object到0(从当前值substract 512的searchFlags属性)请参阅 http://technet.microsoft.com/en-us/library/cc754794(v=WS.10).aspx


2.2 权限

在Active Directory基础结构通过允许每个属性访问列表(ACL)和执行密码存储保密属性提供了先进的工具来实现这个解决方案的安全模型。有四组的权利需要进行修改。

2.2.1 删除扩展权利

密码存储属于机密内容,如果对电脑所在的OU权限配置不对,可能会使非授权的用户能读取密码,所以从用户和组的权限中删除“All extended rights”属性的权限,不允许读取属性 ms-Mcs-AdmPwd 的值。

如果需要,请对每个放置电脑的OU重复以下操作,如果子OU且你禁用了权限继承,则每个子OU也要做相同的配置。

1. 打开ADSIEdit

2. 在你需要配置的计算机所在OU上点击右键、属性

3. 单击安全选项卡

4. 单击高级

5. 选择不想要能读取密码的组或用户,然后单击编辑。

6. 取消选中所有扩展的权限

image

重要: 这将删除所有扩展的权利,不仅 CONTROL_ACCESS 权利,因此请确保所有角色将都保留其日常工作所需的所有必要的权限。

要快速查找已经扩展安全权限的OU,可以使用PowerShell命令。前提是你有运行导入模块AdmPwd.PS,在Powershell中输入:

Find-AdmPwdExtendedrights -identity :<OU name> | Format-Table

image

2.2.2 添加权限

所有计算机帐户自己必要的有写入ms-Mcs-AdmPwdExpirationTime 和 ms-Mcs-AdmPwd属性的权限,是为了让自己可以更新的管理本地管理员密码的密码和过期时间戳。需要用导入了AdmPwd.PS模块的powershell:

Set-AdmPwdComputerSelfPermission -OrgUnit <name of the OU to delegate permissions>

image

针所有需要的OU重复以上步骤,包括禁止权限继承的子OU。

2.2.3 添加用户权限

将允许读取本机管理员密码权限的用户和组添加CONTROL_ACCESS (extended right) ms-Mcs-AdmPwd 属性,使指的用户和组可以查看到密码。

Set-AdmPwdReadPasswordPermission -OrgUnit <name of the OU to delegate permissions> -AllowedPrincipals <users or groups>

image

与前面命令中相同的OU名

注意: 你可以在同一命令中使用多个组和用户,中间用逗号分开,示例:    
Set-AdmPwdReadPasswordPermission -OrgUnit Servers -AllowedPrincipals contoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins

将允许写入本机管理员密码权限的用户和组添加ms-Mcs-AdmPwdExpirationTime 属性,使指定的用户和组有重设置管理员密码的权限。

Set-AdmPwdResetPasswordPermission -OrgUnit <name of the OU to delegate permissions> -AllowedPrincipals <users or groups>

image

与前面命令中相同的OU名

注意: 你可以在同一命令中使用多个组和用户,中间用逗号分开,示例:    
Set-AdmPwdResetPasswordPermission -OrgUnit Servers -AllowedPrincipals contoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins


3 配置组策略

3.1 更改组策略设置

针对需要启用本机管理员密码的客户端所在OU,配置组策略,

image

这些设置位于计算机配置 \ 管理模板\LAPS 下。

image

 

3.2 启用本地管理员密码管理

本地管理员帐户密码的管理必须启用,以便为CSE可以开始对其进行管理:

image

3.3 密码参数

默认使用大写字母+小写字母+数字+特殊字条的复杂密码,长度14个字符,每30天修改密码。当然这里需要配合你现有的域密码策略,也可以自已修改。

image


3.3.1 管理员帐户名称

如果你现有的GPO或是其它方案使用了自定义的本地管理员帐号,这里必须启用,并指定为你自定义的管理员账号名称。

image

3.4 防止密码时间长于计划重置时间

如果您不希望允许设置管理员帐户的计划密码到期时间长于密码最长使用期限,你可以使用这个选项

image


4 管理客户端

4.1 查看密码设置

一旦所有的设置完成,并在客户端上已刷新组策略,你可以在计算机对象的属性中看到新的设置。

image

密码是以纯文本形式存储的。到期日期存储为自 1601 年 1 月 1 日 0 时到被存储时间以后至今的间隔的数(100 毫微秒)。时间总是以格林威治标准时间 (GMT) 存储在 Active Directory 中。如果你想手动转换,请使用此命令:

w32tm /ntte <number you want to convert>

image

也有一个图形界面可用。如果你想在哪台电脑上方便的查看密码,可以在安装界面中选择:Fat Client UI

image

程序会安装在C:\Program Files\LAPS\AdmPwd.UI.exe,并出现在菜单中,如下图:

image

或是在 Windows 7 上。

image

启动界面,输入客户端名称,并单击搜索.

image

也可以使用 PowerShell 的密码。

Get-AdmPwdPassword -ComputerName <computername>

image

如果未被授权的账号想尝试查看本地管理员密码,当他打开 GUI 界面时,密码不会显示。

image

如果他们已安装 RSAT 工具并运行 Active Directory 用户和计算机 (ADUC) 若要查看的密码,它将显示为< 未设置 >.

image

此信息并不是因为扩展的权限被删除,而是这些用户和组没有被授予的权限查看。

4.2 重置密码

要手动重置密码,只需单击GUI 工具中的设置按钮。刷新组策略运行时,将重置密码。

你也可以设置密码过期时间,在下面的New Expration Time中选择或是输入所需的到期日期/时间。  
image

您也可以使用 PowerShell重置密码:

Reset-AdmPwdPassword -ComputerName <computername> -WhenEffective <date time>

相关文章:

  • 自适应电脑、手机和iPad的网页设计方法
  • 团队博客作业Week4 --- 学霸网站--NABC
  • Effective Java
  • 虚拟机克隆后网络配置
  • 解决 居中 问题
  • 提交(post)xml文件给指定url的2种方法
  • Why NO to: MySQL, Symfony, CakePHP, Smarty, etc.
  • grub引导程序
  • 不使用(a+b)/2这种方式,求两个数的平均值
  • 可以动态添加图片的轮播插件
  • nginx rewrite模块探究与实验
  • SpringMVC(六):Spring 整合quartz作业调度框架
  • ecshop中那些有意思的代码
  • 查看死锁原因 /data/anr/traces.txt
  • 如何删除 SQL Server 表中的重复行
  • [PHP内核探索]PHP中的哈希表
  • 时间复杂度分析经典问题——最大子序列和
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS数组方法汇总
  • PaddlePaddle-GitHub的正确打开姿势
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Terraform入门 - 3. 变更基础设施
  • 通过git安装npm私有模块
  • 微信小程序--------语音识别(前端自己也能玩)
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ![CDATA[ ]] 是什么东东
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $.ajax中的eval及dataType
  • (done) 两个矩阵 “相似” 是什么意思?
  • (LeetCode 49)Anagrams
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (多级缓存)缓存同步
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)visual stdio 书签功能介绍
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .Net Remoting常用部署结构
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .Net中wcf服务生成及调用
  • [.net]官方水晶报表的使用以演示下载
  • [2016.7 day.5] T2
  • [2018-01-08] Python强化周的第一天
  • [android] 手机卫士黑名单功能(ListView优化)
  • [bzoj4240] 有趣的家庭菜园
  • [C++基础]-初识模板
  • [docker]docker网络-直接路由模式
  • [Electron]ipcMain.on和ipcMain.handle的区别
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [HNOI2018]排列
  • [HTTP]HTTP协议的状态码