Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece etapas para solucionar um problema de bloqueio de conta nos Serviços de Federação do Microsoft Active Directory (AD FS) no Windows Server.
Versão original do produto: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Número original do KB: 4471013
Você pode enfrentar um problema de bloqueio de conta no AD FS no Windows Server. Para solucionar esse problema, verifique os seguintes pontos primeiro:
- Se você tiver o Microsoft Entra Connect Health configurado para servidores AD FS, vá para a seção Usar o Connect Health para gerar dados para atividades de logon do usuário.
- Se você não tiver o Microsoft Entra Connect Health configurado para servidores do AD FS, vá para a seção Coletar logs de eventos do AD FS do AD FS e servidores Proxy de Aplicativo Web.
Usar o Connect Health para gerar dados para atividades de logon do usuário
Você pode usar o Connect Health para gerar dados sobre a atividade de login do usuário. O Connect Health produz relatórios sobre as principais tentativas de senha incorreta feitas no farm do AD FS.
Consulte as informações neste artigo para analisar a lista de contas de usuário e IPs da tentativa de senha incorreta. Em seguida, vá para Analisar o IP e o nome de usuário das contas afetadas por tentativas de senha incorreta.
Coletar logs de eventos do AD FS de servidores AD FS e Proxy de Aplicativo Web
Etapa 1: Coletar logs de eventos do AD FS dos servidores AD FS e Proxy de Aplicativo Web
Para coletar logs de eventos, primeiro você deve configurar servidores do AD FS para auditoria. Se você tiver um balanceador de carga para o farm do AD FS, deverá habilitar a auditoria em cada servidor do AD FS no farm. A auditoria não precisa ser configurada nos servidores de Proxy de Aplicativo Web.
Para configurar servidores do AD FS para auditoria, você pode usar o seguinte método:
Etapa 2: Pesquisar os logs do AD FS
Para Windows Server 2012 R2 ou Windows Server 2016 AD FS, pesquise todos os logs de eventos de segurança dos servidores do AD FS para eventos de "ID do evento 411 Auditoria do AD FS de origem". Esteja ciente das seguintes informações sobre "eventos 411":
- Você pode baixar o script do PowerShell de bloqueio de conta do ADFS e pesquisa de crédito inválido (AD FSBadCredsSearch.ps1) para pesquisar seus servidores do AD FS em busca de eventos "411". O script fornece um arquivo CSV que contém o UserPrincipalName, o endereço IP do remetente e a hora de todos os envios de credenciais inválidas para o farm do AD FS. Abra o arquivo CSV no Excel e filtre rapidamente por nome de usuário, endereço IP ou hora.
- Esses eventos contêm o nome UPN do usuário de destino.
- Esses eventos contêm uma mensagem "falha na validação do token" que informa se o evento indica uma tentativa de senha incorreta ou um bloqueio de conta.
- Se o servidor tiver eventos "411" exibidos, mas o campo de endereço IP não estiver no evento, verifique se você tem o hotfix mais recente do AD FS aplicado aos servidores. Para obter mais informações, consulte MS16-020: Atualização de segurança dos Serviços de Federação do Active Directory para resolver a negação de serviço: 9 de fevereiro de 2016.
Para Windows Server 2008 R2 ou Windows Server 2012 AD FS, você não terá os detalhes necessários do Evento 411. Em vez disso, baixe e execute o seguinte script do PowerShell para correlacionar os eventos de segurança 4625 (tentativas de senha incorreta) e 501 (detalhes de auditoria do AD FS) para encontrar os detalhes sobre os usuários afetados.
- Você pode baixar o script do PowerShell do Analisador de Eventos de Auditoria de Segurança do ADFS (ADFSSecAuditParse.ps1) para pesquisar eventos nos servidores do AD FS. O script fornece um arquivo CSV que contém o UserPrincipalName, o endereço IP do remetente e a hora de todos os envios de credenciais inválidas para o farm do AD FS.
- Você também pode usar esse método para investigar quais conexões são bem-sucedidas para os usuários nos eventos "411". Você pode pesquisar os eventos "501" do AD FS para obter mais detalhes.
- Ao executar o script do PowerShell para pesquisar os eventos, passe o UPN do usuário identificado nos eventos "411" ou pesquise por relatórios de bloqueio de conta.
- O endereço IP dos remetentes mal-intencionados é exibido em um dos dois campos nos eventos "501".
- Para cenários baseados na Web e a maioria dos cenários de autenticação de aplicativo, o IP mal-intencionado estará no campo x-ms-client-ip .
Analise o IP e o nome de usuário das contas afetadas por tentativas de senha incorreta
Depois de enumerar os endereços IP e nomes de usuário, identifique os IPs que são para locais de acesso inesperados.
As tentativas são feitas a partir de IPs externos desconhecidos?
- Se as tentativas forem feitas de IPs externos desconhecidos, vá para Atualizar servidores do AD FS com os hotfixes mais recentes.
- Se as tentativas não forem feitas de IPs externos desconhecidos, vá para Verificar se as credenciais estão atualizadas no serviço ou aplicativo.
Atualizar servidores do AD FS com os hotfixes mais recentes
Para garantir que os servidores do AD FS tenham a funcionalidade mais recente, aplique os hotfixes mais recentes para os servidores AD FS e Proxy de Aplicativo Web. Além disso, o hotfix 3134222 é necessário no Windows Server 2012 R2 para registrar endereços IP no Evento 411 que serão usados posteriormente.
Verifique se o bloqueio de extranet está habilitado
Use Get-ADFSProperties para verificar se o bloqueio de extranet está habilitado.
- Se o bloqueio de extranet estiver habilitado, acesse Verificar bloqueio de extranet e limites de bloqueio interno.
- Se o bloqueio de extranet não estiver habilitado, inicie as etapas abaixo para a versão apropriada do AD FS.
Etapas para verificar o status de bloqueio
Para Windows Server 2012 R2 ou versão mais recente
O bloqueio inteligente é um novo recurso que estará disponível em breve no AD FS 2016 e 2012 R2 por meio de uma atualização. Esta seção será atualizada com as etapas apropriadas para ativar o bloqueio inteligente assim que o recurso estiver disponível. Em seguida, vá para Verificar limites de bloqueio de extranet e bloqueio interno.
Para Windows Server 2008 R2 Windows ou versão mais antiga
Recomendamos que você atualize os servidores do AD FS para o Windows Server 2012 R2 ou Windows Server 2016. Para obter mais informações, confira Como atualizar para o AD FS no Windows Server 2016. Em seguida, siga as etapas para Windows Server 2012 R2 ou versão mais recente.
Etapa 1: verificar os limites de bloqueio interno e de bloqueio de extranet
Verifique se os limites de bloqueio de extranet e bloqueio interno estão configurados corretamente. Para obter mais informações, consulte Configurações de segurança recomendadas. Geralmente, o ExtranetLockoutThreshold deve ser menor que o limite de bloqueio do AD para que o usuário seja bloqueado apenas para acesso à extranet sem também ser bloqueado no Active Directory para acesso interno.
Etapa 2: Habilitar a autenticação moderna e a autenticação baseada em certificado
Recomendamos que você habilite a autenticação moderna, a autenticação baseada em certificado e os outros recursos listados nesta etapa para reduzir o risco de ataques de força bruta.
Implantar autenticação moderna
Além de remover um dos vetores de ataque que estão sendo usados atualmente por meio do Exchange Online, a implantação da autenticação moderna para seus aplicativos cliente do Office permite que sua organização se beneficie da autenticação multifator. A autenticação moderna é compatível com todos os aplicativos mais recentes do Office nas plataformas Windows, iOS e Android.
Para obter mais informações, consulte Como implantar a autenticação moderna para o Office 365.
Como as solicitações de acesso baseadas em nome de usuário e senha continuarão vulneráveis, apesar de nossas defesas proativas e reativas, as organizações devem planejar a adoção de métodos de acesso não baseados em senha o mais rápido possível.
Os seguintes tipos de autenticação não baseados em senha estão disponíveis para o AD FS e o Proxy de Aplicativo Web.
Autenticação baseada em certificado
Quando a autenticação baseada em certificado é usada como uma alternativa ao acesso baseado em nome de usuário e senha, as contas de usuário e o acesso são protegidos da seguinte maneira:
Como os usuários não usam suas senhas pela Internet, essas senhas são menos suscetíveis à divulgação. Os endpoints de nome de usuário e senha podem ser bloqueados completamente no firewall. Isso remove o vetor de ataque para ataques de bloqueio ou força bruta.
Mesmo que os pontos de extremidade de nome de usuário e senha sejam mantidos disponíveis no firewall, as solicitações mal-intencionadas baseadas em nome de usuário e senha que causam um bloqueio não afetam as solicitações de acesso que usam certificados. Portanto, o acesso do usuário legítimo é preservado.
Para obter mais informações sobre a autenticação baseada em certificado para a ID do Microsoft Entra e o Office 365, consulte este artigo do blog de identidade do Microsoft Entra.
MFA (Autenticação Multifator) do Azure
O Azure MFA é outro método de acesso não baseado em senha que você pode usar da mesma maneira que a autenticação baseada em certificado para evitar completamente o uso de pontos de extremidade de senha e nome de usuário.
O Azure MFA pode ser usado para proteger suas contas nos seguintes cenários.
Cenários Vantagem Usando o Azure MFA como autenticação adicional pela extranet Adicionar o Azure MFA ou qualquer provedor de autenticação adicional ao AD FS e exigir que o método adicional seja usado para solicitações de extranet protege suas contas contra acesso usando uma senha roubada ou forçada por força bruta. Isso pode ser feito no AD FS 2012 R2 e 2016. Usando o Azure MFA como autenticação primária Esse é um novo recurso no AD FS 2016 para habilitar o acesso sem senha usando o Azure MFA em vez da senha. Isso protege contra violações de senha e bloqueios. Para obter mais informações sobre como configurar o Azure MFA usando o AD FS, consulte Configurar o AD FS 2016 e o Azure MFA
Windows Hello for Business
O Windows Hello para Empresas está disponível no Windows 10. O Windows Hello para Empresas permite o acesso sem senha da extranet, com base em chaves criptográficas fortes vinculadas ao usuário e ao dispositivo.
Windows Hello para Empresas tem suporte do AD FS no Windows Server 2016. Consulte Autenticando identidades sem senhas por meio do Windows Hello para Empresas.
Etapa 3: Desabilitar a autenticação herdada e os pontos de extremidade não utilizados
Desabilite os pontos de extremidade herdados usados por clientes EAS por meio do Exchange Online, como o seguinte:
/adfs/services/trust/13/usernamemixed endpoint
Observação
Isso pode interromper algumas funcionalidades. No entanto, pode ajudar a reduzir os vetores de superfície disponíveis para os invasores explorarem. Além disso, recomendamos que você desabilite os pontos de extremidade não utilizados.
Verifique se o problema foi resolvido.
Verifique se as credenciais estão atualizadas no serviço ou aplicativo
Se a conta de usuário for usada como uma conta de serviço, as credenciais mais recentes podem não ser atualizadas para o serviço ou aplicativo. Nessa situação, o serviço pode continuar tentando autenticar usando as credenciais erradas. Isso causa uma condição de bloqueio.
Para resolver esse problema, verifique a configuração da conta de serviço no serviço ou aplicativo para garantir que as credenciais estejam corretas. Caso contrário, siga o próximo passo.
Limpar credenciais armazenadas em cache no aplicativo
Se as credenciais do usuário forem armazenadas em cache em um dos aplicativos, tentativas repetidas de autenticação podem fazer com que a conta seja bloqueada. Para resolver esse problema, limpe as credenciais armazenadas em cache no aplicativo. Verifique se o problema foi resolvido.
Bloqueio de conta do ADFS e pesquisa de crédito inválido
PARAM ($PastDays = 1, $PastHours)
#************************************************
# ADFSBadCredsSearch.ps1
# Version 1.0
# Date: 6-20-2016
# Author: Tim Springston [MSFT]
# Description: This script will parse the ADFS server's (not proxy) security ADFS
# for events which indicate an incorrectly entered username or password. The script can specify a
# past period to search the log for and it defaults to the past 24 hours. Results will be placed into a CSV for
# review of UPN, IP address of submitter, and timestamp.
#************************************************
cls
if ($PastHours -gt 0)
{$PastPeriod = (Get-Date).AddHours(-($PastHours))}
else
{$PastPeriod = (Get-Date).AddDays(-($PastDays)) }
$Outputfile = $Pwd.path + "\BadCredAttempts.csv"
$CS = get-wmiobject -class win32_computersystem
$Hostname = $CS.Name + '.' + $CS.Domain
$Instances = @{}
$OSVersion = gwmi win32_operatingsystem
[int]$BN = $OSVersion.Buildnumber
if ($BN -lt 9200){$ADFSLogName = "AD FS 2.0/Admin"}
else {$ADFSLogName = "AD FS/Admin"}
$Users = @()
$IPAddresses = @()
$Times = @()
$AllInstances = @()
Write-Host "Searching event log for bad credential events..."
if ($BN -ge 9200) {Get-Winevent -FilterHashTable @{LogName= "Security"; StartTime=$PastPeriod; ID=411} -ErrorAction SilentlyContinue | Where-Object {$_.Message -match "The user name or password is incorrect"} | % {
$Instance = New-Object PSObject
$UPN = $_.Properties[2].Value
$UPN = $UPN.Split("-")[0]
$IPAddress = $_.Properties[4].Value
$Users += $UPN
$IPAddresses += $IPAddress
$Times += $_.TimeCreated
add-member -inputobject $Instance -membertype noteproperty -name "UserPrincipalName" -value $UPN
add-member -inputobject $Instance -membertype noteproperty -name "IP Address" -value $IPAddress
add-member -inputobject $Instance -membertype noteproperty -name "Time" -value ($_.TimeCreated).ToString()
$AllInstances += $Instance
$Instance = $null
}
}
$AllInstances | select * | Export-Csv -Path $Outputfile -append -force -NoTypeInformation
Write-Host "Data collection finished. The output file can be found at $outputfile`."
$AllInstances = $null
Analisador de eventos de auditoria de segurança do ADFS
PARAM ($SearchCriteria, $PastDays = 1, $PastHours)
#************************************************
# ADFSSecAuditParse.ps1
# Version 1.0
# Date: 2-2-2016
# Author: Tim Springston [MSFT]
# Description: This script will parse an ADFS Security event log file (EVTX)
# and search for audit events related to a specific user or other criteria.
# The script will work for the each ADFS login instance for a given criteria during a stated time frame.
# If you need to locate a second then filter and save the event log to focus in.
# Return an array of initial instance IDs with the criteria, run the search function against each and output
# a unique text file for each.
#************************************************
cls
if ($PastHours -gt 0)
{
$PastPeriod = (Get-Date).AddHours(-($PastHours))
}
else
{$PastPeriod = $PastDays}
$CS = get-wmiobject -class win32_computersystem
$Hostname = $CS.Name + '.' + $CS.Domain
$Instances = @()
Get-Winevent -ComputerName $Hostname -LogName Security | Where-Object {(($_.ID -eq 501) `
-and ($_.Properties.Value -contains $SearchCriteria) -and ($_.TimeCreated -gt $PastPeriod))} | % { $Instances += $_.Properties[0].Value}
function FindADFSAuditEvents {
param ($valuetomatch, $counter, $instance, $PastPeriod)
$Results = $pwd.Path + "\" + $SearchCriteria + "-ADFSSecAudit" + '-' + $Counter + ".txt"
$SearchString = $SearchCriteria + " and instance " + $Instance + " in Security event log."
"Security Audit Events which match $SearchString" | Out-File $Results -Encoding UTF8
Get-WinEvent -ComputerName $Hostname -LogName Security -WarningAction SilentlyContinue | `
Where-Object -ErrorAction SilentlyContinue {($_.TimeCreated -gt $PastPeriod) -and (($_.Properties -contains $ValueToMatch) -or ($_.Properties[0].Value -match $Instance))} | % {
$Event = New-object PSObject
add-member -inputobject $Event -membertype noteproperty -name "Event ID" -value $_.ID
add-member -inputobject $Event -membertype noteproperty -name "Provider" -value $_.ProviderName
add-member -inputobject $Event -membertype noteproperty -name "Machine Name" -value $_.MachineName
add-member -inputobject $Event -membertype noteproperty -name "User ID" -value $_.UserID
add-member -inputobject $Event -membertype noteproperty -name "Time Created " -value $_.TimeCreated
$Event | FL *
$Event | Out-File $Results -Encoding UTF8 -Append
$_.Properties | FL *
$_.Properties | Out-File $Results -Encoding UTF8 -Append
$DateTimeExport = $_.TimeCreated
}
$DateTime = (($DateTimeExport.ToShortDateString()).Replace('/','-') + '@' + (($DateTimeExport.ToShortTimeString()).Replace(' ','')))
$DateTime = $DateTime.Replace(':','')
$Results2 = $pwd.Path + "\" + $SearchCriteria + '-' + $DateTime + "-ADFSSecAudit" + $Counter + ".txt"
Rename-Item -Path $Results -NewName $Results2
}
$Counter = 1
foreach ($instance in $Instances)
{
FindADFSAuditEvents -ValueToMatch $SearchCriteria -Instance $Instance -PastPeriod $PastPeriod -Counter $Counter
$Counter++
}
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.