Apache2 :: AuthenNTLM se conecta ao controlador de domínio, mas não autentica

2

Eu tenho um servidor Apache 2.2 executando o Apache2 :: AuthenNTLM. Eu tenho sucesso Apache2 :: AuthenNTLM configurado para o ponto que ele se conecta ao controlador de domínio. No entanto, as combinações de nome de usuário / senha válidas mostram "Usuário / senha incorretos" nos registros e não são autenticadas.

Esta é a configuração do 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

Esta é a saída do log do 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 = *****************

Log do host virtual:

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

Eu não sei como resolver isso, sou um cara linux e redes Windows são uma língua estrangeira para mim. Tenho certeza de que o controlador de domínio é aquele que tem minha entrada AD e sei que o nome de usuário e a senha devem funcionar. Obrigado.

    
por EMI 18.04.2011 / 21:42

1 resposta

4

Você não diz qual tipo de cliente você usa, mas uma vez eu experimentei o mesmo comportamento, e isso se relacionou com as novas configurações padrão do cliente NTLM no Windows 7.

Versões mais antigas do Windows usam o NTLMv1. Como o NTLMv1 pode ser quebrado em minutos, a Microsoft mudou para o NTLMv2 no Vista. Infelizmente, o AuthenNTLM é bastante antigo e não é mantido e não retransmitirá corretamente as novas mensagens do NTLM para o controlador de domínio ativo. A parte um pouco surpreendente foi que, na verdade, não importava qual navegador eu usava: todos (IExplorer, Firefox, Chrome) aparentemente usavam os recursos do sistema operacional para lidar com as mensagens NTLM ...

A solução para mim foi escrever do zero PyAuthenNTLM2 (outro módulo para o Apache), porque o servidor não fazia parte do domínio e o AuthenNTLM era a única opção (o modntlm simplesmente não compilava). O PyAuthenNTLM2 manipula o NTLMv1 e o NTLMv2, mas é baseado no mod-python, não no Perl.

Vários sites na web sugerem ajustar uma configuração de segurança (bastante bem escondida) no SO do cliente para que o NTLMv1 antigo seja usado, mas eu evitaria isso. O NTLMv1 é simplesmente totalmente inseguro para os padrões atuais.

    
por 16.01.2012 / 22:47