Come impostare la lunghezza minima della password e la durata massima di validità su Windows utilizzando PowerShell

Punti chiave

  • La definizione di solidi criteri per le password è fondamentale per la sicurezza informatica.
  • Lo script PowerShell fornito automatizza le configurazioni dei criteri delle password su Windows.
  • Lo script per impostare la lunghezza minima della password richiede i privilegi di amministratore per essere eseguito.
  • I metodi automatizzati, come questo script per impostare la lunghezza minima della password, sono più efficienti delle configurazioni manuali, soprattutto in ambienti di grandi dimensioni.
  • Le revisioni e gli aggiornamenti regolari dei criteri sono essenziali per un approccio proattivo alla sicurezza.
  • L’integrazione con piattaforme come NinjaOne può amplificare i vantaggi di questi script.
  • Garantire requisiti coerenti per le password rafforza direttamente la sicurezza informatica.
  • Gli strumenti di automazione sono fondamentali nell’era della rapida espansione dell’IT e dell’aumento delle minacce informatiche.

Nell’ambito della sicurezza informatica, in continua evoluzione, la protezione dell’accesso degli account utente rimane un principio fondamentale. Poiché le aziende puntano a migliorare le misure di sicurezza, la definizione di requisiti appropriati per le password diventa fondamentale. Nel caso preso in esame in questo articolo, uno script PowerShell svolge un ruolo fondamentale automatizzando la modifica dei criteri delle password sui dispositivi Windows.

Background

Tradizionalmente, i professionisti IT e i fornitori di servizi gestiti (MSP) impostavano manualmente i requisiti delle password. Tuttavia, quando le infrastrutture crescono e la scalabilità diventa imperativa, i processi manuali diventano impraticabili. Questo script PowerShell per impostare la lunghezza minima della password risponde perfettamente alle nuove esigenza, consentendo agli amministratori di impostare lunghezze e periodi di validità specifici delle password per gli account locali sui sistemi Windows. Automatizzando queste attività banali ma essenziali, i professionisti IT possono garantire criteri coerenti per le password e, di conseguenza, un ambiente di sicurezza IT più solido.

Lo script per impostare la lunghezza minima della password

#Requires -Version 5.1

<#
.SYNOPSIS
    Set the minium password length or age for local accounts.
.DESCRIPTION
    Set the minium password length or age for local accounts.
.EXAMPLE
     -Length 14
    Set the minium password length for local accounts.
.EXAMPLE
     -Length 14 -MinAge 30 -MaxAge 42
    Set the minium password length, minium age, maximum age for local accounts.
.EXAMPLE
    PS C:> Set-MiniumPasswordRequirements.ps1 -Length 14 -Age 42
    Set the minium password length and age for local accounts.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
    LocalUserAccountManagement
#>

