Как настроить Windows Defender Application Control, чтобы блокировать всё неподписанное ПО

Как настроить Windows Defender Application Control, чтобы блокировать всё неподписанное ПО

Вы работаете в компании, где недавно произошёл инцидент: один из сотрудников запустил файл с сайта, который оказался трояном. Или вы админ в маленьком офисе, и у вас нет бюджета на дорогое EDR-решение. Или вы просто хотите, чтобы на вашем компьютере ничего не запускалось, кроме того, что вы точно знаете — и что подписано доверенным сертификатом.

Windows Defender Application Control (WDAC) — это не «ещё одна настройка антивируса». Это системный механизм, который работает на уровне ядра Windows и блокирует исполнение файлов до того, как они успеют запуститься. Он не ищет вредоносный код — он просто не даёт запуститься тому, что не подписано. И это работает. Надёжно.

В этой статье я покажу, как настроить WDAC так, чтобы он блокировал все неподписанные исполняемые файлы — без лишних сложностей, без теории про политики и XML-схемы. Только то, что нужно, чтобы всё заработало на практике.

Почему именно WDAC, а не антивирус?

Антивирусы работают по сигнатурам и поведенческому анализу. Они могут пропустить новый вредоносный файл — особенно если он не распространён или написан специально под вашу систему. WDAC работает иначе: он не спрашивает «это вирус?». Он спрашивает: «у этого файла есть цифровая подпись от доверенного издателя?»

Если нет — запуск блокируется. Никаких исключений, никаких «возможно, это безопасно». Это как запретить вход в здание всем, кто не предъявил пропуск. Даже если человек выглядит как сотрудник — без пропуска не пустят.

WDAC поддерживается с Windows 10 версии 1703 и Windows Server 2016. Работает на всех версиях, кроме Home. Если у вас Windows 10/11 Pro, Enterprise или Education — вы можете это настроить. Если у вас Home — придётся обновлять ОС или использовать альтернативы.

Как настроить WDAC за 5 шагов

Всё делается через PowerShell. Никаких графических интерфейсов. Но это не значит, что сложно — просто нужно действовать по порядку.

  1. Создайте базовую политику
    Откройте PowerShell от имени администратора и выполните:
    New-CIPolicy -Level FilePublisher -FilePath C:\WDAC\BaselinePolicy.xml

    Это создаст файл политики, который разрешает только файлы с подписью от Microsoft и других доверенных издателей. Файл Publisher — это самый безопасный уровень: он проверяет не просто наличие подписи, а именно того, кто её поставил.

  2. Сгенерируйте правила для вашего ПО
    Запустите компьютер в обычном режиме и используйте его как обычно — открывайте нужные программы, браузеры, офисные приложения. Через 1–2 дня (лучше — неделю) выполните:
    Update-CIPolicy C:\WDAC\BaselinePolicy.xml C:\WDAC\UpdatedPolicy.xml -UserPEs

    Это проанализирует, какие файлы реально запускались, и добавит их в политику как исключения. Теперь WDAC будет знать: «эти файлы — нормальные, их можно запускать».

  3. Преобразуйте политику в бинарный формат
    WDAC работает только с .bin-файлами. Конвертируйте:
    ConvertFrom-CIPolicy C:\WDAC\UpdatedPolicy.xml C:\WDAC\WDAC_Policy.bin

    Файл WDAC_Policy.bin — это то, что Windows будет загружать при старте.

  4. Установите политику
    Запустите:
    Set-CIPolicy -FilePath C:\WDAC\WDAC_Policy.bin -UserModePolicy

    Это активирует политику в пользовательском режиме. Она не блокирует системные процессы, но останавливает всё, что запускается от имени пользователя — .exe, .dll, .msi, .ps1 и т.д.

  5. Перезагрузите компьютер
    После перезагрузки WDAC вступает в силу. Попробуйте запустить любой неподписанный .exe — например, скачанный с сайта. Он просто не запустится. В логах будет запись: «Blocked by WDAC».

После этого вы можете отключить все остальные антивирусы — WDAC работает на более низком уровне и не конфликтует с ними. Он — ваш главный фильтр.

Что будет, если что-то не запустится?

Вы можете столкнуться с двумя ситуациями:

  • Программа не запускается — потому что у неё нет подписи. Это нормально. Вы должны решить: разрешить её вручную или заменить на подписанную альтернативу.
  • Система не загружается — если вы случайно заблокировали критичный драйвер. Это редко, но возможно. В таком случае загрузитесь в безопасном режиме, отключите политику командой Remove-CIPolicy -FilePath C:\WDAC\WDAC_Policy.bin, и пересоздайте политику с более широкими правилами.

Чтобы избежать проблем, перед финальной установкой проверьте политику на тестовой машине. Не на рабочем компьютере.

Сравнение уровней политики: что выбрать?

WDAC позволяет выбирать уровень проверки. Вот как они отличаются на практике:

Уровень Что проверяет Безопасность Удобство Когда использовать
FilePublisher Издатель файла (цифровая подпись) Высокая Средняя Для большинства корпоративных систем. Блокирует всё, кроме подписанных файлов Microsoft и доверенных издателей.
Hash Хеш-сумма файла (точное совпадение) Очень высокая Низкая Для критичных систем (например, промышленные контроллеры). Нужно вручную добавлять каждый файл — не подходит для обычных ПК.
FilePath Путь к файлу (например, C:\Program Files\Adobe\…) Низкая Высокая Не рекомендуется. Легко обойти, переместив файл в другую папку.
Default Только Microsoft и доверенные издатели Высокая Высокая Для базовой защиты. Подходит, если вы не используете стороннее ПО.

