出版:2015年6月 shell
上次更新时间:2018年6月 windows
做者: api
TomAusburne,微软 安全
JiriFormacek,微软 服务器
摘要:本文档总结了本地管理员密码解决方案(LAPS)的基本操做过程 网络
版权全部©2015MicrosoftCorporation。版权全部。 架构
1安装 dom
1.1管理计算机 编辑器
1.2托管客户 ide
安装分为两部分:管理计算机(服务器端)和要管理的客户端。
二进制文件和相关文件的均已经打包为MSI软件包。这将安装如下组件:
1.GPOCSE:必须存在于每一个托管计算机上
2.管理工具:
Ø 胖客户端用户界面
Ø powershell模块admpwd.ps
Ø 组策略编辑器管理模板
默认设置是仅安装CSE。管理工具按需安装。
文件使用:
1.胖客户端用户界面的安装已完成到文件夹:
%ProgramFiles%\laps
admpwd.ui.exe
admpwd.utils.config
admpwd.utils.dll
2.powershell模块安装到文件夹:
%windir%\system32\windowspowershell\v1.0\modules\admpwd.ps
admpwd.ps.dll
admpwd.ps.format.ps1xml
admpwd.ps.psd1
admpwd.utils.config
admpwd.utils.dll
%Windir%\system32\WindowsPowershell\v1.0\modules\admpwd.ps\en-us
admpwd.ps.dll-help.xml
3.CSE的安装已完成到文件夹:
%ProgramFiles%\laps\cse
admpwd.dll
4.组策略文件的安装已完成到文件夹:
%windir%\policyDefinitions
admpwd.admx
%windir%\policyDefinitions\en-us\ADMPWD.ADML
双击x86或x64位(laps.<platform>.msi)的MSI安装程序开始。
单击“下一步”。接受许可协议并单击“下一步”
对于第一台管理计算机,应启用管理工具的全部安装选项
单击“下一步”。
单击“安装”。
单击“完成”。
此安装使用与管理计算机上相同的安装文件admpwd.setup.x64.msi和admpwd.setup.x86.msi。可使用多种方法在客户机上安装/更新/卸载它们,包括使用组策略推送安装、sccm、登陆脚本、手动安装等。
若是要编写脚本,可使用此命令行执行静默安装:
msiexec/i<filelocation>\laps.x64.msi/quiet或
msiexec/i<filelocation>\laps.x86.msi/quiet
只需将<filelocation>更改成本地或网络路径。
示例:msiexec/i\\server\share\laps.x64.msi/quiet
托管客户端的另外一种安装方法是将admpwd.dll复制到目标计算机并使用如下命令:
regsvr32.exeadmpwd.dll
注意:若是仅经过注册dll进行安装,则它不会显示在程序和功能中,以下所示。
安装后,您能够在程序和功能中看到它。
须要用两个新属性扩展活动目录架构,这些属性存储每台计算机的托管本地管理员账户的密码和密码过时时间戳。这两个属性都被添加到计算机类的may-contain属性集中。
ms-Mcs-AdmPwd以明文形式存储密码
ms-Mcs-AdmPwdExpirationTime存储重置密码的时间
要更新架构,首先须要导入powershell模块。打开管理powershell窗口并使用如下命令:
Import-moduleAdmPwd.PS
使用如下命令更新架构:
Update-AdmPwdADSchema
注意注:若是您在环境中安装了rodc,而且须要将属性ms-Mcs-AdmPwd的值复制到rodc,则须要将ms-Mcs-AdmPwd架构对象的searchflags属性值的第10位更改成0(从searchflags属性的当前值减去512)。有关向RODC筛选属性集添加属性或从中删除属性的详细信息,请参阅。http://technet.microsoft.com/en-us/library/cc754794(v=ws.10).aspx网站
经过容许按属性访问列表(acl)和实现密码存储的机密属性,activedirectory基础结构为实现此解决方案的安全模型提供了高级工具。有四组权限须要修改。
2.2.1删除扩展权限
要限制特定用户和组查看密码的能力,您须要从不容许读取属性ms-Mcs-AdmPwd值的用户和组中删除“全部扩展权限”。这是必需的,由于“全部扩展权限/权限”权限还授予读取机密属性的权限。
2.2.1.1继承权限
若是要对全部计算机执行此操做,则须要对包含这些计算机的每一个ou重复如下步骤。除非已禁用权限继承,不然不须要对已处理OU的子容器执行此操做。
1.打开adsiedit.msc
2.右键单击包含要在其上安装此解决方案的计算机账户的OU,而后选择“属性”。
3.单击“安全”选项卡
4.单击“高级”
5.选择不想读取密码的组或用户,而后单击“编辑”。
6.取消选中全部扩展权限
重要提示:这将删除全部扩展权限,而不只仅是控制访问权限,所以请确保全部角色将保留其正常工做所需的全部必要权限。
若要快速查找哪些安全主体对ou具备扩展权限,可使用powershell命令。若是这是一个新窗口,则可能须要运行Import-moduleAdmPwd.PS。
Find-AdmPwdExtendedrights-identity<OUname>|Format-Table
若是输出因具备权限的受信者数太长而被截断,请关注特定的OU并运行:
Find-AdmPwdExtendedrights-identityMemphis|Format-list
ObjectDN:OU=memphis,OU=members,DC=herbertm01,DC=lab
ExtendedRightHolders:{NTAUTHORITY\SYSTEM,HERBERTM01dom\DomainAdmins,contoso-dom\Member-HelpDesk1-Memhpis}
2.2.1.2直接权限
“全部扩展权限”也能够经过计算机对象上的直接、非继承的ACEs设置。这多是由客户手动完成的,也多是经过脚本或配置系统完成的。
具备扩展权限访问权限的ACEs的第二个公共源是计算机的默认架构。默认状况下,它包含具备彻底控制权的“账户操做员”组,该组还将授予读取本地管理员密码的足够权限:
在委派的管理环境中,账户运算符仅用于域用户账户,不该授予计算机任何或不多的权限,您可能须要检查是否更改了此ACE,甚至从架构默认值中删除了此ACE。
您还须要开发一个解决方案,将此ACE从全部由LAPS管理的计算机中删除。
2.2.2添加机器权限
必须将对全部计算机账户的ms-Mcs-AdmPwdExpirationTime和ms-Mcs-AdmPwd属性的写入权限添加到自建账户。这是必需的,以便计算机能够更新本身的托管本地管理员密码的密码和过时时间戳。这是使用powershell完成的。若是这是一个新窗口,则可能须要运行Import-moduleAdmPwd.PS
Set-AdmPwdComputerSelfPermission-OrgUnit<要委派权限的OU的名称>
对于包含在解决方案范围内且不是已处理容器的子容器的计算机账户的任何其余OU,重复此过程。
2.2.3添加用户权限
将计算机账户的“ms-Mcs-AdmPwd上的控制访问权限(扩展权限)”属性添加到容许读取托管计算机上托管本地管理员账户的存储密码的组或用户。
Set-AdmPwdReadPasswordPermission-OrgUnit<ou的名称以委派权限>-AllowedPrincipals<users或groups>
使用与前一个命令中相同的–orgunit名称。
注意:能够在同一命令中使用多个组和用户,并用逗号分隔。
示例:Set-AdmPwdReadPasswordPermission-OrgUnitServers-AllowedPrincipalscontoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins
将计算机账户的ms-Mcs-AdmPwdExpirationTime属性上的写权限添加到容许在受管计算机上强制重置受管本地管理员账户密码的组或用户。
Set-AdmPwdResetPasswordPermission-OrgUnit<ou的名称以委派权限>-AllowedPrincipals<users或groups>
使用与前面命令中相同的–orgunit名称。
注意:能够在同一命令中使用多个组和用户,并用逗号分隔。
示例:Set-AdmPwdResetPasswordPermission-OrgUnitServers-AllowedPrincipalscontoso\Administrator,contoso\HelpDesk,contoso\PwdAdmins
这些设置位于“计算机配置\管理模板\LAPS”下。
必须启用本地管理员账户的密码管理,以便CSE能够开始管理它:
默认状况下,此解决方案使用密码最大密码复杂度为14的字符,并每30天更改密码。您能够经过编辑组策略来更改值以知足您的须要。
您能够根据须要更改单个密码设置。
3.3.1管理员账户名
若是已决定管理自定义本地管理员账户,则必须在组策略中指定其名称。
注:使用内置管理账户时不要进行配置,即便已重命名该账户。该账户由已知的SID自动检测。请在使用自定义本地管理账户时进行配置。
若是您不想让管理账户的计划口令到期时间超过最大密码期限,您能够在GPO中执行:
配置完全部内容并在客户端上刷新组策略后,您能够查看计算机对象的属性并查看新设置。
密码以纯文本存储。失效日期存储为从1601年1月1日0小时到存储的日期/时间之间通过的100纳秒间隔数。时间始终存储在活动目录中的格林威治标准时间(GMT)中。若是要手动转换,请使用如下命令:
w32tm/ntte<要转换的数字>
还有一个图形界面可用。在但愿可以轻松检索密码的计算机上安装程序时,只需选择胖客户端ui选项。
要运行的程序是C:\ProgramFiles\laps\admpwd.ui.exe。它将出如今菜单中,以下所示:
或者在Windows7上。
启动界面,输入客户端名称并单击搜索。
您还可使用powershell获取密码。
Get-AdmPwdPassword-ComputerName<计算机名称>
若是未被授予查看本地管理员密码权限的用户尝试访问该密码,会发生什么状况?若是要访问gui界面,则不会显示密码。
若是他们安装了RSAT工具并运行“AD用户和计算机”(aduc)来查看密码,则密码将显示为<notset>。
此信息不可见,由于扩展的权限已被删除,只有某些我的和组被授予查看此信息的权限。
要手动重置密码,只需单击lapsui工具中的set按钮。运行组策略刷新时,将重置密码。
您还能够为未来计划密码过时时间。为此,请在相应字段中输入所需的到期日期/时间。
您还可使用powershell重置密码。
Reset-AdmPwdPassword-ComputerName<computername>-WhenEffective<datetime>
此解决方案有多种日志记录选项,可用于故障排除。
5.1.1客户记录
CSE将全部事件记录在本地计算机的应用程序事件日志中。日志消息仅限英语,但能够本地化,或在必要时添加其余语言。
记录的事件量可经过如下注册表注册表注册表项值进行配置:
hkey_local_machine\software\microsoft\windowsnt\currentversion\winlogon\gpextensions\{d76b9641-3288-4f75-942d-087de603e3ea}}\extensiondebuglevel
默认状况下,此值不存在,必须添加。
可能值以下:
价值 |
意义 |
0 |
静默模式;仅记录Error 若是没有发生Error,则不会记录有关CSE活动的信息 这是默认值 |
1 |
记录Error和警告 |
2 |
详细模式,记录全部内容 |
5.1.2事件标识
CSE报告的全部事件的事件源始终是“admpwd”。下表总结了事件日志中可能发生的事件:
身份证件 |
严重程度 |
说明 |
评论 |
2 |
Error |
没法从AD获取计算机对象。Error%1 |
若是CSE没法链接到AD中本地计算机的计算机账户,则会记录此事件。 %1是函数返回的Error代码的占位符,该函数检索本地计算机名,将其转换为DN并链接到由DN指定的对象 |
3 |
Error |
没法获取本地管理员账户。Error%1 |
若是CSE没法链接到托管的本地管理员账户,则会记录此事件。 %1是函数返回的Error代码的占位符,该函数检测本地管理员账户的名称并链接到该账户 |
4 |
Error |
没法从AD中的计算机账户获取密码过时时间戳。Error%1。 |
CSE没法读取AD中计算机账户的MSMCSADMPwdexPirationTime值时记录此事件 %1是函数返回的Error代码的占位符,该函数读取属性值并将该值转换为无符号的int64类型 |
5 |
Error |
根据本地密码策略验证新的本地管理密码失败。Error%1。 |
当针对本地密码策略的密码验证失败时,会记录此事件。 |
5 |
信息 |
新本地管理密码的验证已经过。 |
根据本地密码策略成功验证密码时记录此事件 |
6 |
Error |
没法重置本地管理员密码。Error%1 |
若是CSE没法重置托管本地管理员账户的密码,则会记录此事件。 %1是netusersetinfo()api返回的Error的占位符 |
7 |
Error |
没法将更改的密码写入AD。Error%1。 |
若是CSE没法向AD报告新密码和时间戳,则会记录此事件。 %1是LDAPmod_s调用返回的Error代码的占位符 |
10 |
警告 |
计算机的密码过时时间太长(%1天)。正在重置密码。 |
若是CSE检测到计算机的密码过时时间超过了策略容许的时间,而且启用了防止密码过时时间过长的保护,则会记录此事件 |
11 |
信息 |
如今尚未必要更改密码。要更改的天数:%1。 |
此事件在CSE检测到还没有重置密码时记录 %1是24小时间隔数的占位符,该间隔数在密码重置前保持不变 |
12 |
信息 |
本地管理员密码已更改。 |
CSE重置托管本地管理员账户的密码后记录此事件 |
13 |
信息 |
本地管理员密码已报告给AD。 |
此事件在CSE向AD报告密码和时间戳后记录 |
14 |
信息 |
已成功完成 |
此事件在CSE执行全部必需任务并即将完成后记录 |
15 |
信息 |
开始处理 |
当CSE开始处理时记录此事件 |
16 |
信息 |
退出管理账户管理,退出 |
未启用管理账户管理时记录此事件 |
注意:一般,全部严重性为“Error”的事件都被阻塞。当出现任何Error时,不执行其余任务,CSE终止处理。
症状:客户端获取事件ID7,在事件日志中,“没法将更改的密码写入AD。Error0x80070032”。
解决方案:客户端不在托管OU中。将其移动到托管OU或运行powershell命令将计算机权限添加到客户端所在的OU。
症状:导入admpwd.ps模块时,会出现错误“Import-Module:没法加载或修改文件”file:///c:\windows\system32\windowspowershell\v1.0\modules\admpwd.ps\admpwd.ps.dll'或其依赖项之一。此程序集是由比当前加载的运行时新的运行时生成的,没法加载。“
解决方案:您须要容许powershell加载.netframework4。要容许此操做,您须要更改powershell.exe.config以包含如下内容:
<?xmlversion="1.0"?>
<configuration>
<startupuseLegacyV2RuntimeActivationPolicy="true">
<supportedRuntimeversion="v4.0.30319"/>
<supportedRuntimeversion="v2.0.50727"/>
</startup>
</configuration>
症状:已安装全部内容,但客户端上没有更新密码,事件日志中也没有记录任何内容。
解决方案:还没有使用应用于客户端的组策略启用CSE。将策略“启用本地管理员密码管理”设置为“启用”
症状:运行架构更新后,新属性不会显示在计算机属性中。
解决方案:若是架构更新的状态成功,则可能遇到复制问题或延迟。在较大的环境中,此属性填充可能须要一些时间来传播。
症状:还没有明确授予权限的用户仍能够看到密码。
解决方案:这一般是由于没有从组和用户中删除“全部扩展权限”权限。检查有关计算机上的有效权限。
使用powershellcmdlet能够审核成功查询和读取计算机的本地管理员密码的用户。若是这是一个新窗口,则可能须要运行Import-moduleAdmPwd.PS
Set-AdmPwdAuditing–OrgUnit:<nameofOUonwhichyouwanttosetuptheauditing>-AuditedPrincipals::<identificationofusers/groupswhoseaccesstopasswordshallbeaudited>
成功读取密码时,域控制器的安全日志中将记录4662事件。
您将注意到schemaIDGUID反映在事件属性中。