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