Come trovare utenti bloccati in Active Directory con PowerShell

Gli utenti della tua organizzazione si dimenticano mai le loro password? Sicuramente no! Un utente di Active Directory ha mai bloccato il proprio account? Assolutamente no! Vediamo cosa possiamo fare per trovare gli utenti bloccati in Active Directory con PowerShell!

Smetti di lottare con le chiamate per il ripristino delle password e i blocchi degli account in Active Directory. Ottieni una prova GRATUITA di Specops uReset.

Il tuo network è mai stato infettato da malware che cerca di autenticarsi con il maggior numero possibile di account utente di dominio? Spero di no, ma l’ho visto accadere alcune volte. Gli utenti e i worm sono solo due delle ragioni per cui uno o più account AD possono essere bloccati. A seconda della tua politica sulle password, i blocchi possono essere un evento quotidiano o verificarsi solo occasionalmente.

Indipendentemente dalla ragione o dalla situazione, i blocchi degli account influiscono sugli utenti. Poiché dipendono dal proprio account di dominio Active Directory per quasi tutto, si accorgono immediatamente quando viene bloccato. L’account può essere riattivato dal tuo servizio di assistenza, ma cosa succede se accade di nuovo? … e ancora. … e ancora. Trovare la causa principale di questo problema è importante.

Un modo per farlo è utilizzare PowerShell e il modulo ActiveDirectory. Utilizzando il cmdlet Search-AdAccount all’interno del modulo Active Directory, puoi facilmente individuare tutti gli account attualmente bloccati in tutto il tuo dominio.

Correlato: Come installare il modulo Active Directory PowerShell

Trova gli utenti bloccati in Active Directory con PowerShell

Per cercare gli account bloccati, puoi eseguire il comando Search-AdAccount utilizzando il parametro LockedOut. Questo restituirà tutti gli utenti attualmente bloccati a condizione che tu abbia il diritto di visualizzarli.

Search-AdAccount -LockedOut

Questo comando è ottimo, ma cosa fare se hai un account che continua a essere bloccato e devi capire da quale sistema proviene? Questa è una situazione comune quando hai un’infezione da malware da qualche parte nella tua rete o forse quando hai un amministratore distratto che ha dimenticato di disconnettersi da una sessione di desktop remoto. Non è mai successo, vero?

Per trovare la fonte di un blocco di Active Directory, dovrai prima assicurarti di interrogare il controller di dominio corretto. In questo caso, sarà il controller di dominio con il ruolo di emulatore PDC.

Trova il detentore del ruolo PDCe.

Tutte le autenticazioni delle password arriveranno a questo controllore di dominio che detiene il ruolo PDCe, quindi è sempre il posto migliore da verificare. Per trovare il controllore di dominio con il ruolo PDCe, è possibile verificare la proprietà PDCEmulator restituita dal cmdlet Get-ADDomain.

$pdce = (Get-ADDomain).PDCEmulator

Cercando nel registro eventi per i blocchi

Una volta identificato il controllore di dominio che detiene il ruolo PDCe, sarà necessario interrogare il registro eventi di sicurezza (log di sicurezza) di questo controllore di dominio per l’evento ID 4740. L’evento ID 4740 viene registrato ogni volta che un account viene bloccato. Puoi farlo con il cmdlet Get-WinEvent.

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

Sei così vicino a trovare gli utenti bloccati in Active Directory con PowerShell!

Analisi del nome utente e della posizione

Questo restituirà tutti gli eventi di blocco, ma non mostra immediatamente i nomi utente e i computer su cui è stato eseguito il blocco. Per trovare il nome utente, sarà necessario approfondire una proprietà restituita da Get-WinEvent chiamata 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]}}

Puoi vedere che ho spostato il filtro hashtable per evitare il wrap del codice e, cosa più importante, ho usato le proprietà calcolate di Select-Object per estrarre il nome utente e il nome del computer dalla proprietà Properties. In ciascuno di questi eventi, il nome utente bloccato è sempre il primo elemento nell’array Properties, mentre il secondo elemento è sempre il nome del computer in cui è stato eseguito il blocco.

Sfruttare PowerShell per sbloccare gli account AD.

Ora che hai trovato gli utenti bloccati dal tuo dominio attivo, come fai a sbloccare gli account? Il modulo ActiveDirectory in PowerShell offre il comando Unlock-ADAccount che permette di sbloccare rapidamente un account. Come mostrato di seguito, utilizza PowerShell per sbloccare gli account AD. Questo comando funziona sia in Windows PowerShell che in PowerShell 7, una volta caricato tramite il modulo ActiveDirectory.

Unlock-ADAccount -Identity 'lockeduser'

Forse stai cercando di sbloccare tutti gli utenti bloccati contemporaneamente. Utilizza il comando Search-ADAccount con il parametro -LockedOut e invia i risultati al comando Unlock-ADAccount, come mostrato di seguito.

Search-ADAccount -LockedOut | Unlock-ADAccount

Riduci le chiamate all’helpdesk e aggiorna le credenziali nella cache per gli utenti remoti anche senza connessione VPN con una soluzione di reset della password self-service. Ottieni una demo di Specops uReset!

Riassunto

Find Locked Out Users in Active Directory

A questo punto, dovresti essere in grado di individuare rapidamente tutti gli account attualmente bloccati nel tuo dominio e vedere la cronologia di tutti i blocchi degli account. Ora è il momento di avere una seria conversazione con Joe riguardo a lasciare aperte quelle sessioni RDP…

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