[CmdletBinding()]
param (
    [Parameter()]
    [ValidateRange(0, 14)]
    [int]
    $Length,
    [Parameter()]
    [ValidateRange(0, 998)]
    [int]
    $MinAge,
    [Parameter()]
    [ValidateRange(0, 999)]
    [int]
    $MaxAge
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
    function Get-LocalPasswordPolicy {
        param ()
        $Result = [PSCustomObject]@{
            MinimumLength = 0
            MaximumAge    = 0
            MinimumAge    = 0
        }
        $(net.exe accounts) -split "n" | ForEach-Object {
            $Line = $_ -split ":"
            if ($_ -like "Minimum password length*") {
                $Result.MinimumLength = "$($Line[1])".Trim(' ')
            }
            if ($_ -like "Maximum password age (days)*") {
                $Result.MaximumAge = "$($Line[1])".Trim(' ')
            }
            if ($_ -like "Minimum password age (days)*") {
                $Result.MinimumAge = "$($Line[1])".Trim(' ')
            }
        }
        $Result
    }

    $NetExeError = $false
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    # Get Current localhost password policy settings
    $CurrentSettings = Get-LocalPasswordPolicy
    
    if ($PSBoundParameters.ContainsKey("Length") -and -not ($CurrentSettings.MinimumLength -like $NewSettings.MinimumLength -or $CurrentSettings.MinimumLength -eq $NewSettings.MinimumLength)) {
        Write-Host "Changing Minimum Password Length from $($CurrentSettings.MinimumLength) to $Length"
        net.exe accounts /minpwlen:$Length
    }
    if ($PSBoundParameters.ContainsKey("MaxAge") -and
        -not (
            $(if ($CurrentSettings.MaximumAge -like "unlimited") { 0 }else { $CurrentSettings.MaximumAge }) -like
            $(if ($NewSettings.MaximumAge -like "unlimited") { 0 }else { $NewSettings.MaximumAge })
        )) {
        Write-Host "Changing Maximum Password Age from $($CurrentSettings.MaximumAge) to $MaxAge"
        if ($MaxAge -gt 0) {
            net.exe accounts /maxpwage:$MaxAge
        }
        else {
            net.exe accounts /maxpwage:unlimited
        }
    }
    if ($PSBoundParameters.ContainsKey("MinAge") -and -not ($CurrentSettings.MinimumAge -like $NewSettings.MinimumAge -or $CurrentSettings.MinimumAge -eq $NewSettings.MinimumAge)) {
        Write-Host "Changing Minimum Password Age from $($CurrentSettings.MinimumAge) to $MinAge"
        net.exe accounts /minpwage:$MinAge
    }

    # Get New localhost password policy settings and check if anything changed
    $NewSettings = Get-LocalPasswordPolicy
    
    if ($PSBoundParameters.ContainsKey("Length") -and ($PSBoundParameters['Length'] -notlike $NewSettings.MinimumLength)) {
        $NetExeError = $true
        Write-Host "Minimum Length was not set correctly."
    }
    if ($PSBoundParameters.ContainsKey("MaxAge") -and ($PSBoundParameters['MaxAge'] -notlike $(if ($NewSettings.MaximumAge -like "unlimited") { 0 }else { $NewSettings.MaximumAge }))) {
        $NetExeError = $true
        Write-Host "Maximum Age was not set correctly."
    }
    if ($PSBoundParameters.ContainsKey("MinAge") -and ($PSBoundParameters['MinAge'] -notlike $NewSettings.MinimumAge)) {
        $NetExeError = $true
        Write-Host "Minimum Age was not set correctly."
    }
    if ($NetExeError) {
        exit 1
    }
}
end {}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script fornito utilizza le funzionalità di PowerShell per modificare i criteri delle password in Windows:

  • Cmdlet Binding: Lo script per impostare la lunghezza minima della password inizia con il cmdlet binding, una funzione che gli consente di accettare parametri come Length, MinAge e MaxAge.
  • Test-IsElevated: Una funzione che assicura che lo script per impostare la lunghezza minima della password venga eseguito con privilegi elevati.
  • Get-LocalPasswordPolicy: Questa funzione recupera il criterio locale delle password attualmente in uso. Utilizza il comando ‘net.exe’ per raccogliere gli attributi dei criteri delle password e li restituisce.
  • Blocco del processo: È qui che risiede la logica di base. Lo script per impostare la lunghezza minima della password confronta i criteri esistenti con i nuovi parametri. Se esistono differenze, utilizza i comandi “net.exe” per regolare i criteri.
  • Convalida: Dopo aver apportato le modifiche, lo script per impostare la lunghezza minima della password recupera i criteri aggiornati delle password e li verifica rispetto ai parametri impostati, per garantire la corretta configurazione.

Casi d’uso potenziali

Caso di studio: Immagina un professionista IT, John, che lavora in una startup in rapida crescita. A seguito di un audit di cybersecurity, John si rende conto che molti account locali hanno criteri deboli per le password. Invece di aggiornare manualmente ogni sistema, John distribuisce questo scriptper impostare la lunghezza minima della password su tutte le workstation, per assicurarsi che tutti i dispositivi rispettino la lunghezza e il periodo di validità raccomandati per le password.

Confronti

La configurazione manuale attraverso le impostazioni di Windows o i criteri di gruppo è una strada percorribile, ma richiede molto tempo, è soggetta a errori e non è adatta ad ambienti di grandi dimensioni. Gli strumenti di terze parti offrono funzionalità simili, ma possono introdurre complessità o generare costi. Lo script per impostare la lunghezza minima della password fornito offre un approccio semplice, economico e scalabile.

Domande frequenti

  • Su quali versioni di Windows funziona lo script per impostare la lunghezza minima della password? 
    Lo script per impostare la lunghezza minima della password supporta Windows 10 e Windows Server 2016 e versioni successive.
  • È necessario disporre dei diritti di amministratore per eseguire lo script per impostare la lunghezza minima della password? 
    Sì, lo script per impostare la lunghezza minima della password richiede privilegi elevati per modificare i criteri delle password.

Implicazioni

Criteri non corretti per le password possono portare ad accessi non autorizzati, violazioni dei dati e della conformità. Garantendo requisiti coerenti e forti per le password, le organizzazioni possono ridurre drasticamente questi rischi, rafforzando la loro situazione in termini di sicurezza informatica.

Raccomandazioni

  • Ricontrolla e aggiorna regolarmente i criteri per le password per stare al passo con l’evoluzione delle minacce.
  • Effettua sempre un backup prima di applicare le modifiche su un vasto numero di dispositivi.
  • Utilizza questo script per impostare la lunghezza minima della password in combinazione con altri strumenti di automazione per una gestione IT completa.

Considerazioni finali

In un panorama in cui solide misure di sicurezza sono una necessità, gli strumenti che facilitano la configurazione dei criteri per le password in ambiente Windows diventano preziosi. Per le aziende che desiderano un approccio semplificato alla gestione delle risorse e delle configurazioni IT, piattaforme come NinjaOne possono fornire soluzioni complete. Integrando script come quello descritto in piattaforme come NinjaOne, le organizzazioni possono garantire criteri ottimali per le password, con conseguente miglioramento della sicurezza e dell’efficienza operativa.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.