Windows Server 2025 / Configurare password e blocco account con i FGPP

In Windows Server 2025, i criteri granulari per le password (Fine-Grained Password Policies, FGPP) consentono di assegnare requisiti di password e blocco diversi a utenti o gruppi specifici dello stesso dominio. In questa esercitazione si assegna un oggetto impostazioni password (Password Settings Object, PSO) al solo gruppo di laboratorio e si verifica il criterio effettivo, lasciando invariato quello predefinito del dominio. Un normale oggetto Criteri di gruppo (Group Policy Object, GPO) collegato a un'unità organizzativa (OU) di utenti non crea un criterio di password di dominio distinto per quella OU.

Distinguere criterio predefinito e criteri granulari

I FGPP si applicano agli oggetti utente e ai gruppi di sicurezza globali, non direttamente alle OU, come spiega la guida Microsoft ai criteri granulari per le password. Occorrono il modulo Active Directory (AD) di Windows PowerShell su DC1 o un PC di gestione con gli strumenti di amministrazione remota del server (RSAT), e autorizzazioni AD adeguate: per impostazione predefinita le possiedono i Domain Admins, ma si possono delegare. Essere amministratore locale del PC non basta. Prima delle query verificare che la sessione operi nel dominio di laboratorio ad.example.test, perché i comandi seguenti non specificano un dominio alternativo.

Get-ADDefaultDomainPasswordPolicy
Get-ADUserResultantPasswordPolicy -Identity 'labuser1'
Get-ADFineGrainedPasswordPolicy -Filter *

Il primo comando legge il criterio predefinito del dominio, il secondo il PSO risultante per labuser1 e il terzo elenca i PSO esistenti. Annotare i valori iniziali e le assegnazioni, senza registrare password. Per un utente si determina un solo PSO effettivo: non si combinano i valori più restrittivi di PSO diversi. Un'assegnazione diretta all'utente ha priorità su quelle ottenute tramite gruppi; tra candidati dello stesso tipo prevale il valore Precedence più basso. Perciò 100 non garantisce da solo che questo esempio vinca. Se esistono già assegnazioni o conflitti di nome e precedenza, fermarsi ed esaminarli prima di creare il criterio.

Verificare i destinatari e scegliere i valori di laboratorio

Usare il gruppo GG_LabUsers e l'utente ordinario labuser1 preparati nella lezione sulla creazione di utenti, gruppi e OU. In Utenti e computer di Active Directory (dsa.msc) controllare che il gruppo abbia ambito Globale e tipo Sicurezza, quindi verificare tutti i membri, anche quelli derivanti da gruppi annidati. Procedere soltanto se l'ambito è interamente di laboratorio: se comprende amministratori, account di servizio o utenti reali, interrompere la prova senza modificare i membri di gruppi di produzione. I valori seguenti servono a osservare il comportamento, non costituiscono una configurazione universale consigliata.

Impostazione Valore di laboratorio
Lunghezza minima e complessità 14 caratteri; complessità abilitata
Cronologia 5 password
Età minima e massima 0 giorni e 30 giorni
Soglia di blocco 5 errori di autenticazione conteggiati
Durata del blocco e finestra di osservazione 15 minuti ciascuna
Crittografia reversibile Disabilitata

L'età minima di 0 giorni facilita cambi ripetuti durante la prova; la durata massima di 30 giorni e la soglia di 5 errori sono anch'esse scelte dimostrative. Non copiarle automaticamente in produzione. La finestra di osservazione non deve superare la durata del blocco: qui entrambe sono di 15 minuti. Le scelte operative dipendono dal rilevamento degli abusi, dall'autenticazione a più fattori (MFA), dai tipi di account e dalle procedure di recupero. Una soglia troppo bassa può facilitare attacchi di negazione del servizio contro gli utenti; lunghezza, complessità e scadenza non descrivono da sole tutta la protezione dell'account.

Creare e assegnare il PSO

Aprire Windows PowerShell con privilegi elevati e con le autorizzazioni AD richieste, dopo aver verificato che Lab-Password-Policy non esista già e che precedenza e destinatari siano corretti. Il blocco definisce i parametri, crea il PSO, assegna il criterio a GG_LabUsers e legge il risultato per labuser1. Eseguire le operazioni per fasi: se la creazione restituisce un errore, fermarsi e non assegnare alla cieca un vecchio oggetto con lo stesso nome. I parametri sono documentati in New-ADFineGrainedPasswordPolicy.

$policyParameters = @{
    Name = 'Lab-Password-Policy'
    Precedence = 100
    MinPasswordLength = 14
    ComplexityEnabled = $true
    PasswordHistoryCount = 5
    MinPasswordAge = (New-TimeSpan -Days 0)
    MaxPasswordAge = (New-TimeSpan -Days 30)
    LockoutThreshold = 5
    LockoutDuration = (New-TimeSpan -Minutes 15)
    LockoutObservationWindow = (New-TimeSpan -Minutes 15)
    ReversibleEncryptionEnabled = $false
}
New-ADFineGrainedPasswordPolicy @policyParameters
Add-ADFineGrainedPasswordPolicySubject -Identity 'Lab-Password-Policy' -Subjects 'GG_LabUsers'
Get-ADUserResultantPasswordPolicy -Identity 'labuser1'

