我们已在生产环境中安装了多台运行 XP SP2 的 PC(还有几台运行 SP1 的 PC),我们希望本地管理员的密码在整个 OU 中保持一致。我能想到的唯一解决方案是使用 pspassword 更改所有密码,或者在 PC 上本地运行包含密码的脚本。
不幸的是,pspasswd 无法在不在线的计算机上工作,并且包含密码的本地脚本是不安全的。
还有其他可行的解决方案吗?如何解决密码更改时不在线的计算机的问题?
答案1
虽然没有组策略设置可以执行此操作,但有一个组策略首选项设置可以执行此操作。更多信息请参见此处:http://blogs.technet.com/askds/archive/2007/11/28/introducing-group-policy-preferences.aspx
编辑:另一个选择是使用 Steve Riley 和 Jesper Johannson(均曾就职于 Microsoft)在其著作《保护您的 Windows 网络》中编写的 Passgen 实用程序。它实际上为域中的每台计算机设置了一个唯一的本地管理员密码(这要安全得多……如果您拥有相同的密码,那么一台计算机被攻陷就意味着您域中的所有计算机都被攻陷)。描述如下:
在书中,我们建议您在企业中的每个本地管理员和服务帐户上保留单独的密码。当然,如果没有某种东西可以为您自动完成,这几乎是不可能管理的。这就是 Passgen 的作用。该工具根据已知输入(您定义的标识符和密码短语)生成唯一密码,远程设置这些密码,并允许您稍后检索它们。
Passgen 是免费的,你可以在这里获取:http://blogs.technet.com/steriley/archive/2008/09/29/passgen-tool-from-my-book.aspx
答案2
我不确定您在这里寻找什么,因为部署一个本地帐户密码更改解决方案会很困难,该解决方案将“以某种方式”适用于在线和离线计算机帐户。如果它是一个实际的脚本或 GP,那么这个过程将是让他们在“某个时间点”在线时获得密码更改。如果您想在某个时间范围内将其部署为一次性操作,则必须手动执行离线计算机。
我确信您可能已经阅读过这篇文章,但这里有一些在先前与您的问题相关的问题中提出的解决方案:https://serverfault.com/questions/23490/is-there-a-group-policy-that-would-push-a-new-user-name-and-password-to-all-local
答案3
我们使用 Powershell 脚本推送本地密码设置本地密码.ps1并使用获取服务器列表获取 OUComputerNames.ps1。
快速、简单,密码不必等待被找到。
Get-OUComputernames "OU=TheOU,DC=TheDomain" | Set-LocalPassword "TheAccount" "TheNewPassword"
但是这个解决方案不涵盖机器关闭的情况。虽然列出无法 ping 通的机器列表并稍后处理它们会很简单。
答案4
我将向您指出我的答案:是否存在组策略可以将新用户名和密码推送到网络上的所有本地机器?
您可以部署这样的脚本,并将权限设置为仅允许“域计算机”读取脚本(或者如果您愿意,可以设置更严格的组),并设置一个“陷阱门”组,如我所述,这样您就可以知道所有计算机何时处理了脚本,以便您可以删除它。该脚本将在主题计算机上本地执行,但只能由计算机的安全上下文访问。(但是,如果用户的计算机上有“管理员”,那么这将是一个问题。但是,如果他们有“管理员”,那么您遇到的问题比取消设置本地“管理员”密码更大。据推测,用户已经设置了方法来保证他们能够在您更改本地管理员密码后重新获得“管理员”权限……我会的!>微笑<)
在完全不同的方面,你可以做一些疯狂的事情,比如服务器端脚本:
- 轮询 AD 安全组以获取成员计算机名称
- 尝试对列表中的每台计算机执行 PING /“NET USE”/等操作,以确定它们是否“在线”
- 如果确定远程计算机处于“在线”状态,则对其执行“PSPASSWD”
- 从安全组中删除已成功完成密码重置的所有计算机
- 休眠一段时间,如果组内还没空,则重复此操作
这会让脚本在服务器上继续执行。