要真正增强内网 SMB 共享传输安全性,必须客户端和服务器两端同步启用“对通信进行数字签名(始终)”策略,缺一不可;仅启用单侧会导致连接失败或降级为无签名状态,无法防止中间人劫持。
要真正让 smb 签名起作用,不能只在一边开开关——客户端和服务器必须同步启用“始终签名”策略,缺一不可。否则连接会失败,或自动降级为无签名状态,等于没防护。
客户端与服务器端必须同时启用“始终签名”
仅启用单侧策略无法达成强制保护,系统会协商失败或回退。关键配置项有两个:
- 客户端侧(出站强制):计算机配置 → 管理模板 → 网络 → Lanman 工作站 → “Microsoft 网络客户端: 对通信进行数字签名(始终)” → 启用
- 服务器侧(入站强制):计算机配置 → 管理模板 → 网络 → Lanman 服务器 → “Microsoft 网络服务器: 对通信进行数字签名(始终)” → 启用
这两项需在所有参与共享的设备上统一部署,包括工作站、文件服务器、域控制器等。域控制器默认启用服务器端签名,但普通成员服务器默认不启用,这点极易被忽略。
验证签名是否实际生效
策略应用后无需重启,运行 gpupdate /force 刷新即可。快速确认方式如下:
- 在客户端执行:Get-SmbConnection | fl *, Signing —— 查看 Signing 字段是否为 True
- 在服务器执行:Get-SmbSession | fl *, Signing —— 同样确认 Signing 为 True
若任一端显示 False,则说明协商未成功,需检查策略是否生效、设备是否支持、是否存在中间网络设备干扰。
兼容性与常见失效原因
不是所有设备都支持强制签名,部署前务必排查:
- Windows XP、老旧 NAS(如早期群晖/威联通)、部分网络打印机默认不支持,连接将直接拒绝
- Linux Samba 服务需明确配置 server signing = mandatory,并确认启用 SMB2/SMB3 及 HMAC-SHA-256 或 AES-CMAC 算法
- 禁用 SMBv1 是前提,否则可能绕过签名机制;建议通过 PowerShell 执行:Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
配合加密形成纵深防护
签名防篡改,加密防窃听,二者互补:
- 启用 SMB 加密:Set-SmbServerConfiguration -EncryptData $true -RejectUnencryptedAccess $true
- 优先使用 Kerberos 认证,避免 NTLM;确保使用主机名而非 IP 或 CNAME 访问,保障 SPN 正确解析
- 性能影响可控:现代 CPU 上签名仅增加约 3–5% CPU 开销,千兆内网吞吐基本不受影响

















