Come controllare la scadenza della password dell’account utente AD con PowerShell

Active Directory (AD) è utilizzato da molte organizzazioni per la gestione degli utenti e i servizi di autenticazione. Capire la scadenza della password degli account utente di AD è importante per mantenere la sicurezza. Utilizzando PowerShell, questo compito può essere automatizzato, rendendo la gestione più semplice. Questo articolo spiegherà come controllare la scadenza della password degli account utente di AD utilizzando PowerShell, passo dopo passo.

Indice

Comando per controllare la scadenza della password

Per controllare la scadenza della password di un account utente di Active Directory, combina il cmdlet PowerShell Get-ADUser con diversi attributi. Di seguito è riportato il comando base per controllare la scadenza della password per un utente specifico.

# Controllo scadenza password dell'utente
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Mai Scade"}}}

Questo comando recupera “PasswordLastSet” (l’ultima volta che la password è stata impostata), se la password è impostata per non scadere mai “PasswordNeverExpires”, e se la password ha una scadenza, calcola e visualizza quando sarà questa scadenza.

Commenti

  • Il cmdlet Get-ADUser è utilizzato per recuperare informazioni sull’utente da AD.
  • Il parametro -Identity specifica il nome utente target.
  • Con il parametro -Properties, specifici quali attributi vuoi recuperare. Di default, non tutti gli attributi sono recuperati.
  • Utilizza il cmdlet Select-Object per scegliere le informazioni che vuoi visualizzare e aggiungere proprietà personalizzate.

Esempio di script 1: Elenco degli utenti scaduti

Uno script per identificare e elencare gli utenti le cui password sono scadute tra tutti gli utenti di Active Directory può aiutare a verificare la conformità con le politiche di sicurezza organizzative e automatizzare le attività di gestione degli account.

Il seguente script PowerShell rileva gli utenti le cui password sono scadute confrontando la data corrente e produce un elenco di questi utenti.

# Elenco utenti scaduti
Import-Module ActiveDirectory
$oggi = (Get-Date)
Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $oggi
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}

Commenti

  • Import-Module ActiveDirectory rende disponibili i cmdlet relativi ad Active Directory. Questa linea è sempre necessaria prima di eseguire script relativi ad AD.
  • Il cmdlet Get-Date è utilizzato per ottenere la data corrente, che serve come base per determinare la scadenza della password.
  • Get-ADUser -Filter * prende di mira tutti gli utenti in Active Directory.
  • Il cmdlet Where-Object filtra gli utenti le cui password non sono permanentemente valide e la cui data di impostazione della password più il periodo massimo valido definito dalla politica delle password del dominio è antecedente alla data odierna.
  • Utilizza il cmdlet Select-Object per selezionare solo le informazioni necessarie e aggiungere la proprietà personalizzata PasswordExpires per calcolare e visualizzare la data di scadenza della password.

Questo script facilita la gestione degli utenti scaduti, contribuendo a mantenere la sicurezza.

Esempio di script 2: Email di notifica automatiche prima della scadenza

Notificare agli utenti all’interno dell’organizzazione che la loro password sta per scadere può migliorare l’esperienza utente e rafforzare la sicurezza. Il seguente script PowerShell rileva gli utenti le cui password scadranno entro un numero specificato di giorni e invia automaticamente email di notifica a questi utenti.

# Invio email di notifica prima della scadenza
Import-Module ActiveDirectory
$periodoNotifica = 14 # Numero di giorni prima dell'invio della notifica
$smtpServer = "smtp.example.com" # Indirizzo del server SMTP
$daEmail = "admin@example.com" # Indirizzo email del mittente
$oggetto = "La tua password scadrà presto" # Oggetto dell'email

$utenti = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $periodoNotifica)) -lt (Get-Date)
}

foreach ($utente in $utenti) {
    $aEmail = $utente.EmailAddress
    $corpo = "Caro $($utente.Name),\n\nLa tua password scadrà in meno di $periodoNotifica giorni. Per favore

 cambia la tua password il prima possibile.\n\nCordiali saluti,\nIl tuo team IT";
    Send-MailMessage -SmtpServer $smtpServer -From $daEmail -To $aEmail -Subject $oggetto -Body $corpo
}

Commenti

  • Questo script utilizza la variabile $periodoNotifica per definire quando iniziare a notificare gli utenti, impostata su 14 giorni in anticipo in questo esempio.
  • Il cmdlet Get-ADUser recupera le informazioni dell’utente incluse gli attributi EmailAddress, PasswordLastSet e PasswordNeverExpires.
  • Il cmdlet Where-Object filtra per gli utenti la cui scadenza della password si sta avvicinando.
  • Il ciclo foreach viene utilizzato per inviare un’email a ciascun utente rilevante utilizzando il cmdlet Send-MailMessage.

