KRB5KRB_AP_ERR_MODIFIED 尝试使用 SPN 凭据

KRB5KRB_AP_ERR_MODIFIED 尝试使用 SPN 凭据

我正在尝试将 Windows 2019 系统设置为 SMB 服务器,以便与使用 Kerberos 向 SMB 服务器进行身份验证的外部非 Windows 系统上的第三方软件配合使用。此 SMB 服务器已加入单独域控制器服务器上的现有 Active Directory 域。尽管该软件成功从 Windows AD Kerberos 服务器获取用户和 SPN 凭据,但 SMB 服务器拒绝这些凭据并出现错误 KRB5KRB_AP_ERR_MODIFIED。

SMB 用户是在 AD 中定义的,并且 AD 中也有 SMB 服务器的计算机帐户。尽管 DC 帐户中的 SPN 列表没有此 SMB 服务器,但 SMB 服务器的计算机帐户中的 SPN 列表有。我尝试在 DC 上手动添加 SMB 服务器的 SPN 条目,但由于它是重复的而被拒绝,因此我推测 DC 在查找重复项时会考虑 SMB 服务器计算机帐户。

我以前见过这种问题,通常是 DNS 条目的问题,SMB 服务器认为其主机名是一回事,但 Kerberos 服务器和/或第三方软件认为是另一回事。不过,在这种情况下,情况略有不同——会话设置响应中的拒绝将 SMB 服务器名称显示为其短主机名后跟美元符号。尽管 SMB 服务器上的 SMB 服务器的完整计算机名称是其 DNS FQDN(这是根据控制面板中的系统程序)。我还验证了 DNS 服务器(也是 AD DC)是否正确解析了 SMB 服务器的主机名和 IP 地址。

事件的顺序如下:

  1. 非 Windows 系统上的客户端软件通过 TCP 连接到 SMB 服务器,并使用 SMBv2 成功执行协议协商。
  2. 客户端软件通过 AS-REQ 从 Kerberos 服务器 (AD DC) 请求 SMB 用户的凭据,并收到带有凭据的肯定 AS-REP。(我已验证使用了正确的 Kerberos 领域名称,并且请求和响应中的 sname 值匹配。)
  3. 然后,客户端软件在发送到 Kerberos 服务器的 TGS-REQ 中请求 SMB 服务器的 SPN 的凭据。它使用的 SPN 值为“cifs/DNS_FQDN”,其中“DNS_FQDN”是 SMB 服务器的完全限定 DNS 主机名。它在正 TGS-REP 中接收这些凭据。(我已验证使用了正确的 Kerberos 领域名称,并且请求和响应中的 sname 值匹配。)
  4. 客户端软件将这些凭据放入 SMB 会话设置请求内的 GSS-API 安全 blob 中,并将请求发送到 SMB 服务器。
  5. SMB 服务器拒绝凭证并显示错误 KRB5KRB_AP_ERR_MODIFIED。会话设置响应数据包中的安全 blob 中的领域名称是正确的,但响应中的 SMB 服务器的 sname 字符串是服务器的短主机名后跟美元符号。

显然,我配置不正确。第三方软件可以与 AD DC 上的 SMB 共享配合使用;但它无法与单独的 SMB 服务器上的共享配合使用,而且只是因为 SMB 服务器拒绝 Kerberos 服务器提供给第三方软件的凭据。

我做错了什么?我是否应该删除 AD DC 上的 SMB 计算机帐户,然后在其上手动添加 SMB 服务器的 SPN 条目?我需要在 SMB 计算机帐户中添加或修改什么吗?我是否需要在 SMB 服务器上进行某些更改,以便它识别“cifs/DNS_FQDN”为有效?

相关内容