Server 2016 计划任务在特定硬件型号上失败,错误 0x8007052e

Server 2016 计划任务在特定硬件型号上失败,错误 0x8007052e

我遇到了一个与基本 Windows 计划任务有关的奇怪问题,这个问题已经困扰了我几个星期了。这些作业在某些服务器上无法运行,但在运行在不同硬件/虚拟机平台上的其他服务器上却可以运行。最初,这是我们在其中一个生产系统中发现的一个问题,但我设法将其简化,以便只需对“开箱即用”配置进行最少的更改即可运行。我实际上创建了一个 5 行批处理文件,对全新安装进行最少的更改以进行设置,以确保每台测试机器都相同。

配置

  • 所有机器均运行全新安装的 Server 2016,并应用了最新更新。
  • 所有计算机都位于 Active Directory 上的同一 OU 中,并应用相同的策略集
  • 我们创建一个本地用户,其密码符合域设置的复杂性要求,并使其成为本地管理员组的成员
  • 我们授予用户帐户“以批处理身份登录”和“以服务身份登录”本地安全权限。
  • 安排一个基本任务,以此用户身份运行,以打开“notepad.exe”。
  • 无论用户是否登录,都必须将任务设置为运行,并且已经在任务中保存了密码。
  • 所有机器均由同一个管理员用户通过相同的任务序列进行映像处理。
  • 所有任务均由同一个管理员用户创建。

有效的硬件

我们在 VMware、XenServer 以及 HP 物理服务器和其他型号的戴尔服务器(Poweredge R730、R720、R430)上构建了虚拟机。其中大部分使用旋转式 10k/15k SAS 磁盘,不过我构建的其中一台 HP 服务器使用 RAID 10 中的 SATA SSD 作为测试。

无法正常工作的硬件

然而,我们的新服务器有问题。这些是新的 Dell Poweredge R540。它们内置了 BOSS RAID 1 控制器(基本上是 M.2 RAID 1 SSD),SAS SSD 通过 PERC 控制器作为额外的快速存储。

问题

在较旧的硬件上,如果您手动触发计划任务,则可以看到它正在运行,但如果以其他用户身份运行,则显然看不到记事本实际打开。

然而,在 Poweredge R540s 上,任务无法启动,并给出错误代码 2147943726 (0x8007052e)。我认为这是一个“未知用户名或密码错误”错误,尽管凭证是正确的,并且用户帐户是新创建的。

您可以在此处查看任务历史记录,其中显示任务失败

任务手动运行失败,安全事件日志中审核如下安全事件:

Log Name:      Security
Source:        Microsoft-Windows-Security-Auditing
Date:          12/10/2018 17:30:00
Event ID:      4625
Task Category: Logon
Level:         Information
Keywords:      Audit Failure
User:          N/A
Computer:      <computername>
Description:
An account failed to log on.

Subject:
    Security ID:        SYSTEM
    Account Name:       <computername>$
    Account Domain:     <domainname>
    Logon ID:       0x3E7

Logon Type:         4

Account For Which Logon Failed:
    Security ID:        NULL SID
    Account Name:       @@CyBAAA.....<this is a long Base 62 ID, so I've removed it in case it contains sensitive information>
    Account Domain:     

Failure Information:
    Failure Reason:     Unknown user name or bad password.
    Status:         0xC000006D
    Sub Status:     0xC0000064

Process Information:
    Caller Process ID:  0x590
    Caller Process Name:    C:\Windows\System32\svchost.exe

Network Information:
    Workstation Name:   <computername>
    Source Network Address: -
    Source Port:        -

Detailed Authentication Information:
    Logon Process:      Advapi  
    Authentication Package: Negotiate
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0

昨天,我重建了 2 台 R540、2 台虚拟机和 1 台 HP 服务器,只有 R540 出现了此故障。这是可以预见的 - 我们尝试重新映像所有测试机器,每次结果都一样。

其他相关发现

如果 R540 直接内置在 AD 上的“计算机”OU 中,我可以让它们正常工作,这意味着它们不会获得我们的安全基线策略。任务安装和运行完美。如果我将计算机对象移动到与我们正在测试的所有其他机器相同的 OU 中,任务将停止工作。将对象从 OU 移回计算机 OU 不会使任务再次工作。显然有些东西正在改变,但我看不出是什么,我不知道为什么它只会以这种方式影响 R540,而不会影响虚拟机或其他型号的硬件。

我们已导出本地安全策略,并在正常工作的机器和非正常工作的机器上进行比较,以检查是否存在差异。存在的差异很小,当将正常工作的策略集导入到损坏的机器时,该策略集仍处于损坏状态。同样,将损坏的机器中的策略集导入正常工作的机器不会损坏正常工作的机器。

如果我更改计划任务以勾选“不存储密码”,则该任务确实会运行,但这对我们在生产中不起作用,因为该任务需要访问非本地资源。

如果我将计划任务更改为在我的域管理员帐户上下文中运行(同时授予我自己“以批处理方式登录”和“以服务方式登录”权限),即使未勾选“不存储密码”,它也能正常工作。因此,无论发生什么问题,它似乎只与本地用户帐户有关。

我尝试过的其他方法都没有什么效果:

  • 以最高权限运行任务
  • 本地用户设置为“密码不会过期”开启/关闭
  • 本地用户密码强度和长度增加/减少
  • 我将任务类型从“Vista/2008(默认)”更改为“2016”,没有任何变化。
  • 我看到了在任务配置中从“不启动新实例”更改的建议,但这没有帮助。
  • 我构建了另一台具有快速 SSD 存储的物理机,以防机器映像速度过快,并且由于 R540s 上更快的磁盘访问而导致某种竞争条件。我不认为情况如此。
  • 截至昨天,R540s 上的驱动程序、固件和 BIOS 都已更新。

结论

我认为某物一定是我们的组策略改变了,导致它无法工作——可能是某种安全基线。然而,我完全无法解释的是,为什么这似乎只会破坏特定硬件型号上的计划任务的运行,而这些硬件型号的配置应该与同时以相同方式创建的工作机器相同。我看不出是什么原因造成的。

有人知道计划任务或基本安全身份验证是否以某种方式使用硬件功能吗?TPM 与此有什么关系吗?我还能做些什么来追溯什么导致任务运行时用户帐户失败?我已经没有主意了。

此外,如果有人问起,我曾尝试从命令行执行“runas”来证明我创建的本地用户帐户有效,并且我使用的密码是正确的。

谢谢!

答案1

该问题似乎是由于通过我们的安全基线策略启用了 Device Guard/Credential Guard 而引起的。仅当在 BIOS 中启用了安全启动时,Device Guard 才会运行,这意味着我们在虚拟机或不支持安全启动的旧服务器上没有看到它。

这里有一篇文章展示了完全相同的问题:

https://support.quest.com/kb/226489/scheduled-backups-are-not-running-on-windows-server-2016

正如上面的文章所提到的,解决方案是让任务以系统用户身份运行(如果足够的话),或者如果这不可行,则禁用设备保护。

我们已经在禁用 Device Guard 的情况下进行了测试,并且一旦我们重新创建我们的计划任务,它就可以成功运行,并且 BIOS 中仍然启用安全启动。

现在我们知道了为什么它不起作用,我们现在可以尝试阅读 Device Guard/Credential Guard 以了解它如何应该如何在启用这些功能的情况下开展工作,以及未来的最佳实践是什么。

感谢 Greg Askew 的贡献,最终促成了这一发现!

相关内容