Eseguendo regolarmente questo script, gli utenti possono prendere le misure appropriate prima che le loro password scadano, aiutando a mantenere la sicurezza degli account e a ridurre il numero di ticket di supporto.

Esempio di script 3: Disabilitazione automatica degli account utente scaduti

Come misura di sicurezza, disabilitare automaticamente gli account utente le cui password sono scadute può ridurre il rischio di accessi non autorizzati. Il seguente script PowerShell rileva gli account utente con password scadute e disabilita automaticamente tali account.

# Disabilitazione automatica degli utenti scaduti
Import-Module ActiveDirectory
$oggi = (Get-Date)

$utentiScaduti = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
    $_.PasswordNeverExpires -eq $false -and
    ($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $oggi
}

foreach ($utente in $utentiScaduti) {
    # Disabilitazione dell'account utente
    Disable-ADAccount -Identity $utente.SamAccountName
    Write-Output "Account disabilitato: $($utente.Name)";
}

Commenti

  • Import-Module ActiveDirectory importa il modulo Active Directory, consentendo l’uso dei cmdlet relativi ad AD.
  • Il cmdlet Get-ADUser recupera tutte le informazioni dell’utente e utilizza Where-Object per filtrare gli utenti con password scadute.
  • Nel ciclo foreach, il cmdlet Disable-ADAccount viene utilizzato per disabilitare gli account degli utenti le cui password sono scadute.
  • Lo script produce un output nella console quando un account utente viene disabilitato.

Questo script è particolarmente utile per la gestione degli account in grandi organizzazioni, automatizzando la conformità con le politiche di sicurezza e riducendo il carico di lavoro amministrativo. Eseguendo regolarmente lo script si garantisce che gli account con password scadute siano disabilitati, migliorando la sicurezza del sistema.

Considerazioni sulla sicurezza

Quando si automatizzano la politica delle password e la gestione degli account utente, diverse considerazioni sulla sicurezza dovrebbero essere tenute a mente. Prestare attenzione ai seguenti punti quando si implementano e si operano questi script.

  1. Applicare il Principio del Minimo Privilegio: L’account che esegue lo script dovrebbe essere concesso con i permessi minimi necessari. Ad esempio, se si leggono solo le informazioni sulla password dell’utente, dovrebbero essere assegnati permessi di sola lettura, e solo i permessi necessari per disabilitare gli account dovrebbero essere concessi per quelle operazioni.
  2. Protezione dello Script: Poiché gli script possono contenere informazioni potenzialmente sensibili o comandi che modificano il sistema, dovrebbero essere conservati in modo sicuro per proteggere contro l’accesso non autorizzato.
  3. Registrazione e Monitoraggio: Le modifiche apportate dagli script dovrebbero essere adeguatamente registrate e monitorate. Ciò consente una risposta rapida a comportamenti inaspettati o incidenti di sicurezza.
  4. Mantenere i Meccanismi di Notifica: Specialmente per gli script che notificano agli utenti l’imminente scadenza della password o disabilitano automaticamente gli account, è consigliabile avere meccanismi in atto per notificare agli amministratori o agli utenti quando vengono intraprese azioni.
  5. Revisione e Aggiornamento Regolari: Gli script dovrebbero essere regolarmente rivisti e aggiornati secondo necessità, in risposta ai cambiamenti nelle politiche organizzative o agli aggiornamenti dell’ambiente Active Directory.

Adottando queste considerazioni sulla sicurezza, i processi automatizzati facilitati da questi script possono operare efficacemente mantenendo l’allineamento con gli standard di sicurezza organizzativi.

Conclusione

Utilizzare PowerShell per controllare e gestire la scadenza delle password degli account utente di Active Directory è essenziale per mantenere la sicurezza organizzativa. Utilizzando gli script introdotti in questo articolo, è possibile ottenere un monitoraggio efficiente delle scadenze delle password degli account utente di AD, notifiche prima della scadenza e disabilitazione automatica degli account in base alle politiche di sicurezza.

È importante che questi processi automatizzati supportino e migliorino le politiche di sicurezza dell’organizzazione. Tuttavia, l’automazione deve essere accompagnata dall’applicazione del principio del minimo privilegio, dalla protezione sicura degli script, dal monitoraggio e dalla registrazione appropriati, dalla manutenzione dei meccanismi di notifica e dalla revisione e aggiornamento regolari, tra le altre considerazioni sulla sicurezza.

In definitiva, combinando opportunamente queste migliori pratiche e script di automazione, la gestione dell’ambiente Active Directory può diventare più efficiente e sicura.

Indice