Для большинства случаев — используйте FilePublisher. Он даёт баланс между безопасностью и удобством. Hash — только если вы работаете с оборудованием, где нельзя допустить ни единого риска. FilePath — вообще не используйте, это как запирать дверь, но оставлять ключ под ковриком.

Что выбрать в зависимости от ситуации

  • Вы — админ в маленькой компании с 10 ПК
    Используйте FilePublisher + обновление политики через неделю. Добавьте в исключения только те программы, которые реально нужны: браузер, Office, PDF-редактор. Остальное — блокируется. Это снизит риски на 90% без лишней работы.
  • Вы — пользователь, который не хочет вредоносов на своём ПК
    Создайте политику на чистой системе (без стороннего ПО), установите её, а потом постепенно добавляйте исключения по мере необходимости. Не ставьте всё сразу — иначе вы не сможете запустить даже легитимные программы.
  • Вы работаете с устаревшим ПО, которое не подписано
    Тогда у вас два варианта: либо заменить это ПО на современное (рекомендую), либо добавить его в исключения вручную через Add-CIPolicyRule. Но помните: если вы разрешаете неподписанный файл — вы открываете дыру. Убедитесь, что этот файл безопасен.
  • Вы настраиваете WDAC для сервера
    Используйте Hash для системных файлов и FilePublisher для приложений. Включите режим «Audit» перед активацией — это логирует попытки запуска без блокировки. Проверьте логи, потом включите блокировку.

Частые ошибки, которые ломают WDAC

  1. Не обновляете политику после установки ПО
    Если вы создали политику, а потом установили новую программу — она не запустится. WDAC не знает о ней. Обязательно запускайте Update-CIPolicy после установки любого нового софта.
  2. Запускаете PowerShell без прав администратора
    Все команды WDAC требуют прав администратора. Без них вы получите ошибку «Access Denied» — и ничего не настроите.
  3. Используете политику в режиме «Audit» слишком долго
    Режим Audit (проверка без блокировки) полезен для тестирования. Но если вы оставляете его включённым месяцами — вы не получаете защиты. Сразу после сбора логов переключайтесь на блокировку.
  4. Удаляете файл политики, не отключив её
    Если вы просто удалили WDAC_Policy.bin, но не выполнили Remove-CIPolicy — система может не загрузиться. Всегда отключайте политику перед удалением.
  5. Пытаетесь запускать PowerShell-скрипты (.ps1) без подписи
    WDAC блокирует и скрипты. Если вы используете PowerShell для автоматизации — подпишите скрипты сертификатом или добавьте их в политику как исключения.

Как лучше сделать: практические советы

  • Создавайте резервную копию политики
    Сохраняйте WDAC_Policy.bin и UpdatedPolicy.xml на флешку или в защищённое хранилище. Если что-то пойдёт не так — вы сможете быстро восстановить работоспособность.
  • Проверяйте логи регулярно
    Откройте «Просмотр событий» → «Журналы Windows» → «Приложения и службы» → «Microsoft» → «Windows» → «CodeIntegrity» → «Operational». Там вы увидите, какие файлы блокировались. Это поможет понять, что ещё нужно добавить в исключения.
  • Не используйте WDAC вместе с AppLocker
    Эти два механизма конфликтуют. Включите только один. WDAC — более мощный и современный. AppLocker — устаревший. Отключите его через групповую политику или реестр.
  • Тестируйте на чистой системе
    Настройте WDAC на виртуальной машине с тем же ПО, что и на реальных ПК. Убедитесь, что всё работает — и только потом разверните на реальных машинах.
  • Подпишите свои скрипты
    Если вы пишете PowerShell-скрипты для автоматизации — купите или создайте самоподписанный сертификат и подпишите их. Это избавит вас от проблем с WDAC.

Итог: что делать прямо сейчас

Если вы хотите, чтобы на вашем компьютере не запускалось ничего, кроме проверенного ПО — сделайте так:

  1. Откройте PowerShell от имени администратора.
  2. Выполните: New-CIPolicy -Level FilePublisher -FilePath C:\WDAC\BaselinePolicy.xml
  3. Используйте компьютер как обычно в течение 3–5 дней.
  4. Выполните: Update-CIPolicy C:\WDAC\BaselinePolicy.xml C:\WDAC\UpdatedPolicy.xml -UserPEs
  5. Выполните: ConvertFrom-CIPolicy C:\WDAC\UpdatedPolicy.xml C:\WDAC\WDAC_Policy.bin
  6. Выполните: Set-CIPolicy -FilePath C:\WDAC\WDAC_Policy.bin -UserModePolicy
  7. Перезагрузите компьютер.

После этого — всё неподписанное ПО не запустится. Даже если вы случайно скачаете вредонос — он просто не откроется. Это не 100% защита, но это один из самых надёжных способов остановить большинство атак на уровне исполнения.

Не ждите, пока что-то сломается. Настройте WDAC сейчас. Это займёт 30 минут — и защитит вас на годы.

Информация в этой статье носит ознакомительный характер. Настройка системной безопасности требует понимания специфики вашей среды. Перед внедрением в производственную среду проконсультируйтесь с ИТ-специалистом.

Оцените статью
PEFile — Безопасность и технологии простым языком