服务器消息块签名概述

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

简介

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

SMB 签名首先出现在 Microsoft Windows 2000、Microsoft Windows NT 4.0 和 Microsoft Windows 98 中。 签名算法随着时间推移而发展。 SMB 2.02 签名通过引入基于哈希的消息身份验证代码 (HMAC) SHA-256 进行了改进,取代了 SMB1 中使用的 20 世纪 90 年代末的旧 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 Server – RequireSecuritySignature=0
Client – RequireSecuritySignature=1 Signed Signed
客户端 – RequireSecuritySignature=0 Signed 未签名

参考

配置置信 SMB 签名

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

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

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

Netdom 计算机名称