В операционных системах разработан целый пул мер безопасности, которые позволяют на разных этапах митигировать и детектировать вредоносную активность. Подсистемы аутентификации, авторизации, контроль повышения привилегий, антивирусные решения, групповые политики и прочее, что позволяет расширить диапазон контроля системы.
VPS сервер Windows Server от ₽430 / месСоздайте виртуальный сервер с Windows за 1 минуту
В данном материале мы рассмотрим один из таких механизмов безопасности и научимся настраивать политики для контроля запуска скриптов на ОС!
Что такое Execution Policies?
Дословно можно интерпретировать данный механизм, как политики запуска для PowerShell скриптов. Сам PS интерпретатор представляет собой оболочку для работы с ОС, который управляет сервисами, процессами, устройствами и контролем объектов ОС в целом.
Перед запуском команд, интерпретатор может выполнить дополнительные проверки в соответствии со своими конфигурациями и механизмами. Один из них Execution Policies задает политику для объекта, по которой будет определено может ли текущий скрипт быть запущен.
К примеру, пользователь нашей доменной сети решил открыть скрипт, который потенциально по нашей политике вредоносен:

На что получаем логичный ответ, что в данной системе стоит запрет на запуск скриптов. Саму политику можно установить командой:
Set-ExecutionPolicy -Scope -ExecutionPolicy –Force Где варьируются значения области применения или же scope, а так же самой категории политики запрета. Можно выбрать одну из представленных областей применения:
- LocalMachine -изменяется вручную в реестре HKEY_LOCAL_MACHINE, действует на всех пользователей и не зависит от GPO;
- MachinePolicy – централизованно управляется через GPO и действует на весь компьютер.
- UserPolicy – централизованно управляется через GPO, но применяется только к отдельным пользователям;
- Process – политика действует на процесс, в котором была выполнена команда по ограничению запуска скриптов;
- CurrentUser – политика будет применена к текущему пользователю из ветки реестра HKEY_CURRENT_USER.
Приоритет применения: если параметр задан сразу в нескольких местах, приоритет будет таким:
- Process – политика, заданная в процессе, имеет высший приоритет и переопределяет все остальные;
- UserPolicy (настроено через GPO для пользователя);
- MachinePolicy (настроено через GPO для компьютера);
- CurrentUser (запись в реестре HKEY_CURRENT_USER);
- LocalMachine (запись в реестре HKEY_LOCAL_MACHINE).
Логика такого приоритета достаточно понятна, для массовой части устройств настройка производится через GPO, выбирают пользователей и машины. Для тех пользователей или устройств, кого не коснулись политики используются настройки из реестра. Но и куда без исключений в виде приоритета для процессов.
А представленные вариации типов политик выполняют следующие функции:
- Restricted – запрет на запуск любых скриптов, как на локальном устройстве, так и из интернета;
- AllSigned – запрет на запуск не подписанных скриптов доверенным издателем. Однако если вы добавите самоподписной сертификат CA в корневую папку доверенных, то проверка разрешит выполнение скрипта;
- RemoteSigned – запрет на запуск удаленных скриптов без подписи, все локальные разрешены;
- Unrestricted – разрешен запуск всех скриптов, требует подтверждения перед запуском;
- Bypass – аналогична Unrestricted, однако, не требует подтверждения. Реализована с целью автоматизации задач и не рекомендуется к использованию в обычных АРМ и серверах.
- Default – с Windows 10 значение Restricted, а для серверов RemoteSigned.
После того как разобрались с основными опциями и синтаксисом, перейдем к практике!
Как настроить Execution Policy через GPO?
Для начала работы вы можете узнать какая политика установлена на вашей машине сейчас командой:
Get-ExecutionPolicy 
После можно задать политики глобально через GPO, на контроллере домена перейдите по пути:
Computer Configuration → Windows Settings → Administrative Templates → Windows Components → Windows PowerShell Необходимо включить политику, а так же ее тип:

После чего сохранить и применить к организационному юниту из устройств или пользователей:

На клиентском устройстве можно обновить политики, не дожидаясь автоматического обновления Win+X → Terminal/PowerShell:
gpupdate /force 
А после проверим настройки через команду:
Get-ExecutionPolicy -list В зависимости от того, на устройства или пользователей вы назначили политику будет изменен параметр MachinePolicy или же UserPolicy.
Как настроить Execution Policy через PS?
Если вы хотите изменить настройки локально на вашей машине, то пропишите ранее разобранную команду. К примеру, разрешим локальные, но запретим не подписанные удаленные скрипты:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned –Force 
Обратите внимание, что действия необходимо выполнять от лица имеющего права на ветку реестра. После запустим неподписанный файл из внешней сети, обычно у таких есть MotW-метка, которая и помечает файл внешним. Политика отработала и скрипт не был запущен, такой механизм отлично подходят для митигации вредоносной активности в доменной сети на конечных точках, в серверных решениях. Данный инструмент будет отличным дополнением к существующей политике AppLocker и зон запуска файлов!
Для выполнения тестов, вы можете использовать изолированную среду VPS сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.

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