Используйте подписанные политики для защиты управления приложениями в Защитнике Windows от взлома.

Примечание.

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

Подписанные политики Защитник Windows управления приложениями (WDAC) предоставляют организациям самый высокий уровень защиты, доступный в Windows. Эти политики предназначены для обнаружения административных несанкционированных действий политики, например вредоносных программ, запущенных от имени администратора, и приводят к сбою загрузки или к синему экрану. Учитывая эту цель, гораздо сложнее удалить подписанные политики WDAC. Чтобы обеспечить эту защиту для подписанных политик WDAC, необходимо включить 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.
  • Не используйте кодировку UTF-8 для полей сертификата, таких как "общее имя субъекта" и "общее имя издателя". Эти строки должны быть закодированы как PRINTABLE_STRING, IA5STRING или BMPSTRING.

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

Примечание.

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

Подготовка политики WDAC к подписи

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

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

    Примечание.

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

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

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

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

    Примечание.

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

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

    Важно.

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

  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 для подписи файлов политики WDAC:

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

  2. Подпишите политику WDAC с помощью 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}" — это <Идентификатор политики> из исходного XML-кода политики WDAC.

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

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

certutil.exe -asn <path to signed policy file>

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

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

Примечание.

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