Breaking News

Lo script di PowerShell che ogni amministratore dovrebbe eseguire almeno una volta a settimana

Nel dinamico mondo dell’amministrazione dei sistemi, la gestione proattiva è la chiave per garantire la sicurezza, la stabilità e le prestazioni degli ambienti IT. Uno degli strumenti più potenti a disposizione degli amministratori è PowerShell, un linguaggio di scripting e un ambiente a riga di comando in grado di automatizzare numerose attività sui sistemi Windows. Ogni settimana, ogni amministratore dovrebbe eseguire uno script di PowerShell, uno strumento semplice ma estremamente efficace per garantire il corretto funzionamento delle operazioni IT. Questo script, in particolare, si concentra sulla gestione dei criteri di esecuzione degli script di PowerShell, un aspetto cruciale che spesso viene trascurato. Questo articolo esplora in modo approfondito questa caratteristica essenziale.

Informazioni sui criteri di esecuzione degli script di PowerShell

strategia di esecuzione in PowerShell determina quali comandi e script possono essere eseguiti su un sistema. Si tratta di una funzione di sicurezza che protegge l’utente dall’esecuzione di script dannosi. Comprendere questa politica e sapere come configurarla è fondamentale per ogni amministratore che desideri mantenere un ambiente Windows sicuro ed efficiente.

Ci sono diversi livelli di strategie di esecuzione, ognuno con le sue implicazioni e livelli di sicurezza. Ecco una panoramica delle principali polizze disponibili:

  • Limitato: Blocca tutti gli script, consentendo l’esecuzione nella console solo dei comandi interattivi.
  • Tutti firmati: Consenti l’esecuzione solo di script firmati da un editore attendibile.
  • Firmato remoto: Consente l’esecuzione di script locali non firmati, ma blocca quelli provenienti da Internet, a meno che non siano firmati.
  • Senza restrizioni: Consente l’esecuzione di tutti gli script, ma visualizza gli avvisi per quelli provenienti da Internet.
  • Esclusione: Non applica alcuna restrizione, consentendo l’esecuzione di tutti gli script senza avvisare l’utente.
  • Non definito: Indica che la policy non è impostata e che verrà applicata la policy di livello superiore.

Per gli ambienti aziendali, la strategia Tutti firmati è generalmente la più consigliata, poiché garantisce un elevato livello di sicurezza pur consentendo l’esecuzione necessaria degli script. Tuttavia, a seconda delle esigenze, possono essere applicate altre policy a seconda del contesto di esecuzione.

Esplorazione delle strategie di esecuzione

Per vedere quale criterio è attualmente applicato al tuo sistema, il cmdlet Ottieni-Politica di esecuzione può essere utilizzato:

<!– wp:code {"content":"
Get-ExecutionPolicy
“} –>
Ottieni-Politica di esecuzione

Per ottenere una visione più dettagliata delle policy di esecuzione su ciascun ambito, è possibile utilizzare:

<!– wp:code {"content":"
Get-ExecutionPolicy -List
“} –>
Ottieni-EsecuzionePolitica -Elenco

Verranno visualizzate le policy applicate a ciascun ambito, incluso per Processo, Utente corrente E LocalMachine.

Estensione Politica di esecuzione
Processo criterio applicato alla sessione corrente di PowerShell
Utente corrente policy applicata all’utente registrato
LocalMachine strategia applicata all’intera macchina

È consigliabile controllare regolarmente queste configurazioni per assicurarsi che continuino a soddisfare le esigenze di sicurezza dell’organizzazione.

Come cambiare la strategia di esecuzione

Modificare i criteri di esecuzione è un processo abbastanza semplice, ma richiede privilegi di amministratore. Utilizzo del cmdlet Set-ExecutionPolicy consente di definire una nuova strategia. Ad esempio, per impostare una politica su Tutti firmati, dovrebbe essere eseguito il seguente comando:

<!– wp:code {"content":"
Set-ExecutionPolicy -ExecutionPolicy AllSigned
“} –>
Set-ExecutionPolicy -ExecutionPolicy AllSigned

È inoltre possibile specificare l’ambito di applicazione della presente policy:

<!– wp:code {"content":"
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
“} –>
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Questo comando applica il criterio solo all’utente corrente, il che può essere utile in un ambiente contenente più utenti.

In un’organizzazione, potrebbe essere opportuno stabilire rigide policy di esecuzione per tutti gli utenti, per ridurre i rischi associati all’esecuzione di script non verificati. Ecco alcune buone pratiche da considerare:

  • Promuovere l’uso della strategia Tutti firmati per garantire che vengano eseguiti solo script verificati.
  • Informare gli utenti sui rischi associati all’esecuzione di script scaricati.
  • Implementare controlli regolari per verificare la conformità con le impostazioni della strategia di esecuzione.

