SMB 签名挡什么
SMB 签名对每个报文做完整性校验与来源认证,是抵御 SMB 中继攻击的主要手段:攻击者无法篡改报文,也难以把凭据中继到另一台服务器建立会话。配置上要看两层,服务端与客户端都必须把 RequireSecuritySignature 设为 True;只启用 EnableSecuritySignature 属于“支持但不强制”,协商不成就退回不签名,防护等于没有。
基本信息
| 适用平台 | Windows Server / Windows 10、11(含域环境) |
|---|---|
| 服务端命令 | Get-SmbServerConfiguration / Set-SmbServerConfiguration |
| 客户端命令 | Get-SmbClientConfiguration / Set-SmbClientConfiguration |
| 基线 | 服务端与客户端 RequireSecuritySignature 均为 True |
| 风险等级 | 中 |
典型使用场景
- 抵御 NTLM 中继:配合禁用 NTLMv1 与限制 NTLM 使用范围
- 域内统一:用 GPO 的 Microsoft 网络服务器/客户端数字签名通信项下发
- 文件服务器加固:服务器侧强制签名,避免客户端降级协商
- 合规核查:SMB 会话完整性要求是否落实
- 变更前评估:盘点老 NAS、老 Samba 设备是否支持签名
核查与设置
核查与设置
Get-SmbServerConfiguration | Select-Object RequireSecuritySignature, EnableSecuritySignature, EnableSMB1Protocol
Get-SmbClientConfiguration | Select-Object RequireSecuritySignature, EnableSecuritySignature
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force
Get-SmbConnection | Select-Object ServerName, Dialect # 核查现有会话使用的 SMB 版本
# GPO:计算机配置 → 策略 → Windows 设置 → 安全设置 → 本地策略 → 安全选项配置项读法
| 配置项 | 含义 | 正常与异常 |
|---|---|---|
| RequireSecuritySignature | 是否强制签名 | False=可被降级,需改为 True |
| EnableSecuritySignature | 是否支持签名 | 为 True 但不强制,防护力度不足 |
| EnableSMB1Protocol | 是否启用 SMB1 | True=存在老旧协议风险,应关闭 |
| Dialect | 当前会话的 SMB 版本 | 出现 SMB1 说明存在老设备 |
| EncryptData | 是否启用 SMB 加密 | 签名不防窃听,敏感数据需加密 |
老 SMB 实现(旧 NAS、老版本 Samba)可能不支持签名,强制后连接直接失败:先盘点存储设备兼容性,再分批发量。
落地要点
- 域内优先用 GPO 统一推,本地逐台改容易漏项且难复核
- 先在企业文件服务器上试强制,再推向客户端与工作站
- 签名解决完整性与来源,敏感数据外还要看 SMB 加密配置
- 关闭 SMB1 与强制签名一起推进,两者互补
- 变更后抽查几条 SMB 会话,确认没有降级到不签名
签名会带来一定性能开销,现代硬件上通常可以忽略;如果压测显示明显影响,应优先升级网络与存储,而不是放弃签名。