应配置“网络安全:LAN管理器身份验证级别”为“仅发送NTLMv2响应。拒绝LM和NTLM”,并启用“网络访问:不允许存储LAN管理器哈希值”,同时禁用SMB1协议以阻断降级路径。要让 Windows 强制所有网络共享访问只使用 NTLMv2 认证(即禁用不安全的 LM 和旧版 NTLM),核心是配置两项关键本地安全策略,且需配合注册表或组策略生效。操作本质是关闭弱协议支持、提升协商等级,并确保服务端与客户端行为一致。
设置“网络安全:LAN 管理器身份验证级别”
这是最关键的策略,直接控制客户端发起认证时允许发送的哈希类型:
- 打开 组策略编辑器(gpedit.msc),定位到:
计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 - 找到并双击 网络安全:LAN 管理器身份验证级别
- 将其设为:
仅发送 NTLMv2 响应。拒绝 LM 和 NTLM
(该选项对应注册表值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel = 5) - 此设置会阻止客户端生成或发送 LM 哈希和原始 NTLM 响应,只允许 NTLMv2
禁用 LM 哈希存储(防止服务端降级)
即使客户端强制用 NTLMv2,若服务器仍存有 LM 哈希,攻击者可能通过离线爆破还原明文密码。需同步禁用 LM 哈希生成:
- 在同一位置(安全选项),找到:
网络访问:不允许存储 LAN 管理器哈希值用于网络身份验证 - 启用该项(设为“已启用”)
(对应注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\NoLMHash = 1) - 启用后,新设密码不再生成 LM 哈希;已有 LM 哈希在下次密码修改时自动清除
确认 SMB 服务未降级兼容模式
Windows Server 或启用了 SMB 1.0 的终端可能默认接受旧协议。需确保 SMB 协议栈不主动协商弱认证:
- 运行 PowerShell(管理员权限)检查 SMB 服务器设置:
Get-SmbServerConfiguration | Select-Object -Property RequireSecuritySignature, EnableSMB1Protocol - 建议执行:
Set-SmbServerConfiguration -RequireSecuritySignature $true -EnableSMB1Protocol $false
(禁用 SMB1 可彻底规避 LM/NTLM 降级路径) - 若客户端为老旧系统(如 Windows XP),需评估是否真能完全移除 NTLM 支持——否则将导致无法访问共享
验证与注意事项
配置完成后需重启或运行 gpupdate /force 刷新策略。验证方式包括:
- 用
nltest /server:目标主机 /auth查看实际协商协议 - 抓包(如 Wireshark)过滤
smb && smb2.cmd == 0x72,观察 Session Setup Request 中的 Negotiate Flags 是否含NTLMSSP_NEGOTIATE_EXTENDED_SECURITY - 注意:域环境优先走 Kerberos;该策略主要影响非域场景、跨林信任、或 Kerberos 失败后的 NTLM 回退路径











