我在 Windows 10 客户端和 Windows Server 2019 系统(DC/Fileserver)之间遇到了一些奇怪的文件复制问题。
我不想在这里详细解释这个问题,只想说它似乎是由 SMB 签名(文件副本上的随机无效签名)引起的。我已经验证了使用 SMB 加密时问题会消失(通过在 Hardened UNC 路径设置中启用 RequirePrivacy=1 来实现)。我的 Wireshark 捕获显示在协商协议响应中(使用 SMB 3.1.1 方言):
Security mode: 0x03, Signing enabled, Signing required
.... ...1 = Signing enabled: True
.... ..1. = Signing required: True
然而根据微软
当需要 SMB 加密时,无论设置如何,都不会使用 SMB 签名。SMB 加密隐式提供与 SMB 签名相同的完整性保证
因此,实际上我已经禁用了签名,而是使用加密。启用此功能后,我的“问题”就不存在了。
我想尝试不使用加密,而是禁用签名。不幸的是,我无法让 Windows 关闭此功能。我已完成以下操作:
1)配置我本地Windows 10客户端的安全策略:
Microsoft 网络客户端:数字签名通信(始终)= 已禁用
Microsoft 网络客户端:数字签名通信(如果服务器同意)= 已禁用
(第二种设置根据微软甚至不需要 SMB2 通信)
2)通过域控制器 GPO 配置我的 Windows Server 2019 DC:
Microsoft 网络服务器:数字签名通信(始终)= 已禁用
Microsoft 网络服务器:数字签名通信(如果客户端同意)= 已禁用
(第二种设置根据微软甚至不需要 SMB2 通信)
根据我的理解,这应该是禁用 SMB2 签名所需的全部操作。但是我还尝试了以下操作:
在 DC 的 SMB 上禁用安全签名:
- 设置 SmbServerConfiguration -EnableSecuritySignature $false
- 设置 SmbServerConfiguration -RequireSecuritySignature $false
我不确定上述内容是否实际处理 SMB2 签名或仅处理 SMB1,但除了在客户端上禁用它们之外,我还设置了它们(Set-SmbClientConfiguration 设置)
我还尝试将 Windows 10 系统上的 UNC 强化键设置为RequireIntegrity=0。
这些设置均无法禁用 SMB 签名。我在 Wireshark 捕获协商协议响应中得到的最佳结果是:
Security mode: 0x01, Signing enabled
.... ...1 = Signing enabled: True
.... ..0. = Signing required: False
因此,我成功禁用了签名要求,但实际上无法关闭签名。
我找不到任何表明无法禁用签名的内容,因此要么存在错误 - 要么我遗漏了某些东西。
帮助?