Como Encontrar Usuários Bloqueados no Active Directory com o PowerShell

você já percebeu se os usuários em sua organização esquecem suas senhas? com certeza não! um usuário do active directory já bloqueou sua conta? de jeito nenhum! vamos ver o que podemos fazer para encontrar usuários bloqueados no active directory com o powershell!

pare de enfrentar chamadas de redefinição de senha e bloqueios de conta no active directory. obtenha uma avaliação gratuita do specops ureset.

sua rede já foi infectada por malware que tenta autenticar-se com o maior número possível de contas de usuário de domínio? espero que não, mas já vi isso acontecer algumas vezes. usuários e worms são apenas duas das razões pelas quais uma ou mais contas do ad podem ser bloqueadas. dependendo da sua política de senha, os bloqueios podem ocorrer diariamente ou apenas ocasionalmente.

independentemente da razão ou situação, bloqueios de conta afetam seus usuários. como eles dependem de sua conta de domínio no active directory para quase tudo, eles imediatamente perceberão quando ela estiver bloqueada. a conta pode ser reativada pela sua central de ajuda, mas e se isso acontecer novamente? …e novamente. …e novamente. descobrir a causa raiz desse problema é importante.

Uma maneira de fazer isso é usar o PowerShell e o módulo ActiveDirectory. Ao usar o cmdlet Search-AdAccount dentro do módulo Active Directory, você pode facilmente rastrear todas as contas que estão atualmente bloqueadas em todo o seu domínio.

Relacionado: Como instalar o módulo Active Directory PowerShell

Encontrar Usuários Bloqueados no Active Directory com PowerShell

Para procurar contas bloqueadas, você pode executar o comando Search-AdAccount usando o parâmetro LockedOut. Isso retornará todos os usuários atualmente bloqueados, desde que você tenha permissão para visualizar isso.

Search-AdAccount -LockedOut

Este comando é ótimo, mas e se você tiver uma conta que está continuamente sendo bloqueada e precisa descobrir de qual sistema isso está acontecendo? Essa é uma tarefa comum sempre que você tem uma infecção por malware em algum lugar em sua rede ou talvez quando tem um administrador esquecido que esqueceu de fazer logout de uma sessão de desktop remoto. Isso nunca aconteceu, certo?

Para encontrar a origem de um bloqueio no Active Directory, primeiro você precisará garantir que está consultando o controlador de domínio correto. Neste caso, será o controlador de domínio com a função de emulador PDC.

Encontrar o Titular da Função PDCe

Toda autenticação de senha virá para este DC que detém a função de PDCe, sendo sempre o melhor local para verificar. Para encontrar o controlador de domínio com a função de PDCe, você pode verificar a propriedade PDCEmulator retornada pelo cmdlet Get-ADDomain.

$pdce = (Get-ADDomain).PDCEmulator

Examinando o Log de Eventos em Busca de Bloqueios

Assim que tiver o DC que detém a função de PDCe, você precisará consultar o log de eventos de segurança (logs de segurança) deste DC para o evento ID 4740. O evento ID 4740 é registrado sempre que uma conta é bloqueada. Faça isso com o cmdlet Get-WinEvent.

Get-WinEvent -ComputerName $pdce -FilterHashTable @{'LogName' ='Security';'Id' = 4740}

Você está muito mais perto de encontrar os usuários bloqueados no Active Directory com o PowerShell!

Analisando o Nome de Usuário e a Localização

Isso retornará todos os eventos de bloqueio, mas não mostra imediatamente os nomes de usuários e computadores em que o bloqueio foi realizado. Para encontrar o nome de usuário, você precisará explorar um pouco mais a propriedade que o Get-WinEvent retorna, chamada Properties.

$filter = @{'LogName' = 'Security';'Id' = 4740}
$events = Get-WinEvent -ComputerName $pdce -FilterHashTable $filter
$events | Select-Object @{'Name' ='UserName'; Expression={$_.Properties[0]}}, @{'Name' ='ComputerName';Expression={$_.Properties[1]}}

Perceba que movi o filtro do hashtable para evitar a quebra de código e, mais importante, usei as propriedades calculadas do Select-Object para extrair o nome de usuário e o nome do computador da propriedade Properties. Em cada um desses eventos, o nome de usuário bloqueado é sempre o primeiro elemento na matriz Properties, enquanto o segundo elemento é sempre o nome do computador onde o bloqueio foi realizado.

Aproveitando o PowerShell para Desbloquear Contas no AD

Agora que você encontrou seus usuários do AD bloqueados, como você desbloqueia as contas? O módulo ActiveDirectory no PowerShell oferece o comando Unlock-ADAccount, tornando fácil colocar um cliente de volta ao trabalho. Como mostrado abaixo, use o PowerShell para desbloquear contas do AD. Esse comando funciona tanto no Windows PowerShell quanto no PowerShell 7, uma vez carregado via módulo ActiveDirectory.

Unlock-ADAccount -Identity 'lockeduser'

Talvez você queira desbloquear todos os usuários bloqueados de uma vez. Use Search-ADAccount com o parâmetro -LockedOut e encaminhe os resultados para o comando Unlock-ADAccount, como mostrado abaixo.

Search-ADAccount -LockedOut | Unlock-ADAccount

Reduza chamadas para o serviço de suporte & atualize credenciais em cache para usuários remotos, mesmo fora da VPN, com uma solução de redefinição de senha de autoatendimento. Veja uma demonstração do Specops uReset!

Resumo

Find Locked Out Users in Active Directory

Até agora, você deveria ser capaz de identificar rapidamente todas as contas que estão atualmente bloqueadas em seu domínio, além de ver um histórico de todos os bloqueios de conta. Agora é hora de ter uma conversa séria com o Joe sobre deixar essas sessões de RDP abertas…

Source:
https://adamtheautomator.com/find-locked-out-users-in-active-directory-powershell/