据调查,大多数的企业在部署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开始。
单击下一步。接受许可协议并单击下一步
对于第一次管理机,您应该启用管理工具的所有安装选择
单击下一步.
单击安装.
单击完成.
1.2 安装被管理的客户端
针对需要管理的客户端电脑,需要安装管理端工具,使用的安装文件与管理端电脑一样,即:AdmPwd.x64.msi和AdmPwd.x86.msi,你可以用手动安装主、组策略、SCCM分发、登录脚本等多种方式来完成。
如果要用脚本来实现静默安装,命令如下:
msiexec /i
msiexec /i
你需要依你的环境修改
msiexec /i \\server\share\LAPS.x64.msi /quiet
最简单的安装被管理客户端的方法是直接将AdmPwd.dll复制到目标计算机,并使用下面的命令注册dll文件(注意X86/X64使用的DLL文件不一样):
regsvr32.exe的AdmPwd.dll
附件LAPS目录为准备好的X86/X64的安装文件和DLL文件:
可以直接用批处理来完成,如我将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即可:
2 AD准备
2.1 修改架构
活动目录架构需要扩展两个新的属性,用来存储每台电脑的本机管理员密和密码到期时间,
ms-Mcs — — AdmPwd — — 以明文形式存储的密码
ms-Mcs — — AdmPwdExpirationTime — — 存储时间重置密码
在更新架构前,首先需要导入的 PowerShell 模块的架构。用管理员打开PowerShell并使用命令: Import-module AdmPwd.PS
使用此命令更新架构:
Update-AdmPwdADSchema
注意: 如果你有 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. 取消选中所有扩展的权限
重要: 这将删除所有扩展的权利,不仅 CONTROL_ACCESS 权利,因此请确保所有角色将都保留其日常工作所需的所有必要的权限。
要快速查找已经扩展安全权限的OU,可以使用PowerShell命令。前提是你有运行导入模块AdmPwd.PS,在Powershell中输入:
Find-AdmPwdExtendedrights -identity :
2.2.2 添加权限
所有计算机帐户自己必要的有写入ms-Mcs-AdmPwdExpirationTime 和 ms-Mcs-AdmPwd属性的权限,是为了让自己可以更新的管理本地管理员密码的密码和过期时间戳。需要用导入了AdmPwd.PS模块的powershell:
Set-AdmPwdComputerSelfPermission -OrgUnit
针所有需要的OU重复以上步骤,包括禁止权限继承的子OU。
2.2.3 添加用户权限
将允许读取本机管理员密码权限的用户和组添加CONTROL_ACCESS (extended right) ms-Mcs-AdmPwd 属性,使指的用户和组可以查看到密码。
Set-AdmPwdReadPasswordPermission -OrgUnit
与前面命令中相同的OU名
注意: 你可以在同一命令中使用多个组和用户,中间用逗号分开,示例:
Set-AdmPwdReadPasswordPermission -OrgUnit Servers -AllowedPrincipals contoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins
将允许写入本机管理员密码权限的用户和组添加ms-Mcs-AdmPwdExpirationTime 属性,使指定的用户和组有重设置管理员密码的权限。
Set-AdmPwdResetPasswordPermission -OrgUnit
与前面命令中相同的OU名
注意: 你可以在同一命令中使用多个组和用户,中间用逗号分开,示例:
Set-AdmPwdResetPasswordPermission -OrgUnit Servers -AllowedPrincipals contoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins
3 配置组策略
3.1 更改组策略设置
针对需要启用本机管理员密码的客户端所在OU,配置组策略,
这些设置位于计算机配置 \ 管理模板\LAPS 下。
3.2 启用本地管理员密码管理
本地管理员帐户密码的管理必须启用,以便为CSE可以开始对其进行管理:
3.3 密码参数
默认使用大写字母+小写字母+数字+特殊字条的复杂密码,长度14个字符,每30天修改密码。当然这里需要配合你现有的域密码策略,也可以自已修改。
3.3.1 管理员帐户名称
如果你现有的GPO或是其它方案使用了自定义的本地管理员帐号,这里必须启用,并指定为你自定义的管理员账号名称。
3.4 防止密码时间长于计划重置时间
如果您不希望允许设置管理员帐户的计划密码到期时间长于密码最长使用期限,你可以使用这个选项
4 管理客户端
4.1 查看密码设置
一旦所有的设置完成,并在客户端上已刷新组策略,你可以在计算机对象的属性中看到新的设置。
密码是以纯文本形式存储的。到期日期存储为自 1601 年 1 月 1 日 0 时到被存储时间以后至今的间隔的数(100 毫微秒)。时间总是以格林威治标准时间 (GMT) 存储在 Active Directory 中。如果你想手动转换,请使用此命令:
w32tm /ntte
也有一个图形界面可用。如果你想在哪台电脑上方便的查看密码,可以在安装界面中选择:Fat Client UI
程序会安装在C:\Program Files\LAPS\AdmPwd.UI.exe,并出现在菜单中,如下图:
或是在 Windows 7 上。
启动界面,输入客户端名称,并单击搜索.
也可以使用 PowerShell 的密码。
Get-AdmPwdPassword -ComputerName
如果未被授权的账号想尝试查看本地管理员密码,当他打开 GUI 界面时,密码不会显示。
如果他们已安装 RSAT 工具并运行 Active Directory 用户和计算机 (ADUC) 若要查看的密码,它将显示为< 未设置 >.
此信息并不是因为扩展的权限被删除,而是这些用户和组没有被授予的权限查看。
4.2 重置密码
要手动重置密码,只需单击GUI 工具中的设置按钮。刷新组策略运行时,将重置密码。
你也可以设置密码过期时间,在下面的New Expration Time中选择或是输入所需的到期日期/时间。
您也可以使用 PowerShell重置密码:
Reset-AdmPwdPassword -ComputerName