Usare criteri firmati per proteggere il controllo delle app per le aziende da manomissioni
Nota
Alcune funzionalità di Controllo app per le aziende sono disponibili solo in versioni specifiche di Windows. Altre informazioni sulla disponibilità delle funzionalità di Controllo app.
I criteri di Controllo app per le aziende firmati offrono alle organizzazioni il massimo livello di protezione disponibile in Windows. Questi criteri sono progettati per rilevare la manomissione amministrativa dei criteri, ad esempio da parte di malware in esecuzione come amministratore, e genereranno un errore di avvio o una schermata blu. Tenendo presente questo obiettivo, è molto più difficile rimuovere i criteri di controllo app firmati. SecureBoot deve essere abilitato per fornire questa protezione per i criteri di controllo app firmati.
Se attualmente non si dispone di un certificato di firma del codice che è possibile usare per firmare i criteri, vedere Ottenere certificati di firma del codice per uso personale.
Warning
L'errore di avvio, o schermata blu, può verificarsi se il certificato di firma non segue queste regole:
- Tutti i criteri, inclusi quelli di base e supplementari, devono essere firmati in base alla Standard PKCS 7.
- Usare le chiavi RSA solo con dimensioni di 2K, 3K o 4K. ECDSA non è supportato.
- È possibile usare SHA-256, SHA-384 o SHA-512 come algoritmo di digest in Windows 11, nonché Windows 10 e Windows Server 2019 e versioni successive dopo l'applicazione dell'aggiornamento cumulativo della sicurezza di novembre 2022. Tutti gli altri dispositivi supportano solo SHA-256.
Prima di tentare di distribuire un criterio firmato, è necessario distribuire prima una versione non firmata dei criteri per individuare eventuali problemi con le regole dei criteri. È anche consigliabile abilitare le opzioni delle regole 9 - Enabled:Advanced Boot Options Menu e 10 - Enabled:Boot Audit on Failure per lasciare le opzioni di risoluzione dei problemi disponibili per gli amministratori. Per assicurarsi che sia abilitata un'opzione della regola, è possibile eseguire un comando come Set-RuleOption -FilePath <PathAndFilename> -Option 9
, anche se non si è certi che l'opzione sia già abilitata. In tal caso, il comando non ha alcun effetto. Dopo la convalida e quando sarai pronto per la distribuzione aziendale, potrai rimuovere queste opzioni. Per altre informazioni sulle opzioni delle regole, vedere Controllo app per le regole dei criteri aziendali.
Nota
Quando si firma un criterio di base con criteri supplementari esistenti, è necessario passare anche ai criteri firmati per tutti i supplementi. Autorizzare i criteri supplementari firmati aggiungendo una <SupplementalPolicySigner>
regola ai criteri di base.
Preparare i criteri di Controllo app per la firma
Aprire una sessione di Windows PowerShell con privilegi elevati e inizializzare le variabili da usare:
$PolicyPath=$env:userprofile+"\Desktop\" $PolicyName="FixedWorkloadPolicy_Enforced" $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
Nota
Questo esempio usa una versione applicata dei criteri di controllo delle app creati nell'articolo Creare un controllo app per le aziende da un computer di riferimento . Se si firma un altro criterio, assicurarsi di aggiornare il $PolicyPath e $PolicyName variabili con le informazioni corrette.
Passa al desktop come directory di lavoro:
cd $PolicyPath
Se i criteri di Controllo app non includono già una
<UpdatePolicySigner>
regola per il certificato di firma dei criteri, è necessario aggiungerla. Per convertire il codice XML dei criteri con ConvertFrom-CiPolicy, deve esistere almeno una<UpdatePolicySigner>
regola.Usare Add-SignerRule e creare una
<UpdatePolicySigner>
regola dal file di certificato (.cer). Se è stato acquistato un certificato di firma del codice o ne è stato emesso uno dalla propria infrastruttura a chiave pubblica (PKI), è possibile esportare il file del certificato.Nota
Se i criteri non consentono criteri supplementari, è necessario omettere l'opzione -Supplemental dal comando seguente:
Add-SignerRule -FilePath $LamnaServerPolicy -CertificatePath <Path to exported .cer certificate> -Update -Supplemental
Importante
Se non si esegue questo passaggio, non è possibile modificare o disabilitare questo criterio e si verifica un errore di avvio. Per altre informazioni su come disabilitare i criteri firmati che causano errori di avvio, vedere Rimuovere il controllo app per le aziende che causano errori di arresto dell'avvio.
Usa Set-RuleOption per rimuovere l'opzione della regola che consente i criteri non firmati:
Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
(Facoltativo) Usare Set-CIPolicyIdInfo per reimpostare l'ID dei criteri e modificare il nome del criterio.
(Facoltativo) Usare Set-CIPolicyVersion per modificare il criterio VersionEx.
Importante
Quando si aggiorna un criterio firmato, il valore VersionEx del criterio aggiornato deve essere maggiore o uguale al criterio corrente. La sostituzione di un criterio firmato con una versione inferiore causerà un errore di avvio.
Usa ConvertFrom-CIPolicy per convertire il criterio in formato binario:
$PolicyID= Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy -ResetPolicyID $PolicyID = $PolicyID.Substring(11) $CIPolicyBin = $env:userprofile + "\Desktop\" + $PolicyID + ".cip" ConvertFrom-CIPolicy $LamnaServerPolicy $CIPolicyBin
Firmare i criteri
Firma dei criteri con signtool.exe
Se è stato acquistato un certificato di firma del codice o ne è stato emesso uno dalla propria infrastruttura a chiave pubblica, è possibile usare SignTool.exe per firmare i file dei criteri di Controllo app:
Importare il certificato di firma del codice PFX nell'archivio personale dell'utente nel computer in cui verrà eseguita la firma. In questo esempio si usa il certificato creato in Facoltativo: Creare un certificato di firma del codice per Controllo app per le aziende.
Firmare i criteri di Controllo app usando SignTool.exe:
<Path to signtool.exe> sign -v -n "ContosoSigningCert" -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 $CIPolicyBin
Nota
La variabile <Path to signtool.exe> deve corrispondere al percorso completo dell'utilità SignTool.exe. ContosoSigningCert è il nome soggetto del certificato che verrà usato per firmare i criteri. Devi importare questo certificato nel tuo archivio certificati personale nel computer che usi per firmare il criterio.
Al termine, i comandi devono restituire un file di criteri firmato con un'estensione .p7
. È necessario rinominare il file in {GUID}.cip
cui "{GUID}" è il <PolicyId> dal codice XML del criterio di controllo app originale.
Verificare e distribuire i criteri firmati
È possibile usare certutil.exe o PowerShell per verificare il file firmato. Esaminare l'output per confermare l'algoritmo di firma come descritto nell'avviso nella parte superiore di questo articolo.
certutil.exe -asn <path to signed policy file>
$CIPolicyBin = 'path to signed policy file'
Add-Type -AssemblyName 'System.Security'
$SignedCryptoMsgSyntax = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
$SignedCryptoMsgSyntax.Decode([System.IO.File]::ReadAllBytes($CIPolicyBin))
$SignedCryptoMsgSyntax.Certificates | Format-List -Property *
Testare accuratamente i criteri firmati in un set rappresentativo di computer prima di procedere con la distribuzione. Assicurarsi di riavviare i computer di test almeno due volte dopo aver applicato i criteri di controllo app firmati per assicurarsi che non si verifichi un errore di avvio.
Dopo aver verificato i criteri firmati, distribuirli usando il metodo di distribuzione preferito. Per altre informazioni sulla distribuzione dei criteri, vedere Distribuzione dei criteri di controllo delle app per le aziende.
Nota
La protezione anti-manomissione per i criteri firmati diventa effettiva dopo il primo riavvio dopo l'applicazione dei criteri firmati a un computer. Questa protezione si applica solo ai computer con l'avvio protetto UEFI abilitato.