Поделиться через


Использование подписанных политик для защиты управления приложениями для бизнеса от незаконного изменения

Примечание.

Некоторые возможности управления приложениями для бизнеса доступны только в определенных версиях Windows. Дополнительные сведения о доступности функций управления приложениями.

Подписанные политики управления приложениями для бизнеса предоставляют организациям самый высокий уровень защиты, доступный в Windows. Эти политики предназначены для обнаружения административных несанкционированных действий политики, например вредоносных программ, запущенных от имени администратора, и приводят к сбою загрузки или к синему экрану. С учетом этой цели гораздо сложнее удалить подписанные политики управления приложениями. Чтобы обеспечить эту защиту для подписанных политик управления приложениями, необходимо включить SecureBoot.

Если у вас нет сертификата подписи кода, который можно использовать для подписи политик, см. статью Получение сертификатов подписи кода для собственного использования.

Warning

Сбой загрузки или синий экран может произойти, если сертификат подписи не соответствует следующим правилам:

  • Все политики, включая базовые и дополнительные, должны быть подписаны в соответствии со стандартом PKCS 7.
  • Используйте ключи RSA только с размером 2, 3 или 4K. ECDSA не поддерживается.
  • Вы можете использовать алгоритм SHA-256, SHA-384 или SHA-512 в качестве алгоритма дайджеста на Windows 11, а также Windows 10 и Windows Server 2019 и более поздних версий после применения накопительного обновления для системы безопасности за ноябрь 2022 г. Все остальные устройства поддерживают только SHA-256.

Перед попыткой развернуть подписанную политику необходимо сначала развернуть неподписаную версию политики, чтобы выявить проблемы с правилами политики. Мы также рекомендуем включить варианты правил 9 — Включено:Меню расширенных параметров загрузки и 10 — Enabled:Boot Audit on Failure , чтобы оставить доступные для администраторов варианты устранения неполадок. Чтобы убедиться, что параметр правила включен, можно выполнить такую команду, как Set-RuleOption -FilePath <PathAndFilename> -Option 9, даже если вы не уверены, включен ли этот параметр. Если это так, команда не действует. Выполнив проверку и подготовив все для развертывания на предприятии, вы можете удалить эти параметры. Дополнительные сведения о параметрах правил см. в разделе Правила политики управления приложениями для бизнеса.

Примечание.

При подписании базовой политики с существующими дополнительными политиками необходимо также переключиться на подписанную политику для всех дополнительных политик. Авторизуйте подписанные дополнительные политики, добавив <SupplementalPolicySigner> правило в базовую политику.

Подготовка политики управления приложениями к подписи

  1. Откройте сеанс Windows PowerShell с повышенными привилегиями и инициализируйте переменные для использования:

    $PolicyPath=$env:userprofile+"\Desktop\"
    $PolicyName="FixedWorkloadPolicy_Enforced"
    $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
    

    Примечание.

    В этом примере используется примененная версия политики элемента управления приложениями, созданной в статье Создание политики элемента управления приложениями для бизнеса на основе эталонного компьютера . Если вы подписываете другую политику, обязательно обновите $PolicyPath и $PolicyName переменные правильными сведениями.

  2. Перейдите на рабочий стол, который выступит в качестве рабочей папки:

    cd $PolicyPath
    
  3. Если политика управления приложениями еще не включает <UpdatePolicySigner> правило для сертификата подписи политики, его необходимо добавить. Для преобразования XML-кода политики с помощью ConvertFrom-CiPolicy должно существовать по крайней мере одно <UpdatePolicySigner> правило.

    Используйте Add-SignerRule и создайте <UpdatePolicySigner> правило из файла сертификата (.cer). Если вы приобрели сертификат подписи кода или выдали его из собственной инфраструктуры открытых ключей (PKI), вы можете экспортировать файл сертификата.

    Примечание.

    Если политика не разрешает дополнительные политики, следует опустить параметр -Supplemental из следующей команды:

    Add-SignerRule -FilePath $LamnaServerPolicy -CertificatePath <Path to exported .cer certificate> -Update -Supplemental
    

    Важно.

    Если не выполнить этот шаг, вы не сможете изменить или отключить эту политику, и это приведет к сбою загрузки. Дополнительные сведения об отключении подписанных политик, вызывающих сбой загрузки, см. в статье Удаление политик управления приложениями для бизнеса, приводящих к сбоям остановки загрузки.

  4. Удалите правило неподписанной политики с помощью командлета Set-RuleOption:

    Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
    
  5. (Необязательно) Используйте Set-CIPolicyIdInfo , чтобы сбросить идентификатор политики и изменить имя политики.

  6. (Необязательно) Используйте Set-CIPolicyVersion , чтобы изменить политику VersionEx.

    Важно.

    При обновлении подписанной политики значение VersionEx обновленной политики должно быть больше текущей политики или равно ей. Замена подписанной политики более низкой версией приведет к сбою загрузки.

  7. Преобразуйте политику в двоичный формат с помощью командлета ConvertFrom-CIPolicy:

    $PolicyID= Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy  -ResetPolicyID
    $PolicyID = $PolicyID.Substring(11)
    $CIPolicyBin = $env:userprofile + "\Desktop\" + $PolicyID + ".cip"
    ConvertFrom-CIPolicy $LamnaServerPolicy $CIPolicyBin
    

Подпись политики

Подписывание политики с помощью signtool.exe

Если вы приобрели сертификат подписи кода или выдали его из собственной PKI, вы можете использовать SignTool.exe для подписи файлов политики управления приложениями:

  1. Импортируйте сертификат подписи кода PFX в личное хранилище пользователя на компьютере, где будет происходить подпись. В этом примере используется сертификат, созданный в разделе Необязательно. Создание сертификата подписи кода для элемента управления приложениями для бизнеса.

  2. Подпишите политику управления приложениями с помощью SignTool.exe:

    <Path to signtool.exe> sign -v -n "ContosoSigningCert" -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 $CIPolicyBin
    

    Примечание.

    Вместо переменной <Path to signtool.exe> необходимо указать полный путь к служебной программе SignTool.exe. ContosoSigningCert — это имя субъекта сертификата, который будет использоваться для подписи политики. Этот сертификат необходимо импортировать в ваше личное хранилище сертификатов на компьютере, который используется для подписывания политики.

По завершении команды должны вывести подписанный файл политики с расширением .p7 . Необходимо переименовать файл, где {GUID}.cip "{GUID}" — это <PolicyId> из исходного XML-кода политики управления приложениями.

Проверка и развертывание подписанной политики

Для проверки подписанного файла можно использовать certutil.exe или PowerShell. Просмотрите выходные данные, чтобы подтвердить алгоритм подписи, как описано в разделе Предупреждение в верхней части этой статьи.

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 *

Тщательно протестируйте подписанную политику на репрезентативном наборе компьютеров, прежде чем продолжить развертывание. Не забудьте перезагрузить тестовые компьютеры по крайней мере дважды после применения подписанной политики управления приложениями, чтобы не столкнуться с сбоем загрузки.

После проверки подписанной политики разверните ее с помощью предпочтительного метода развертывания. Дополнительные сведения о развертывании политик см. в статье Развертывание политик управления приложениями для бизнеса.

Примечание.

Защита от незаконного изменения для подписанных политик вступает в силу после первой перезагрузки после применения подписанной политики к компьютеру. Эта защита применяется только к компьютерам с включенной безопасной загрузкой UEFI.