Esaminare gli account bloccati

Talvolta può capitare che gli account di Active Directory vengano bloccati a causa di tentativi di accesso con password errata. Spesso questo problema può accadere se l’utente dopo aver cambiato la password non ha aggiornato le credenziali sui vari dispositivi o applicativi che utilizza. Molto spesso il problema può essere legato alle seguenti cause che generano tentativi di accesso ripetuti con credenziali errate:

  • Password di rete salvate relative all’account
  • Operazioni pianificate eseguite con le credenziali dell’account
  • Servizi in esecuzione con le credenziali dell’account
  • Applicazioni che utilizzano al loro interno con le credenziali dell’account
  • Utilizzo delle credenziali dell’account per connettersi a reti wifi
  • Utilizzo delle credenziali dell’account per connettersi via Remote Desktop
  • Accessi eseguiti da smartphone, tablet che fanno uso delle credenziali dell’account per leggere la posta, connettersi a reti wifi o aprire VPN
  • Il virus Conficker può causare tentativi di attacchi a forza bruta sui membri del gruppo built-in Administrators nel dominio.
  • Accessi eseguiti da più client con versioni di OS differenti in cui può accadere che le versioni legacy dei client non riescano a rilevare correttamente il cambio di password.

In infrastrutture con Active Directory è possibile analizzare gli eventi di sicurezza del Domain Controller e in particolare del PDC emulator per rilevare i tentativi di accesso falliti da parte di un utente e risalire al computer che genere il problema.

Per eseguire questo tipo di analisi è possibile verificare gli eventi di sicurezza con ID 4740 sul domain controller col ruolo di PDC, infatti a partire da Windows Server 2008 sul PDC viene registrato un evento con ID 4740 ogni qualvolta un account viene bloccato. In una foresta AD con livello funzionale 2008 r2 per far sì che gli eventi di sicurezza con ID 4740 vengano registrati occorre abilitare sul DC la Group Policy locale Computer Configuration\Windows Settings\Security Settings\Advanced Audit Configuration\Logon/Logoff\Audit Account Lockout attivando l’audit per Success e il Failure:

image

Per informazioni riguardo al supporto di questa GPO nelle varie versioni del sistema operativo si veda Which Versions of Windows Support Advanced Audit Policy Configuration?.

Per esportare gli eventi 4740 è possibile utilizzare i seguenti comandi (a riguardo si vedano i suggerimenti nel post Getting event log contents by email on an event log trigger):

del C:\SecEvt4740.txt
wevtutil qe Security “/q:*[System [(EventID=4740)]]” /f:text /rd:true /c:1 > C:\SecEvt4740.txt

Per identificare il DC col ruolo fsmo di PDC è possibile utilizzare il seguente comando (a riguardo si veda Identify the PDC emulator):

dsquery server -hasfsmo pdc

Ovviamente è anche possibile utilizzare PowerShell tramite i cmdlet Get-EventLog e Get-WinEvent introdotto in PowerShell 2.0 (a riguardo si veda il post Hey, Scripting Guy! How Can I Read from Windows Event Logs with Windows PowerShell 2.0?) come descritto nel post Tracing the Source of Account Lockouts in cui viene descritto uno script in cui viene richiesto un account da controllare e viene eseguita sul PDC la ricerca degli eventi di sicurezza con ID 4740: 

# Richiesta Utente
$User = Read-Host -Prompt “Please enter a user name”

 # Ricerca  PDC
$PDC = Get-ADDomainController -Discover -Service PrimaryDC

 # Ricerca eventi di lockout relativi all’utente verificatisi nell’ultima ora
Get-WinEvent -ComputerName $PDC -Logname Security -FilterXPath “*[System[EventID=4740 and TimeCreated[timediff(@SystemTime) <= 3600000]] and EventData[Data[@Name=’TargetUserName’]=’$User’]]” | Select-Object TimeCreated,@{Name=’User Name’;Expression={$_.Properties[0].Value}},@{Name=’Source Host’;Expression={$_.Properties[1].Value}}

Per un altro esempio si veda il post Use PowerShell to Find the Location of a Locked-Out User e il relativo script Get-LockedOutLocation.

In alternativa è possibile abilitare il log del servizio Net Logon (a riguardo si veda la KB 109626 Enabling debug logging for the Net Logon service) e consultare poi il file %windir%\debug\netlogon.log ad esempio tramite i comandi (per accedere al file col servizio NetLogon attivo occorre prima farne una copia):

type netlogon.log |find /i “0xC000006A” >badpassword.txt
type netlogon.log |find /i “0xC0000234
>lockedout.txt

In Windows 8 e Windows Server 2012 nel file netlogon.log viene registrato anche l’ID del processo dell’applicazione che ha causato il lockout rendendo più semplice l’analisi.

Per ulteriori informazioni e suggerimenti su come eseguire il troubleshooting del lockup dgli account si veda anche il post Troubleshooting account lockout the PSS way.

Microsoft ha reso disponibili per Windows Server 2003 e Windows XP gli Account Lockout and Management Tools  e l’Account Lockout Status (LockoutStatus.exe) per semplificare il processo di troubleshotting.

Un altro tool interessante è il Netwrix Account Lockout Examiner che permette un’analisi granulare con una GUI semplice del blocco degli account, del tool esiste una versione freeware ed una versione a pagamento che permette l’implementazione di una struttura di helpdesk per supportare gli utenti in situazioni di lockout per la comparazione delle funzionalità si veda Netwrix Account Lockout Examiner – Freeware and Enterprise Editions.