使用 C# 在域上保留具有快照的虚拟机
Posted
技术标签:
【中文标题】使用 C# 在域上保留具有快照的虚拟机【英文标题】:Keep virtual machines with snapshots on domain using C# 【发布时间】:2021-03-22 18:45:04 【问题描述】:我想在域上保留带有快照的虚拟机? 目前,如果我定期关闭机器或恢复到以前的快照,机器往往会在大约 30 天后退出域。
我正在考虑在启动时运行一个小应用程序\服务来检查机器是否在域中,如果没有将其添加回来。
如果可能的话,我想通过 C# 来使域管理员密码更安全,我可以这样做吗?
我发现的唯一可能的方法是通过 PowerShell 执行此操作,但我必须手动传递域用户名\密码。
Test-ComputerSecureChannel -Repair -Credential
这发生在使用 Hyper-V 和 VMware 构建的机器上。
感谢您的帮助
【问题讨论】:
据我所知,虚拟机不应该像这样放弃域,不。当您说恢复到较旧的快照时,是在将它们添加到域之前的快照吗?您是否重复使用 VM 名称 - 他们是否有可能因为添加了具有相同名称的不同 VM 覆盖其注册而离开域? 但是你是对的,你需要输入域管理员凭据才能将机器添加到域中,我猜也是修复。我不认为这是可以避免的。我认为最好弄清楚他们为什么会退出域。 【参考方案1】:计算机帐户与用户帐户一样具有密码,即使您从未与它们进行过交互。在 AD 域中,计算机密码用于建立到域的安全通道。默认情况下,计算机帐户密码不会过期。但默认情况下,计算机每 30 天更新一次密码 (more details)。
在您的情况下,您拍摄了虚拟机的快照。之后,这台机器在某个时间点(
总之,您的计算机不再连接到域,并且没有任何信任来重新创建安全通道。因此,您不能使用计算机上的任何东西来重建它(例如计算机帐户或域中的任何其他帐户)。您必须通过新的身份验证重新获得信任。
我不建议在任何地方硬编码任何凭据,尤其是域管理员的凭据。您甚至可以从 C#(或任何)二进制文件中反转密码。这只是一个努力的问题(不一定是时间!)。
我能想到的唯一解决方案是延长计算机帐户密码更新的期限。如果您可以确定一个合理的时间跨度,您可以确定快照肯定不会超过此时间,您可以通过 GPO (more details) 修改续订间隔:
-
转到
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
。
您可以在此处激活设置 Domain member: Maximum machine account password age
并将其设置为 1 到 999 天之间的值。
它必须应用于包含您的虚拟机的计算机帐户的位置。它不一定必须应用于您的 DC,因为计算机会自行更改密码。更改不是由您的域(控制器)发起的。
安全考虑:间隔越大,暴力攻击的时间越长。明智地选择。
【讨论】:
以上是关于使用 C# 在域上保留具有快照的虚拟机的主要内容,如果未能解决你的问题,请参考以下文章