Faccio riferimento a un vecchio articolo datato 2014, nel quale vi parlavo di uno script PS1 che avevo lasciato su un Domain Controller della rete per verificare l’utilizzo di una password errata per un determinato account di dominio. Quello script mi è tornato utile ancora una volta e oggi vi propongo il suo ultimo aggiornamento, in grado di monitorare il blocco dell’account di Active Directory, con conseguente mail di allerta a 3 diversi indirizzi di posta (mio e di due colleghi, in CC).
L’originale è ancora disponibile:
Cosa è cambiato?
L’ID dell’evento sotto monitor, come prima cosa: si tratta del 4740 e l’operazione pianificata si crea ancora alla stessa identica maniera, con l’eccezione del richiamo al prompt di PowerShell che ora utilizzo in maniera classica, passandogli poi parametri da riga di comando che vanno a richiamare il nuovo script:
<# | |
ACTIVE DIRECTORY: Alert mail quando un account utilizza una password errata | |
------------------------------------------------------------------------------- | |
Autore: GSolone | |
Utilizzo: È necessario schedulare questo script quando si presenta l'evento da monitorare | |
(nel caso specifico qui di seguito è il 4740, account locked) | |
Versione: 0.2 | |
Ultima modifica: 12-05-2016 | |
Modifiche: | |
0.2- modificato evento monitorato, modificato header script, modificato array di invio mail e integrati i CC nel Send-MailMessage | |
0.1- incluso l'if che permette di procedere con l'invio mail solo se l'account utente che ha usato una password errata è quello specificato nella variabile AccountMonitor | |
------------------------------------------------------------------------------- | |
Info: | |
1a versione: http://gioxx.org/2014/07/07/powershell-account-di-dominio-bloccato-o-utilizzo-di-password-errata-mandami-una-mail-con-levento/ | |
------------------------------------------------------------------------------- | |
RAPIDO PROMEMORIA (Event Viewer): | |
-InstanceID 4740: account bloccato | |
-InstanceID 4771: password errata | |
#> | |
#-----------------------------------------------# | |
# SPECIFICARE L'ACCOUNT DA MONITORARE: # | |
$AccountMonitor = 'ACCOUNT_AD' | |
#-----------------------------------------------# | |
Import-Module ActiveDirectory | |
$EventDetails = Get-EventLog -LogName Security -InstanceID 4740 -Newest 1 | Where-Object { $_.message -match $AccountMonitor } | |
$LockedAccount = $($EventDetails.ReplacementStrings[0]) | |
if ($AccountMonitor -eq $LockedAccount) { | |
$EventDetailsTime = $EventDetails.TimeGenerated | |
$EventDetailsMessage = $EventDetails.Message | |
$messageParameters = @{ | |
Subject = "ALERT: Account $LockedAccount bloccato" | |
Body = "Qualcuno ha utilizzato una password errata per l'account $LockedAccount (ultimo tentativo il $EventDetailsTime), l'account e' stato quindi BLOCCATO su Active Directory, occorre sbloccarlo!`n`nDettagli evento:`n`n$EventDetailsMessage" | |
From = "alert@contoso.com" | |
SmtpServer = "smtp.contoso.com" | |
} | |
Send-MailMessage @messageParameters -To "admin1@contoso.com" -CC "admin2@contoso.com", "admin3@contoso.com" -Priority High | |
} |
Nel nuovo script è poi cambiato il testo della segnalazione che arriverà a mezzo mail, la parte commentata (per darle un aspetto migliore, nulla più) e il modo di inviare la mail ai destinatari, che mi permette così di utilizzare anche il -CC
e la priorità (-Priority
). Già messo alla prova, non fallisce un colpo, permettendo di diventare assolutamente reattivi nei confronti del monitorato “ACCOUNT_AD” (da modificare con l’utente che volete realmente tenere sotto controllo).
Come già detto, l’operazione pianificata sul server riguarderà l’evento 4740, il quale lancerà PowerShell passandogli come parametro lo script che nel frattempo avrete salvato in una cartella sul server (nel mio caso, C:\Script):
Ricordate che, in tutto questo, sarà necessario che la macchina sulla quale farete girare il file PS1 abbia la policy di esecuzione script non firmati, basterà lanciare (da PowerShell):
Set-ExecutionPolicy Unrestricted
e confermare la scelta quando vi verrà chiesto a video.
Con una ulteriore modifica, si potrebbe chiedere allo script di sbloccarlo automaticamente dopo un certo intervallo di tempo. Non l’ho volutamente ancora sviluppato perché non è la richiesta ricevuta, ma nessuno impedisce a voi di completare il quadro (e poi magari toccherà anche a me, probabilmente vi basterà attendere) :-)
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)