服务器消息块签名概述

本文介绍服务器消息块 (SMB) 2.x 和 3.x 签名,以及如何确定是否需要 SMB 签名。

简介

SMB 签名(也称为安全签名)是 SMB 协议中的安全机制。 SMB 签名意味着每个 SMB 消息都包含使用会话密钥生成的签名。 客户端将整个消息的哈希放入 SMB 标头的签名字段中。

SMB 签名首先出现在 windows 2000 Microsoft、Microsoft Windows NT 4.0 和 Microsoft Windows 98 中。 签名算法随着时间的推移而演变。 通过引入基于哈希的消息身份验证代码 (HMAC) SHA-256 改进了 SMB 2.02 签名,取代了 SMB1 中使用的旧 MD5 方法。 SMB 3.0 添加了 AES-CMAC 算法。 在 Windows Server 2022 和 Windows 11 中,我们添加了 AES-128-GMAC 签名加速。 如果需要最佳性能和保护组合,请考虑升级到最新的 Windows 版本。

SMB 签名如何保护连接

如果有人在传输过程中更改消息,哈希将不匹配,SMB 将知道有人篡改了数据。 签名还确认发件人和接收方的标识。 这可以防止中继攻击。 理想情况下,使用 Kerberos 而不是 NTLMv2,以便会话密钥启动强。 不要使用 IP 地址连接到共享,也不会使用 CNAME 记录,或者使用 NTLM 而不是 Kerberos。 请改用 Kerberos。 有关详细信息,请参阅 使用计算机名称别名代替 DNS CNAME 记录

SMB 签名的策略位置

SMB 签名的策略位于计算机配置>Windows 设置>安全设置>本地策略>安全选项中。

  • Microsoft 网络客户端:对通信进行数字签名(始终)
    注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
    注册表值:RequireSecuritySignature
    数据类型:REG_DWORD
    数据:0(禁用),1(启用)
  • Microsoft网络客户端:数字签名通信(如果服务器同意)
    注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
    注册表值: EnableSecuritySignature
    数据类型:REG_DWORD
    数据:0(禁用),1(启用)
  • Microsoft 网络服务器:对通信进行数字签名(始终)
    注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
    注册表值:RequireSecuritySignature
    数据类型:REG_DWORD
    数据:0(禁用),1(启用)
  • Microsoft网络服务器:数字签名通信(如果客户端同意)
    注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
    注册表值: EnableSecuritySignature
    数据类型:REG_DWORD
    数据:0(禁用),1(启用)

请注意 ,在这些策略中,“始终”表示需要 SMB 签名,“如果服务器同意”或“如果客户端同意”表示已启用 SMB 签名。

了解“RequireSecuritySignature”和“EnableSecuritySignature”

忽略 SMB2+ 客户端和 SMB2+ 服务器的 EnableSecuritySignature 注册表设置。 因此,除非使用 SMB1,否则此设置不会起任何作用。 SMB 2.02 及更高版本的签名仅由是否需要来控制。 当服务器或客户端需要 SMB 签名时,使用此设置。 仅当两者都已将签名设置为 0 时,才会进行签名。

- 服务器 – RequireSecuritySignature=1 服务器 – RequireSecuritySignature=0
客户端 – RequireSecuritySignature=1 Signed Signed
客户端 – RequireSecuritySignature=0 Signed 未签名

参考

以置信度配置 SMB 签名

如何通过 SMB 客户端防御保护用户免受拦截攻击

Windows 10 中的 SMB 2 和 SMB 3 安全性:签名和加密密钥剖析

默认情况下,WINDOWS 10 版本 1709、Windows Server 版本 1709 及更高版本中未安装 SMBv1

Netdom computername