在 Samba 中使用 NTLMv2 身份验证

在 Samba 中使用 NTLMv2 身份验证

尝试使用 Windows 10 客户端连接到 Linux 主机上的 Samba 共享,即使在设置客户端安全策略以允许非 NTLMv2 身份验证,当使用有效的帐户凭据时,客户端仍然会给出“指定的密码不正确。”之类的错误。

听起来大多数系统都可以支持 NTLMv2 身份验证,所以我只想在我的 Samba 主机上启用它,而不必再担心支持旧协议。听起来 Samba 默认具有 NTLMv2 选项,但是,我需要设置哪些参数才能满足 Windows(即仅使用 NTLMv2)?

答案1

据说,Samba 的默认值与以下值匹配,但我必须明确设置它们:

lanman auth = no
ntlm auth = yes
client lanman auth = no

答案2

检查 Windows 注册表中的项:

HKLM\System\CurrentControlSet\Control\Lsa\LmCompatibilityLevel

如果将其设置为 0,则 Windows 将尝试仅使用 NTLMv1 进行连接。我曾在多台 Windows 10 机器上看到过此注册表项的设置,但我不知道为什么。但是,您可以删除此注册表项,Windows 将恢复其默认行为,即使用 NTLMv2 并顺利连接到 Samba 4。

答案3

我需要添加--allow-mschapv2到文件中/etc/freeradius/3.0/mods-enabled/mschap,以使其看起来像这样:

ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

(也就是说,除了设置正确的ntlm auth参数。在我的情况下,它ntlm auth = mschapv2-and-ntlmv2-onlysmb.conf

相关内容