Protezione degli script

 

Si applica a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Ultima modifica dell'argomento: 2007-02-12

In questo argomento viene spiegato come la protezione degli script in Exchange Management Shell aiuta a impedire che gli script pericolosi o altrimenti indesiderati vengano eseguiti nell'organizzazione; vengono inoltre indicate le opzioni disponibili per modificare la protezione degli script e soddisfare così i requisiti dell'organizzazione.

Generalmente, gli script che è possibile incontrare provengono da tre fonti diverse: l'utente, un'altra persona appartenente all'organizzazione e compositori di script esterni all'organizzazione, quale ad esempio Internet. Quando si scrive uno script, si confida nel fatto che lo script farà ciò per cui è stato progettato. Se si condivide lo script con altri amministratori dell'organizzazione, anche loro lo riterranno attendibile, ma solo perché considerano attendibile la persona che ha condiviso lo script.

Quando gli script provengono da fonti diverse, quale ad esempio Internet, la protezione degli script desta preoccupazione. Il solo modo per poter considerare attendibili gli script provenienti da fonti sconosciute all'organizzazione consiste nell'ispezionare direttamente il codice dello script e testarlo in un ambiente di lavoro isolato. Il processo può rivelarsi noioso e dispendioso in termini di tempo. Si tratta però di una pratica consigliata per impedire l'esecuzione involontaria di malware o codici che provocano danni irreversibili.

Exchange Management Shell supporta l'uso consigliato di firme digitali per garantire che uno script non venga alterato in seguito alla creazione. Per ulteriori informazioni sulle firme digitali, vedere "Nozioni di base sulla firma del codice" più avanti in questo argomento.

Modalità di esecuzione degli script

Exchange Management Shell consente di utilizzare quattro modalità di esecuzione degli script per controllare come questi vengono utilizzati, a seconda di come sono firmati e in base alla loro provenienza (fonti conosciute o sconosciute). Nella seguente tabella viene descritta ogni modalità di esecuzione degli script.

Modalità di esecuzione degli script

Modalità Descrizione

Modalità Restricted

Nessuno script verrà eseguito, neanche quelli firmati da un editore attendibile.

Modalità AllSigned

Verranno eseguiti esclusivamente gli script recanti la firma digitale di un editore attendibile.

Modalità RemoteSigned

Verranno eseguiti tutti gli script creati a livello locale. Gli script scaricati da posizioni remote, quale ad esempio Internet, la cui attendibilità non può essere verificata non verranno eseguiti. Questa è la modalità predefinita di esecuzione degli script.

Modalità Unrestricted

Verranno eseguiti tutti gli script, indipendentemente dal fatto che siano firmati o attendibili. La modalità Unrestricted è fortemente sconsigliata, a meno che lo script non venga eseguito in un ambiente di prova non produttivo controllato.

Per modificare la modalità di esecuzione degli script predefinita RemoteSigned, utilizzare il cmdlet Set-ExecutionPolicy in Exchange Management Shell. Ad esempio, per modificare i criteri di esecuzione impostandoli sulla modalità AllSigned, eseguire il comando riportato di seguito:

Set-ExecutionPolicy AllSigned

Exchange Management Shell riconosce immediatamente la variazione dei criteri.

Le organizzazioni estese che desiderano impostare una modalità di esecuzione degli script coerente per tutti i computer nei quali è in esecuzione Exchange Management Shell devono applicare l'impostazione della modalità di esecuzione degli script utilizzando i criteri di gruppo di Active Directory. È possibile configurare i criteri di gruppo di Active Directory per impostare il valore ExecutionPolicy nella chiave del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell sulla modalità di esecuzione degli script desiderata.

Avviso

UNRESOLVED_TOKEN_VAL(exRegistry)

Nozioni di base sulla firma del codice

Le firme digitali vengono create mediante un apposito algoritmo a chiave pubblica che utilizza due diverse chiavi crittografiche definite coppia di chiavi: la chiave pubblica e la chiave privata. La chiave privata è nota soltanto al suo possessore, mentre la chiave pubblica è disponibile per tutti. Nelle firme digitali, la chiave privata genera la firma, mentre la chiave pubblica corrispondente convalida la firma creata.

