控制 SMB 签名行为

SMB 签名的工作原理

服务器消息块 (SMB) 签名是一项安全功能,它使用会话密钥和密码套件向通过连接传输的消息添加签名。 此签名包含 SMB 标题中整个消息的哈希。 如果有人篡改传输中的消息,则被篡改消息中的数据与签名中的哈希值将不匹配。 该哈希还包括原始发送方和预期收件人的标识。 签名不匹配会提醒用户可能存在的恶意行为,帮助他们保护其部署免受中继和欺骗攻击。

SMB 签名要求可能涉及出站签名(涵盖来自 SMB 客户端的流量)和入站签名(涵盖到服务器的流量)。 Windows 和 Windows Server 可以仅要求出站签名、仅要求入站签名、两者都要求或两者都不要求。 例如:

  • Windows 11 版本 24H2 企业版、专业版和教育版需要出站和入站 SMB 签名。

  • Windows Server 2025 仅需要出站 SMB 签名。

  • Windows 11 版本 24H2 家庭版不需要出站或入站 SMB 签名。

SMB 签名行为

尽管所有版本的 Windows 和 Windows Server 都支持 SMB 签名,但第三方可以选择禁用或不支持 SMB 签名。 如果尝试连接到不允许 SMB 签名的第三方 SMB 服务器上的远程共享,可能会遇到以下错误消息之一:

0xc000a000
-1073700864
STATUS_INVALID_SIGNATURE                                      
The cryptographic signature is invalid.

要解决此问题,请调整第三方 SMB 服务器上的设置以允许(启用)SMB 签名。

尝试连接到使用来宾帐户简化访问的第三方设备时,你可能会收到以下错误消息之一:

You can't access this shared folder because your organization's security policies block
unauthenticated guest access. These policies help protect your PC from unsafe or malicious
devices on the network.
Error code: 0x80070035
The network path was not found.
System error 3227320323 has occurred.

如果无法为第三方禁用来宾使用情况,则可能需要禁用 SMB 签名。 但是,这意味着你使用的是来宾访问权限,并阻止客户端确保登录到受信任的设备。

注意

不建议将禁用 SMB 签名作为第三方服务器的解决方法。 也不建议尝试使用来宾帐户进行签名。

先决条件

为了控制 SMB 签名行为并最大限度地发挥其功能,系统必须运行以下两个操作系统之一:

  • Windows 11 版本 24H2 或更高版本
  • Windows Server 2025 或更高版本

您还应该遵循以下建议,以确保 SMB 签名能够有效保护数据:

  • 使用 Kerberos 而不是 NTLMv2。
  • 不使用 IP 地址连接到共享。
  • 不使用 CNAME DNS 记录。 相反,请使用 NETDOM.EXE 分配备用计算机名称。

启用 SMB 签名

默认情况下,Windows 11 和 Windows Server 2025 的最新预览体验成员预览版需要 SMB 签名。 所有 Windows 环境都支持 SMB 签名。 但是,如果环境使用第三方服务器,并且第三方服务器不支持 SMB 签名,则无法连接到远程共享。

要求 SMB 签名也会禁用对共享的来宾访问。 在上述情况下,必须手动禁用 SMB 签名才能还原来宾帐户的访问权限。 你可以通过组策略、PowerShell 和 Windows 管理中心手动禁用 SMB 签名。

注意

如果需要修改基于 Active Directory 域的组策略,请使用组策略管理 (gpmc.msc)。

要禁用组策略中的 SMB 登录,请执行以下步骤:

  1. 选择开始,键入 gpedit.msc,然后按 Enter

  2. 本地组策略编辑器中,导航到 Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options

  3. 打开 Microsoft 网络客户端:对通信进行数字签名(始终),,选择已禁用,然后选择确定

启用 SMB 签名

SMB 签名通过验证数据在传输过程中未被篡改来确保数据完整性。 此外,SMB 签名通过验证服务器和客户端的标识来提供身份验证,这有助于防止中间敌手攻击。

要启用组策略中的 SMB 登录,请执行以下步骤:

  1. 选择开始,键入 gpedit.msc,然后按 Enter

  2. 本地组策略编辑器中,导航到 Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options

  3. 打开 Microsoft 网络客户端:对通信进行数字签名(始终),,选择已启用,然后选择确定

验证 SMB 签名状态

要检查 SMB 签名在 SMB 客户端或 SMB 服务器上是已启用还是已禁用,请运行以下命令:

Get-SmbClientConfiguration | FL RequireSecuritySignature
Get-SmbServerConfiguration | FL RequireSecuritySignature

如果返回的信息为 True,则启用了 SMB 签名,如果返回的信息为 False,则禁用了 SMB 签名。