Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Recurso de bloqueio inteligente de extranet - Extranet Smart Lockout (ESL)
Em 22 de março de 2018, uma nova atualização foi lançada para o servidor Windows 2016 (KB4088889). Esta atualização nos trouxe o novo recurso de bloqueio inteligente da extranet do ADFS, ou ESL.
O recurso de bloqueio de extranet interromperá os ataques de força bruta bloqueando a conta no ADFS e impedindo que as contas sejam bloqueadas no Active Directory.
Como o nome sugere, esse recurso só será aplicado se a solicitação de autenticação for proveniente da extranet e para autenticações de nome de usuário/senha.
O novo recurso de ESL consiste na implementação de um novo parâmetro chamado <ExtranetLockoutMode >
Este parâmetro contém 3 valores diferentes:
ADPasswordCounter - este é o valor padrão. O "bloqueio de extranet suave". Não difere com base na localização.
ADFSSmartLockoutLogOnly - Esse é o modo somente de logs de bloqueio inteligente da extranet. Não rejeitará os pedidos. Em vez disso, auditará os eventos para análises.
ADFSSmartLockoutEnforce - Este é o bloqueio inteligente da extranet eficaz. Ele bloqueará as tentativas de senha incorreta quando o limite for atingido.
Antes de começar, precisamos conceder permissões de leitura/gravação ao nosso Administrador sobre o banco de dados de artefatos do ADFS, executando:
Update-AdfsArtifactDatabasePermission
(Autenticar com um administrador do ADFS)
Quando as permissões estiverem definidas, podemos iniciar a configuração de bloqueio inteligente da extranet.
Para ativar o bloqueio de extranet, precisamos executar o cmdlet:
Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold <valor> -ExtranetObservationWindow <valor>
Vamos examinar os parâmetros individualmente:
EnableExtranetLockout - Este parâmetro representa a chave liga/desliga. É sempre um valor codificado, $true ou $false
ExtranetLockoutThreshold - Esse parâmetro representa o número de tentativas de senha com falha antes que a conta seja bloqueada.
Nota: O limite de bloqueio deve ser sempre menor que o do Active Directory, de modo que as contas sejam bloqueadas no ADFS apenas enquanto os usuários ainda puderem acessar seu Active Directory pela intranet ou usando uma VPN.
ExtranetObservationWindow - Este parâmetro representa a janela de tempo de observação entre os blocos. Quando o limite de bloqueio é atingido, o intervalo de tempo da janela de observação é iniciado. Quando o período de tempo da janela de observação expirar e a tentativa de autenticação for bem-sucedida, a conta será desbloqueada automaticamente e a contagem será redefinida para 0. Se uma tentativa de autenticação incorreta for feita, a janela de observação será reiniciada.
Gerenciando o ESL:
Depois de definir o ExtranetLockoutMode como <ADFSSmartLockoutEnforce>, a diversão começa 😊
PS: Certifique-se de reiniciar o serviço do ADFS em todos os nods do ADFS no farm:
Restart-Service adfssrv
Por padrão, todos os registros de contas ficarão assim:
Depois que o usuário autentica com sucesso (com base em senha), o endereço IP é automaticamente adicionado à lista de itens conhecidos.
Se o limite de bloqueio for atingido, a conta será bloqueada automaticamente e a janela de observação será iniciada:
Mesmo que a conta esteja bloqueada, ela só é bloqueada em locais desconhecidos. O usuário ainda poderá acessar sua conta a partir de um local familiar.
Esta é uma melhoria maciça no recurso de bloqueio de extranet.
Em um cenário de força bruta, em que a conta está sendo constantemente bloqueada de locais desconhecidos, o que acontece quando o proprietário da conta tenta acessar sua conta também de um local desconhecido?
Ele não poderá acessar sua conta. No entanto, ele pode entrar em contato com o administrador para ter seu endereço IP atual adicionado nos locais conhecidos:
Set-AdfsAccountActivity -Identity <UPN> -AdditionalFamiliarIps "IP"
NOTA: A qualquer momento, a atividade da conta de bloqueio inteligente da extranet pode ser definida como padrão:
Set-AdfsAccountActivity -Identity <UPN> -Clear
O log de tentativa de acesso à conta será exibido no respectivo nod do ADFS em "Windows Logs/Segurança do Windows"
Aqui está um exemplo do log:
The Federation Service failed to issue a valid token. See XML for failure details.
Activity ID: 6d265a76-f305-4ede-a7c1-316c35514791
Additional Data
XML: <?xml version="1.0" encoding="utf-16"?>
<AuditBase xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:type="AppTokenAudit">
<AuditType>AppToken</AuditType>
<AuditResult>Failure</AuditResult>
<FailureType>GenericError</FailureType>
<ErrorCode>N/A</ErrorCode>
<ContextComponents>
<Component xsi:type="ResourceAuditComponent">
<RelyingParty>https://adfs.contoso.com/adfs/services/trust</RelyingParty>
<ClaimsProvider>N/A</ClaimsProvider>
<UserId>user@contoso.com</UserId>
</Component>
<Component xsi:type="AuthNAuditComponent">
<PrimaryAuth>N/A</PrimaryAuth>
<DeviceAuth>false</DeviceAuth>
<DeviceId>N/A</DeviceId>
<MfaPerformed>false</MfaPerformed>
<MfaMethod>N/A</MfaMethod>
<TokenBindingProvidedId>false</TokenBindingProvidedId>
<TokenBindingReferredId>false</TokenBindingReferredId>
<SsoBindingValidationLevel>NotSet</SsoBindingValidationLevel>
</Component>
<Component xsi:type="ProtocolAuditComponent">
<OAuthClientId>N/A</OAuthClientId>
<OAuthGrant>N/A</OAuthGrant>
</Component>
<Component xsi:type="RequestAuditComponent">
<Server>https://adfs.contoso.com/adfs/services/trust</Server>
<AuthProtocol>WSFederation</AuthProtocol>
<NetworkLocation>Extranet</NetworkLocation>
<IpAddress>1.2.3.4</IpAddress>
<ForwardedIpAddress>1.2.3.4</ForwardedIpAddress>
<ProxyIpAddress>N/A</ProxyIpAddress>
<NetworkIpAddress>N/A</NetworkIpAddress>
<ProxyServer>WAP</ProxyServer>
<UserAgentString>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36</UserAgentString>
<Endpoint>/adfs/ls/</Endpoint>
</Component>
</ContextComponents>
</AuditBase>
Espero que isto ajude.