Apache2::AuthenNTLM 连接到域控制器但未进行身份验证

Apache2::AuthenNTLM 连接到域控制器但未进行身份验证

我有一台运行 Apache2::AuthenNTLM 的 Apache 2.2 服务器。我已成功配置 Apache2::AuthenNTLM 使其能够连接到域控制器。但是,有效的用户名/密码组合在日志中显示“错误的用户/密码”,并且未进行身份验证。

这是 Apache 配置:

PerlAuthenHandler Apache2::AuthenNTLM
AuthType ntlm
AuthName "NTLM TEST"
Require valid-user
# DOMAIN has is the domain users authenticate to, DOMAIN\username
# subdomain points to the domain controller. subdomain.domain.local.
# /etc/hosts maps subdomain to the correct IP.
PerlAddVar ntdomain "DOMAIN subdomain"
PerlSetVar ntlmdebug 1
PerlSetVar defaultdomain DOMAIN
PerlSetVar splitdomainprefix 1

这是 apache 日志的输出:

[4460] AuthenNTLM: Start NTLM Authen handler pid = 4460, connection = -1147051008 conn_http_hdr = Keep-Alive  main =  cuser =  remote_ip = 10.119.1.141 remote_port = 13873 remote_host = <> version = 0.02 smbhandle = 
[4460] AuthenNTLM: Object exists user = \
[4460] AuthenNTLM: Authorization Header NTLM
[4460] AuthenNTLM: protocol=NTLMSSP, type=1, flags1=7(NEGOTIATE_UNICODE,NEGOTIATE_OEM,REQUEST_TARGET), flags2=130(NEGOTIATE_ALWAYS_SIGN,NEGOTIATE_NTLM), domain length=0, domain offset=0, host length=0, host offset=0, host=, domain=
[4460] handler type == 1 
[4460] AuthenNTLM: Connect to pdc = subdomain bdc =  domain = DOMAIN
[4460] AuthenNTLM: timed outwhile waiting for lock (key = 23754)
[4460] AuthenNTLM: leave lock
[4460] AuthenNTLM: verify handle  smbhandle == -1146832856 
[4460] AuthenNTLM: charencoding = 1
[4460] AuthenNTLM: flags2 = 130
[4460] AuthenNTLM: Send header: NTLM ...
[4460] AuthenNTLM: verify handle = 1 smbhandle == -1146832856 
[4460] AuthenNTLM: Start NTLM Authen handler pid = 4460, connection = -1147051008 conn_http_hdr = Keep-Alive  main =  cuser =  remote_ip = 10.119.1.141 remote_port = 13873 remote_host = <> version = 0.02 smbhandle = 
[4460] AuthenNTLM: Object exists user = \
[4460] AuthenNTLM: Authorization Header NTLM
[4460] AuthenNTLM: protocol=NTLMSSP, type=3, user=username, host=host, domain=DOMAIN, msg_len=0
[4460] handler type == 3 
[4460] AuthenNTLM: verify handle = 3 smbhandle == -1146832856 
[4460] AuthenNTLM: Verify user user via smb server
[4460] AuthenNTLM: rc = 3  ntlmhash = *****************

虚拟主机日志:

[Mon Apr 18 15:36:38 2011] [error] Wrong password/user (rc=3/1/327681): DOMAIN\\username for /ntlm

我不知道如何解决此问题,我是一名 Linux 用户,而 Windows 网络对我来说是一门外语。我确信域控制器是具有我的 AD 条目的域控制器,并且我知道用户名和密码应该有效。谢谢。

答案1

您没有说您使用哪种客户端,但有一次我遇到了相同的行为,结果发现它与 Windows 7 中的新默认 NTLM 客户端设置有关。

旧版本的 Windows 使用 NTLMv1。由于 NTLMv1 可以在几分钟内被破解,因此 Microsoft 在 Vista 中已切换到 NTLMv2。不幸的是,AuthenNTLM 相当老旧且无人维护,它无法正确地将新的 NTLM 消息传递到活动域控制器或从活动域控制器传递新 NTLM 消息。稍微令人惊讶的是,我使用哪种浏览器实际上并不重要:所有浏览器(IExplorer、Firefox、Chrome)显然都使用操作系统功能来处理 NTLM 消息...

对我来说,解决方案是从头开始写 验证NTLM2(Apache 的另一个模块),因为服务器不是域的一部分,并且 AuthenNTLM 是唯一的选项(摩登根本无法编译。PyAuthenNTLM2 可处理 NTLMv1 和 NTLMv2,但基于 mod-python,而不是 Perl。

网络上有几个网站建议调整客户端操作系统中的(相当隐蔽的)安全设置,以便使用旧的 NTLMv1,但我不建议这么做。按今天的标准来看,NTLMv1 完全不安全。

相关内容