我有一台未加入域的 Win 10 计算机,它访问已加入域的 Win 2016 服务器上的共享。首次连接其中一个共享时,Win 10 客户端会受到质询,我提供了域凭据。一切正常。
如果我理解正确,在这种情况下,连接将使用 NTLM,而不是更安全的协议(例如 Kerberos)。这个假设正确吗?我有一个有效的用例,即这台计算机不加入域,但由于 Mimikatz 等黑客工具,我想避免使用 NTLM。是否有任何最佳实践可以确保未加入域的计算机可以安全地访问域上的共享?
答案1
是的,情况确实如此,不过您可以采取一些合理的措施来降低 NTLM 身份验证的风险。(但并非毫无风险。)
使用长密码
NTLM 密码仍然使用相对较弱的哈希方案进行破解,8 个字符的密码大约需要 2-3 小时即可破解。(来源1 来源2) 传统建议是使用至少 14 个字符长的密码,但这已不再适用,因为 Windows 2000 密码不再由每个 7 个字符序列消化,因此从本质上讲,密码长度现在具有线性优势。(来源)不过,14 并不是一个不合理的长度。
强制使用 NTLM 版本 2
如果您还没有这样做,您可以在域中使用组策略对象在域成员中强制执行此操作,但在非域计算机上,您可以使用本地安全策略设置相同的设置。您需要“仅发送 NTLMv2 响应,拒绝 LM 和 NTLM”选项。话虽如此,当两台计算机通信时,如果只有其中一台(例如您的非域计算机)完全拒绝 LM 和 NTLMv1,另一台计算机将被迫使用 NTLMv2,因此您可以安全地将此更改仅应用于您的非域计算机。这只会在域计算机配置为不支持 NTLMv2 时失败,但这完全是愚蠢的。
您可以在非域计算机上执行以下操作:
- 打开管理工具通过开始菜单或控制面板
- 打开本地安全策略
- 导航当地政策然后安全选项
- 向下滚动至网络安全: LAN Manager 身份验证级别
- 将此设置的值更改为“仅发送 NTLMv2 响应,拒绝 LM 和 NTLM“
当然,您还可以围绕此功能配置许多其他安全选项,以强制仅使用最严格的连接,但据我所知,Windows 10 已经为其中大多数定义了良好的值。