Travamento de Conta não funciona corretamente quando se usa o formato UPN através de Autenticação Baseada em Formulário no ISA Server 2006
1. Introdução
Recentemente recebemos uma chamada de suporte de um cliente dizendo que um dos seus usuários de rede foi capaz de efetuar o logon em uma página web segura publicada pelo ISA Server 2006 após tentar digitar errada cinco vezes e na sexta tentativa (com a senha correta) ele efetuou o logon. O problema é que a política de travamento de conta ao digitar senha errada da empresa era de quatro tentativas. Depois disso ficou o alerta de que havia uma vulnerabilidade na publicação segura de página web e o cliente resolveu abrir um chamado de suporte para investigamos isso.
Após revisar o ambiente e coletar mais informações sobre o cenário em que o problema não acontecia caso o usuário entrasse com as credencias no formato DOMÍNIO\USUÁRIO. Desta forma, o problema só ocorria de fato se o usuário utilizasse o formato UPN (User Principal Name), que é usuário@domínio, para fazer o logon.
2. Ambiente
Após identificarmos o cenário, reproduzimos o problema em laboratório. O laboratório tinha a seguinte configuração:
Figura 1 – Laboratório usado para simular o problema.
Como é possível verificar na figura acima, a página web usava logon seguro via formulários fornecido pelo ISA Server. Na figura abaixo temos a regra de publicação do servidor web:
Figura 2 – Regra do ISA Server.
A regra usa um “web listener” que utilize autenticação LDAP para validar as credenciais do usuário conforme mostra abaixo:
Figura 3 – Componentes LDAP.
Na parte de “login expression” temos cadastrados ambos formatos: SAM Based e UPN Based.
Para maiores informações sobre configuração LDAP reveja os artigos que publiquei acerca deste assunto:
Publicação de Web Site com Troca de Senha de Usuário no ISA Server 2006 – Parte 1
Publicação de Web Site com Troca de Senha de Usuário no ISA Server 2006 – Parte 2
3. Entendendo o Processo de Logon
Para melhor entender o processo de tentativas de logon nós habilitamos o logging do netlogon no controlador de domínio. Para isso o seguinte comando foi executado na console do controlador de domínio:
nltest /dbflag:0x2080ffff
3.1. Using o formato SAM Account Name
Quando o usuário Bob tenta efetuar o logon no servidor ISA Server 2006 através de formulário seguro usando o formato DOMÍNIO\USUÁRIO e digita a senha errada, os seguintes eventos são registrados no log do netlogon.
11/20 21:19:34 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered
11/20 21:19:34 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A
11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Entered
11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Returns 0x0
11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered
11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A
11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Entered
11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Returns 0x0
11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered
11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A
O erro 0xC000006A significa que a senha digitada está incorreta. Após quatro tentativas (que foi estabelecido via política) o seguinte evento é registrado:
11/20 21:19:51 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC0000234
O erro 0xC0000234 significa que a conta do usuário foi automaticamente locada. No visualizador de eventos, o seguinte evento também é registrado:
Event Type: Success Audit
Event Source: Security
Event Category: Account Management
Event ID: 644
Date: 11/20/2007
Time: 9:19:45 PM
User: NT AUTHORITY\SYSTEM
Computer: DCCONT
Description:
User Account Locked Out:
Target Account Name: Bob
Target Account ID: CONTOSO\Bob
Caller Machine Name: ISACONTN2
Caller User Name: DCCONT$
Caller Domain: CONTOSO
Caller Logon ID: (0x0,0x3E7)
3.2. Usando o Formato UPN
Quando o usuário Bob tenta efetuar o logon no servidor ISA Server 2006 através de formulário seguro usando o formato username@domain e digita a senha errada, os seguintes eventos são registrados no log do netlogon.
11/20 21:22:04 [LOGON] CONTOSO: SamLogon: Network logon of (null)\bob@contoso.msft from ISACONTN2 Entered
11/20 21:22:04 [LOGON] CONTOSO: SamLogon: Network logon of (null)\bob@contoso.msft from ISACONTN2 Returns 0xC0000225
O erro que é registrado neste cenário não é o 0xC000006A, ao invés disso o erro registrado é 0xC0000225, que por sua vez significa STATUS_NOT_FOUND. Mesmo digitando a senha incorreta várias vezes a conta não é locada pois o valor não é incrementado pelo controlador de domínio.
4. Como Corrigir o Problema
Este é um problema já corrigido pelo Windows Server 2003 SP2, entretanto sabemos que existem diversos clientes que ainda não aplicaram este Service Pack (o que é recomendado), se este for o seu caso então aplique o hotfix abaixo para solucionar o problema:
921063 Unsuccessful authentications are not counted as incorrect password logon attempts when you use the IADsOpenDSObject::OpenDSObject method to specify a UPN in a Windows Server 2003 domain
https://support.microsoft.com/default.aspx?scid=kb;EN-US;921063
Aplique este hotfix em todos controladores de domínio e no servidor ISA (caso ele tenha o Windows Server 2003 SP1).
Até a próxima.
Yuri Diogenes
Security Support Engineer – ISA Server Team
Microsoft Texas