Il risultato atteso per labuser1 è Lab-Password-Policy con Precedence 100, lunghezza minima 14, complessità attiva, cronologia 5, età minima 0 giorni e massima 30 giorni, soglia 5, durata e finestra di osservazione di 15 minuti e crittografia reversibile disattivata. La sola creazione del PSO o la presenza del gruppo tra i destinatari non dimostra che sia il criterio effettivo dell’utente. Se il risultato differisce, controllare appartenenza, altri PSO e replica prima di riprovare; non ripetere la creazione.

In alternativa a PowerShell, aprire il Centro di amministrazione di Active Directory (dsac.exe), selezionare il dominio corretto e seguire Sistema (System) → Contenitore Impostazioni password (Password Settings Container). Nel riquadro Attività scegliere Nuovo → Impostazioni password, indicare Nome Lab-Password-Policy, Precedenza 100 e tutti i valori della tabella. In Si applica direttamente a scegliere Aggiungi, inserire GG_LabUsers e confermare. Selezionare poi labuser1 e usare Visualizza impostazioni password risultanti per verificarne l'effetto. È un percorso alternativo: non ricreare il criterio se è già stato creato con PowerShell.

Verificare il cambio password e interpretare lo stato

Il criterio non allunga né riscrive retroattivamente una password già memorizzata; le condizioni di scadenza possono invece cambiare in base all'età della password. Dopo aver verificato il PSO effettivo, accedere a CLIENT1 con l'account di dominio labuser1, premere Ctrl+Alt+Canc e scegliere Cambia password. In una macchina virtuale inviare la combinazione al sistema ospite tramite i comandi del programma di virtualizzazione. Inserire la password corrente e una nuova password univoca conforme ai requisiti, ripetendola nel campo di conferma; attendere la conferma di riuscita e verificare un successivo accesso normale. Non usare password pubblicate negli esempi e non inserire password in script, log o schermate. Non provocare errori ripetuti per dimostrare il blocco.

Non usare un amministratore o un account di servizio per una prova con password errate. La soglia riguarda gli errori di autenticazione effettivamente conteggiati: un singolo tentativo percepito dall'utente può comportare più richieste, ad esempio per i tentativi dei protocolli o delle applicazioni, come precisa la documentazione della soglia di blocco account. Se labuser1 si blocca inaspettatamente, verificare prima attività pianificate, servizi e connessioni con credenziali obsolete. Da una sessione amministrativa autorizzata si può leggere lo stato senza inserire password:

Get-ADUser -Identity 'labuser1' -Properties LockedOut,PasswordLastSet | Select-Object SamAccountName,LockedOut,PasswordLastSet

LockedOut descrive lo stato rilevato dal controller di dominio interrogato, non la causa del blocco. PasswordLastSet indica quando è stata impostata la password: non rivela il testo della password né dimostra che quella esistente rispetti la complessità attuale. Dopo un cambio riuscito la data dovrebbe riflettere il nuovo evento; interpretarla tenendo conto del controller interrogato, della replica e del contesto temporale.

Uno sblocco non elimina le credenziali obsolete presenti su dispositivi o applicazioni. Identificare l'utente, trovare l'origine degli errori e correggere le credenziali salvate prima di un eventuale sblocco mirato e autorizzato. Non ridurre i requisiti del criterio e non sbloccare indiscriminatamente tutti gli account per superare la prova.

Rimuovere l’assegnazione e verificare il criterio effettivo

Al termine, rimuovere soltanto l’assegnazione del PSO a GG_LabUsers. Controllare l'eventuale richiesta di conferma: l'operazione rimuove il collegamento del destinatario al criterio, senza eliminare il gruppo, gli utenti o il PSO. Leggere quindi di nuovo il risultato per l'utente e il criterio predefinito:

Remove-ADFineGrainedPasswordPolicySubject -Identity 'Lab-Password-Policy' -Subjects 'GG_LabUsers'
Get-ADUserResultantPasswordPolicy -Identity 'labuser1'
Get-ADDefaultDomainPasswordPolicy

Se non esiste un altro PSO applicabile, torna a valere il criterio predefinito del dominio e la query del PSO risultante può non restituire un oggetto. Distinguere questa situazione da un errore di autorizzazione o di query. Se compare un altro PSO, esaminarne l'assegnazione senza eliminarlo soltanto per ottenere un risultato vuoto. Confrontare il criterio predefinito con i valori iniziali: deve essere rimasto invariato. Rimuovere l'assegnazione non ripristina la password precedente; conservare in sicurezza quella nuova e valida. Prima di eliminare il PSO, controllare gli eventuali altri destinatari, oppure lasciarlo non assegnato se verrà riutilizzato.