Uso de directivas firmadas para proteger App Control para empresas frente a alteraciones
Nota
Algunas funcionalidades de App Control para empresas solo están disponibles en versiones específicas de Windows. Obtenga más información sobre la disponibilidad de características de App Control.
Las directivas firmadas de Control de aplicaciones para empresas proporcionan a las organizaciones el mayor nivel de protección disponible en Windows. Estas directivas están diseñadas para detectar alteraciones administrativas de la directiva, como por malware que se ejecuta como administrador, y producirán un error de arranque o una pantalla azul. Teniendo en cuenta este objetivo, es mucho más difícil quitar directivas de Control de aplicaciones firmadas. SecureBoot debe estar habilitado para proporcionar esta protección para las directivas de Control de aplicaciones firmadas.
Si actualmente no tiene un certificado de firma de código que puede usar para firmar las directivas, consulte Obtención de certificados de firma de código para su propio uso.
Advertencia
Puede producirse un error de arranque o una pantalla azul si el certificado de firma no sigue estas reglas:
- Todas las directivas, incluida la base y la complementaria, deben firmarse de acuerdo con el estándar PKCS 7.
- Use claves RSA solo con tamaño de clave 2K, 3K o 4K. ECDSA no se admite.
- Puede usar SHA-256, SHA-384 o SHA-512 como algoritmo de resumen en Windows 11, así como Windows 10 y Windows Server 2019 y versiones posteriores después de aplicar la actualización de seguridad acumulativa de noviembre de 2022. Todos los demás dispositivos solo admiten SHA-256.
Antes de intentar implementar una directiva firmada, primero debe implementar una versión sin firmar de la directiva para detectar cualquier problema con las reglas de directiva. También se recomienda habilitar las opciones de regla 9- Habilitado:Menú Opciones de arranque avanzadas y 10- Habilitado:Auditoría de arranque en caso de error para dejar las opciones de solución de problemas disponibles para los administradores. Para asegurarse de que una opción de regla está habilitada, puede ejecutar un comando como Set-RuleOption -FilePath <PathAndFilename> -Option 9
, aunque no esté seguro de si la opción ya está habilitada. Si es así, el comando no tiene ningún efecto. Una vez que se hayan validado y estén preparadas para la implementación empresarial, puedes eliminar estas opciones. Para obtener más información sobre las opciones de regla, consulte Reglas de directivas de App Control for Business.
Nota
Al firmar una directiva base que tenga directivas complementarias existentes, también debe cambiar a la directiva firmada para todos los complementos. Autorice las directivas complementarias firmadas agregando una <SupplementalPolicySigner>
regla a la directiva base.
Preparación de la directiva de App Control para la firma
Abra una sesión de Windows PowerShell con privilegios elevados e inicialice las variables que se van a usar:
$PolicyPath=$env:userprofile+"\Desktop\" $PolicyName="FixedWorkloadPolicy_Enforced" $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
Nota
En este ejemplo se usa una versión aplicada de la directiva de Control de aplicaciones que creó en el artículo Creación de una directiva de App Control para empresas desde un equipo de referencia . Si firma otra directiva, asegúrese de actualizar las variables $PolicyPath y $PolicyName con la información correcta.
Ve a tu escritorio como directorio de trabajo:
cd $PolicyPath
Si la directiva de App Control aún no incluye una
<UpdatePolicySigner>
regla para el certificado de firma de directiva, debe agregarla. Debe existir al menos una<UpdatePolicySigner>
regla para convertir el XML de la directiva con ConvertFrom-CiPolicy.Use Add-SignerRule y cree una
<UpdatePolicySigner>
regla a partir del archivo de certificado (.cer). Si compró un certificado de firma de código o emitió uno de su propia infraestructura de clave pública (PKI), puede exportar el archivo de certificado.Nota
Si la directiva no permite directivas complementarias, debe omitir el modificador -Supplemental del siguiente comando:
Add-SignerRule -FilePath $LamnaServerPolicy -CertificatePath <Path to exported .cer certificate> -Update -Supplemental
Importante
Si no se realiza este paso, no podrá modificar o deshabilitar esta directiva y provocará un error de arranque. Para obtener más información sobre cómo deshabilitar las directivas firmadas que provocan errores de arranque, consulte Eliminación de directivas de App Control para empresas que causan errores de detención de arranque.
Usa Set-RuleOption para quitar la opción de regla de directiva sin firmar:
Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
(Opcional) Use Set-CIPolicyIdInfo para restablecer el identificador de directiva y cambiar el nombre de la directiva.
(Opcional) Use Set-CIPolicyVersion para cambiar la directiva VersionEx.
Importante
Al actualizar una directiva firmada, el valor VersionEx de la directiva actualizada debe ser mayor o igual que la directiva actual. Reemplazar una directiva firmada por una versión inferior provocará un error de arranque.
Usa ConvertFrom-CIPolicy para convertir la directiva al formato binario:
$PolicyID= Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy -ResetPolicyID $PolicyID = $PolicyID.Substring(11) $CIPolicyBin = $env:userprofile + "\Desktop\" + $PolicyID + ".cip" ConvertFrom-CIPolicy $LamnaServerPolicy $CIPolicyBin
Firma de la directiva
Firma de directivas con signtool.exe
Si compró un certificado de firma de código o emitió uno de su propia PKI, puede usar SignTool.exe para firmar los archivos de directiva de App Control:
Importe el certificado de firma de código .pfx en el almacén personal del usuario en el equipo donde se producirá la firma. En este ejemplo, usará el certificado que se creó en Opcional: Crear un certificado de firma de código para App Control for Business.
Firme la directiva de App Control mediante 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 variable <Ruta de acceso a signtool.exe> debe ser la ruta de acceso completa de la utilidad SignTool.exe. ContosoSigningCert es el nombre del firmante del certificado que se usará para firmar la directiva. Debes importar este certificado a tu almacén de certificados personal en el equipo que usas para firmar la directiva.
Una vez completado, los comandos deben generar un archivo de directiva firmado con una .p7
extensión. Debe cambiar el nombre del archivo a {GUID}.cip
donde "{GUID}" es el <Valor PolicyId> del XML de directiva de App Control original.
Comprobación e implementación de la directiva firmada
Puede usar certutil.exe o PowerShell para comprobar el archivo firmado. Revise la salida para confirmar el algoritmo de firma como se describe en la advertencia de la parte superior de este artículo.
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 *
Pruebe exhaustivamente la directiva firmada en un conjunto representativo de equipos antes de continuar con la implementación. Asegúrese de reiniciar los equipos de prueba al menos dos veces después de aplicar la directiva de Control de aplicaciones firmada para asegurarse de que no se produce un error de arranque.
Una vez que haya comprobado la directiva firmada, impleméntela con el método de implementación que prefiera. Para obtener más información sobre la implementación de directivas, consulte Implementación de directivas de App Control para empresas.
Nota
La protección contra la manipulación de directivas firmadas surte efecto después del primer reinicio una vez aplicada la directiva firmada a un equipo. Esta protección solo se aplica a los equipos con arranque seguro UEFI habilitado.