使用 Kerberos 5 设置 SMB 会话时,拒绝访问 Windows 域控制器上的 IPC$ 共享

使用 Kerberos 5 设置 SMB 会话时,拒绝访问 Windows 域控制器上的 IPC$ 共享

我正在编写一个执行用户登录并提供网络内 SMB 共享的单点登录访问的系统。

用户登录通过 Kerberos 5 进行,以验证用户身份并获取 TGT 票证。访问 SMB 共享时,TGT 票证用于获取托管共享的服务器的 TGS 票证,并使用该 TGS 执行会话设置(由此实现 SSO)。

一切正常,直到用户尝试访问 DC 上的 SMB 共享。在这种情况下,DC 将向 Tree Connect 请求返回 STATUS_ACCESS_DENIED,如下面的链接所示。

Wireshark 捕获

该用户是域管理员组的成员。因此,应该有权访问 IPC$ 共享

有趣的是,如果我不使用 TGS 执行会话设置,而是使用 NTLMSSP(使用相同用户的凭据)执行会话设置,那么 DC允许连接到共享。

为什么根据执行的身份验证(NTLMSSP 与 Kerberos 5)为 SMB 会话分配不同的权限?

这有点像 GPO/GPP 配置,但我对此的了解非常有限。

使用 Kerberos 5 时,是否需要在针对 DC 的会话设置中执行进一步的步骤?或者,如果服务器返回 STATUS_SUCCESS,是否可以安全地假设我做得正确?

几点说明:

  • SMB 客户端在连接到所需共享之前始终尝试连接到 IPC$ 共享以执行一些 IOCTL。
  • 我已经验证我的系统的日期和时间与 DC 的日期和时间同步
  • 该系统是在 Linux 上开发的。我使用的是 heimdal 的 libkrb5 和专有的 SMB 客户端(我有能力修改这两个库)

更新:即使跳过连接到 IPC$ 共享,而直接连接到所需共享,行为也是一样的。DC 将向 Tree Connect 请求返回 STATUS_ACCESS_DENIED。

答案1

默认为 Windows DC需要SMB 消息签名。这是由 DC 在安全模式部分协商协议响应

有问题的(专有)SMB 客户端在使用 Kerberos 并执行未签名的树连接请求。这导致服务器(DC)拒绝访问共享。

修改 SMB 客户端并确保其遵守需要签名当使用 Kerberos 凭据时标记,就可以连接到 DC 的 SMB 共享。

相关内容