PowerScale:Active Directory 用户升级到 OneFS 9.5 或更高版本后出现未定义属性身份验证失败
Summary: 从任何以前的版本升级到 OneFS 9.5.x 或更高版本时,升级前代码检查可能会识别“msds-SupportedEncryptionTypes”的 NULL/0 值。如果不解决,这可能会导致身份验证失败 (DU)。
Symptoms
如果群集升级到 OneFS 9.5 并且计算机帐户属性的值 msDS-SupportedEncryptionTypes 未设置,身份验证可能会失败。Active Directory 提供程序可能显示为无样式状态,或者可能从 isi auth 状态输出。
默认情况下,当群集首次加入 Active Directory 时,此值设置为 31(或十六进制的 0xF1)。根据戴尔支持 PowerScale OneFS 产品页面上的《 OneFS 9.5 安全配置指南》,我们为 SMB 和 Kerberos 提供了许多受支持的加密类型。
如果有人想要修改
msDS-SupportedEncryptionTypes,如果它不排除运行所需的加密类型,则这是可以接受的。例如,某些用户可能需要调整该值以忽略对 RC4 的支持。
启用了高级功能的属性中的属性示例:

图 1:此项的价值 msDS-SupportedEncryptionTypes 属性显示为 <未设置>。
Powershell 中的示例:
DistinguishedName : CN=NINEFIVEOH,CN=Computers,DC=testdomain,DC=local DNSHostName : ninefiveoh.testdomain.local Enabled : True Name : NINEFIVEOH ObjectClass : computer ObjectGUID : 8dbed342-6a12-41ff-889f-8249cc39b673 SamAccountName : NINEFIVEOH$ SID : S-1-5-21-3532647020-1821455699-3245163308-1110 UserPrincipalName :
上面的输出不包括属性的字段 msDS-SupportedEncryptionTypes,这通常会报告一个整数值。
下面是另一个群集中的示例,其中我们确实看到为属性填充了设置值:
DistinguishedName : CN=COREBUDDY,CN=Computers,DC=testdomain,DC=local DNSHostName : corebuddy.testdomain.local Enabled : True msDS-SupportedEncryptionTypes : 31 <<<<<<<<<<<<<<<< Name : COREBUDDY ObjectClass : computer ObjectGUID : e29236a7-cc36-4686-bca9-010ba4143ca3 SamAccountName : COREBUDDY$ SID : S-1-5-21-3532647020-1821455699-3245163308-1104 UserPrincipalName :
另一个症状是填充了特定消息 /var/log/lsass.d.log 文件如下所示:
2023-04-14T02:40:07.877593+00:00 <30.3> ninefiveoh-1(id1) lsass[13628]: [lsass] Failed to read msDS-SupportedEncryptionTypes for account CN=NINEFIVEOH,CN=Computers,DC=testdomain,DC=local 2023-04-14T02:40:07.877656+00:00 <30.3> ninefiveoh-1(id1) lsass[13628]: [lsass] Error 40044 (symbol: LW_ERROR_NO_SUCH_DOMAIN) occurred while putting an LDAP connection back in the domain free list. 2023-04-14T02:40:23.903189+00:00 <30.3> ninefiveoh-1(id1) lsass[13628]: [lsass] Failed to read msDS-SupportedEncryptionTypes for account CN=NINEFIVEOH,CN=Computers,DC=testdomain,DC=local 2023-04-14T02:40:23.903268+00:00 <30.3> ninefiveoh-1(id1) lsass[13628]: [lsass] Error 40044 (symbol: LW_ERROR_NO_SUCH_DOMAIN) occurred while putting an LDAP connection back in the domain free list.
要确认这是问题所在,管理员必须在 Active Directory 中检查群集的计算机帐户对象。这可以通过以下两种方式之一完成:
- 在 DC 上,打开 Active Directory用户和计算机( ADUC)。
- 在窗口的顶部功能区中,选择 查看 ,然后单击 高级功能。
- 右键单击 对象 并转到 “属性编辑器 ”选项卡,然后滚动以找到
msDS-SupportedEncryptionTypes属性。 - 双击 “属性 ”字段,然后检查新窗口中报告的十进制数。
- 在具有正确计算机帐户名称的 DC 上使用以下 Powershell 命令。
Get-ADComputer -Identity <machine account name> -Properties msDS-SupportedEncryptionTypes
对于上述情况,管理员必须使用 Active Directory 中具有域级别权限的帐户来解决此问题。
Cause
手动删除 msDS-SupportedEncryptionTypes 群集的计算机帐户对象的属性会导致 Active Directory 报告 NULL 值。作为一套增强功能的一部分,较新的代码中的检查将失败,以提供更好的安全支持。
加入 Active Directory 但未设置此值的较旧群集也可能容易受到此问题的影响。这是因为除非已重新加入 Active Directory,否则不会设置任何值。
Resolution
解决方法:
将该属性更改为空值以外的值。一个安全的选项是选择默认值 31 或 24,具体取决于安全要求。这通过 UI 或 Powershell 完成。
可以在 Microsoft 网站博客上找到值列表及其支持的加密类型。
DC 上的 Active Directory 管理员可以使用以下命令(插入正确的计算机帐户名称和整数)来为属性分配值。
Set-ADComputer -Identity COMPUTERNAME$ -Add @{'msDS-SupportedEncryptionTypes'="<INTEGER>"}
下面的示例设置 msDS-SupportedEncryptionTypes 设置为群集计算机帐户的默认值 31 NINEFIVEOH$:
Set-ADComputer -Identity NINEFIVEOH$ -Add @{'msDS-SupportedEncryptionTypes'="31"}
应用更改后,它们必须复制到 Active Directory 环境中的所有域控制器。之后,可能需要在群集上刷新身份验证或有针对性的 LSASS 重新启动以清除该条件。
戴尔工程部门已在 OneFS 9.5.0.3 中发布了解决此问题的代码增强功能。如果在升级之前未设置值,管理员仍可能会看到 IOCA 升级预检查失败。如果管理员在 AD 中限制群集权限以修改属性,则必须在进行任何升级活动之前手动更新属性。如果群集没有足够的权限在升级之前更新属性,将导致数据不可用。
提醒:OneFS 9.5 及更高版本需要该属性
msDS-SupportedEncryptionTypes。运行不具有或支持此属性的 Windows Server 版本的管理员必须升级其域控制器。此要求没有解决方法。如果在 OneFS 升级之前,受支持的 Windows Server 版本上没有域控制器,则可能会导致数据不可用。