Un certificato è un documento digitale generalmente utilizzato ai fini dell'autenticazione o per la protezione delle informazioni nelle reti aperte. Un certificato associa in modo sicuro una chiave pubblica all'entità che possiede la chiave privata corrispondente. I certificati vengono firmati digitalmente dall'autorità competente per le certificazioni (CA). Utilizzando un certificato della firma del codice, l'autore dello script aggiunge una firma digitale al file script. Durante questo processo, un hash unidirezionale dello script viene creato e crittografato mediante la chiave privata. L'hash crittografato è una stringa della firma digitale che va ad aggiungersi al file script. Tale stringa viene impostata come commento, in modo tale che non interferisca con le funzionalità dello script.

Quando questo script viene eseguito in un ambiente Exchange Management Shell che richiede la firma del codice, viene prodotto un nuovo hash unidirezionale del file script. L'hash unidirezionale viene confrontato con l'hash crittografato incluso nel file script, dopo che questo è stato decrittografato mediante la chiave pubblica. Se lo script non è stato in alcun modo alterato dopo la firma, gli hash corrispondono. Il computer cerca quindi di verificare che la firma provenga da un editore attendibile, costruendo una catena di certificati a un'autorità di certificazione attendibile. Una volta verificata l'attendibilità, lo script viene eseguito.

Il fatto che uno script provenga da una fonte attendibile o meno dipende dall'origine del certificato della firma del codice utilizzato per firmare digitalmente lo script in questione. In genere, esistono due tipi di certificati:

  • Certificati emessi da un'autorità di certificazione attendibile L'autorità di certificazione verifica l'identità del richiedente prima di emettere un certificato per la firma del codice. Tale autorità può essere una terza parte esterna e pubblica che vende certificati, oppure un'autorità di certificazione interna ospitata dall'organizzazione. Se si firma uno script utilizzando questo tipo di certificato, sarà possibile condividere lo script con utenti su altri computer che riconoscono e confidano nell'autorità di certificazione che ha emesso il certificato.

  • Certificati autofirmati Per questo tipo di certificato, l'autorità che crea il certificato è il computer. Il vantaggio di un certificato autofirmato consiste nella possibilità di scrivere, firmare ed eseguire gli script sul proprio computer. Non sarà possibile però condividere gli script con altri computer, dal momento che questi non riconoscono il computer in questione come autorità di certificazione attendibile. Se non ritengono attendibile questo computer, non possono convalidare la firma autofirmata e, di conseguenza, lo script non viene eseguito.

Cmdlet per la gestione della firma del codice

Exchange Management Shell comprende due cmdlet per la gestione della firma del codice. Il cmdlet Set-AuthenticodeSignature consente di aggiungere firme digitali ai file script. Il cmdlet Set-AuthenticodeSignature assume il nome del file da firmare come primo parametro posizionale. Se il file non si trova nella directory di lavoro corrente, è necessario fornire il percorso del file. Il secondo parametro di input per questo cmdlet è il certificato utilizzato per la firma. Tale certificato è memorizzato nell'archivio certificati locale. Questo parametro deve essere fornito sotto forma di stringa facente riferimento al certificato. L'accesso al certificato è possibile attraverso l'unità Cert: .

Il secondo cmdlet per la gestione della firma del codice è il cmdlet Get-AuthenticodeSignature. Utilizzare il cmdlet Get-AuthenticodeSignature per verificare e confermare lo stato attuale della firma del codice per il file fornito come input del parametro. Nel caso si verifichi un problema durante l'utilizzo di uno script con firma del codice, l'output derivante dal cmdlet Get-AuthenticodeSignature fornirà informazioni utili per la risoluzione dei problemi.

Se si desidera eseguire script provenienti da fonti esterne, quale ad esempio Microsoft, è necessario adattare gli script in base alla modalità di esecuzione degli script dell'ambiente utilizzato. È possibile ricevere script come file .txt di base, rinominarli come file script .ps1, quindi, dopo aver applicato le firme richieste, eseguirli come se fossero stati scritti dall'utente stesso.

Per ulteriori informazioni sulla firma digitale e i criteri di esecuzione degli script in Exchange Management Shell, eseguire il comando riportato di seguito: Get-Help About_Signing. Questo comando fornisce in risposta informazioni utili, comprese le istruzioni dettagliate per la firma digitale degli script.