La creazione di una documentazione sulle strategie di esecuzione e sulle motivazioni alla base della loro scelta contribuisce a sensibilizzare e formare il personale amministrativo.

Verifica automatica della strategia di esecuzione

Un buon amministratore di sistema sa che un monitoraggio proattivo può portare a preziosi risparmi di tempo. Scrivere un piccolo script di PowerShell dedicato al controllo dei criteri di esecuzione e all’invio di avvisi quando vengono apportate modifiche può aiutare a mantenere la conformità costante.

<!– wp:code {"content":"
n$executionPolicy = Get-ExecutionPolicy -Listnif ($executionPolicy.CurrentUser -ne "AllSigned") {n    Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Alerte sur stratu00e9gie d'exu00e9cution" -Body "La politique d'exu00e9cution de l'utilisateur a changu00e9." -SmtpServer "smtp.example.com"n}n
“} –>

$executionPolicy = Get-ExecutionPolicy -List
se ($executionPolicy.CurrentUser -ne "AllSigned") {
    Invia-Messaggio-Mail -A "[email protected]" -Da "[email protected]" -Oggetto "Avviso sulla politica di esecuzione" -Corpo "La politica di esecuzione dell'utente è cambiata." -SmtpServer "smtp.esempio.com"
}

Questo script invia un’e-mail all’amministratore competente se l’attuale criterio di esecuzione non corrisponde allo standard previsto. Ciò aiuta a tenere d’occhio cambiamenti inaspettati e potenzialmente pericolosi.

Ecco alcuni suggerimenti per migliorare i processi di automazione degli audit:

  • Integrare controlli per altre impostazioni di sicurezza oltre ai criteri di esecuzione.
  • Pianifica l’esecuzione di questo script a intervalli stabiliti, ad esempio ogni settimana.
  • Utilizzare strumenti di gestione della configurazione come Capo, Fantoccio O SolarWinds per mantenere l’integrità delle configurazioni del sistema.

Riducendo il rischio umano automatizzando questi controlli è possibile concentrarsi su altri aspetti critici della gestione IT.

Sblocca uno script PowerShell sicuro

Quando si scaricano script da Internet, questi potrebbero essere contrassegnati come non attendibili, impedendone l’esecuzione per impostazione predefinita come parte della sicurezza di Windows. Per eseguirli, dobbiamo “sbloccarli” con il cmdlet Sblocca file.

<!– wp:code {"content":"
Unblock-File "C:TEMPscript.ps1"
“} –>
Sblocca il file "C:TEMPscript.ps1"

Questo comando rimuove la protezione di sicurezza associata al file scaricato. Si consiglia di utilizzare questo comando solo per file provenienti da fonti attendibili.

Gli amministratori devono prestare attenzione quando sbloccano i file e ricordare quanto segue:

  • Verificare l’integrità e la fonte dello script prima di sbloccarlo.
  • Documentare gli script sbloccati per mantenere l’inventario e la tracciabilità.
  • Valutare i potenziali rischi prima di dare il via libera all’esecuzione di uno script sensibile.

Una corretta gestione degli script scaricati può fare una grande differenza nel livello di sicurezza di un sistema.

Esecuzione amministrativa degli script di PowerShell

In molte situazioni, l’esecuzione di script richiede privilegi di amministratore per accedere a determinate risorse di sistema o per applicare modifiche critiche. Ecco come un amministratore può eseguire facilmente uno script con privilegi elevati:

<!– wp:code {"content":"
Start-Process powershell -Verb RunAs -ArgumentList "-File C:TEMPscript.ps1"
“} –>
Avvio-Processo PowerShell -Verb RunAs -ArgumentList "-File C:TEMPscript.ps1"

Verrà avviato un nuovo processo PowerShell con diritti di amministratore per eseguire lo script specificato. Per evitare potenziali errori, assicurarsi che gli utenti siano formati su questo metodo.

È anche concepibile scrivere uno script di auto-elevazione per automatizzare questo processo:

<!– wp:code {"content":"
nif (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {n    Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `$PSCommandPath"n    Exitn}n
“} –>

    Avvio-Processo PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `$PSCommandPath"
    Uscita
}

Con questo approccio, se un utente prova a eseguire lo script senza privilegi di amministratore, lo script verrà riavviato automaticamente con i requisiti richiesti. Si tratta di un metodo sicuro che semplifica il processo di gestione delle autorizzazioni.