防止smb中间人劫持需客户端和服务器端均启用数字签名:客户端启用“microsoft网络客户端:对通信进行数字签名(始终)”,服务器端启用“microsoft网络服务器:对通信进行数字签名(始终)”,二者必须同时启用才生效,否则连接失败。
要防止局域网中 smb 通信被中间人劫持,核心是强制客户端与服务器双方都启用 smb 数字签名。这需要在组策略中分别配置客户端和服务器端的签名要求,且二者必须匹配才能建立连接——只开一边会导致连接失败。
客户端必须签名:强制所有出站 SMB 请求带签名
该设置确保本机访问任何 SMB 共享时,都必须使用数字签名发送数据包,防止请求被篡改或伪造。
- 打开“组策略管理编辑器”(gpedit.msc 或域环境中的 GPMC)
- 导航至:计算机配置 → 管理模板 → 网络 → Lanman 工作站
- 双击“Microsoft 网络客户端:对通信进行数字签名(始终)”
- 选择“已启用”,点击确定
服务器端必须签名:强制所有入站 SMB 连接验证签名
该设置确保本机作为文件服务器时,只接受已签名的 SMB 请求,拒绝未签名的连接尝试,堵住伪造客户端接入的漏洞。
- 在同一组策略编辑器中,导航至:计算机配置 → 管理模板 → 网络 → Lanman 服务器
- 双击“Microsoft 网络服务器:对通信进行数字签名(始终)”
- 选择“已启用”,点击确定
关键注意事项与常见问题
这两项策略必须同时启用才真正生效;仅启用客户端或仅启用服务器端,都会导致部分设备无法访问共享资源。
- 默认情况下,只有域控制器启用服务器端签名,普通工作站/成员服务器默认不启用,需手动配置
- 启用后,SMB 文件操作性能最多下降约 15%,但对现代千兆局域网影响通常不明显
- 旧设备(如 Windows XP、某些 NAS 或打印机)可能不支持 SMB 签名,连接会失败,需评估兼容性
- 策略应用后无需重启,但建议运行 gpupdate /force 刷新策略
验证是否生效
配置完成后,可通过命令行快速确认当前 SMB 连接是否启用了签名:
- 在客户端上运行:Get-SmbConnection | fl *,查看 Encrypted 和 Signing 字段是否为 True
- 在服务器上运行:Get-SmbServerConfiguration | fl RequireSecuritySignature,确认返回 True










