Как отключить PowerShell в Windows для пользователей без прав администратора: пошаговая инструкция

Отдел безопасности поручил моему IT-отделу отключить PowerShell на некоторых компьютерах. Пользователям нужно запретить запуск интерактивной консоли PowerShell и выполнение PowerShell-скриптов. При этом скрипты GPO при входе в систему и PowerShell-скрипты, запускаемые через Планировщик задач от имени SYSTEM, должны продолжать работать. В этой статье мы рассмотрим несколько способов отключения PowerShell на компьютерах, которые можно централизованно применить через групповую политику (GPO).

По умолчанию политика Windows PowerShell Execution Policy установлена в значение Restricted. Эта политика запрещает выполнение только файлов скриптов с расширением *.PS1 (можно настроить через параметр GPO Turn on Script Execution в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell). Однако это не блокирует доступ пользователей к интерактивной консоли powershell.exe.

GPO: Turn on PowerShell Script Execution GPO: Turn on PowerShell Script Execution

В редакторе GPO есть встроенная политика, позволяющая запретить запуск определённых исполняемых файлов. Это политика Don’t run specified Windows applications, которая находится в User Configuration -> Administrative Templates -> System. Чтобы её включить, активируйте политику, нажмите кнопку Show и добавьте имя исполняемого файла (powershell.exe), запуск которого хотите запретить.

Deny running powershell.exe executable file via GPODeny running powershell.exe executable file via GPO

После обновления параметров GPO на клиентском устройстве, при попытке запуска powershell.exe будет отображаться следующая ошибка:

Restrictions
This operation has been cancelled due to restrictions in effect on this computer. Please contact your system administrator.

Однако такая политика не является надёжной и безопасной. Например, она не блокирует запуск Windows Terminal с сессией PowerShell.

This operation has been cancelled due to restrictions in effect on this computerThis operation has been cancelled due to restrictions in effect on this computer

Обратите внимание, что при реализации политики запрета запуска PowerShell необходимо блокировать несколько исполняемых файлов из разных директорий:

  • Версии powershell.exe и powershell_ise.exe для x86 и x64 находятся в папках %SystemRoot%\System32\WindowsPowerShell\v1.0\ и %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\
  • Если на компьютере установлена новая версия PowerShell Core, нужно также заблокировать исполняемый файл pwsh.exe. Например, у меня он находится по пути C:\Program Files\PowerShell\7\pwsh.exe (для определения пути используйте команду Get-Command pwsh.exe) get-command - to check executable pathget-command - to check executable path

Более гибкие ограничения на запуск исполняемых файлов можно реализовать с помощью Software Restriction Policies (SRP).

  1. Создайте новый GPO в домене Active Directory с помощью консоли gpmc.msc
  2. Перейдите в User Configuration -> Policies -> Windows Settings -> Security Settings -> Software Restriction Policies
  3. Выберите New Software Restriction Policy New Software Restriction Policy New Software Restriction Policy
  4. Перейдите в раздел Additional Rules и добавьте путь: %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
  5. Установите уровень безопасности в значение Disallowed Deny running powershell.exe in Windows via SRPDeny running powershell.exe in Windows via SRP
  6. Примените эту политику к нужному подразделению (OU)

После применения политики пользователи не смогут запускать powershell.exe.

This app has been blocked by your administrator

This app has been blocked by your administratorThis app has been blocked by your administrator

Эта политика SRP также блокирует запуск powershell.exe через Windows Terminal.

[error 2147943660 (0x800704ec) when launching `%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe']

0x800704ec when launching `powershell.exe'0x800704ec when launching `powershell.exe'

This program is blocked by group policy. For more information, contact your system administrator.

powershell is blocked by group policypowershell is blocked by group policy

Вы можете сделать исключение из политики и позволить определённым пользователям использовать PowerShell. В моём примере я создал группу безопасности в Active Directory под названием AllowPowerShell и добавил в неё администраторов, которым разрешён запуск PowerShell.

Далее на вкладке Delegation в свойствах политики в консоли GPMC я добавил эту группу с правом на чтение, но запретил применять к ней политику, установив запрет на Apply Group Policy (поставив Deny).

exclude admin group from GPOexclude admin group from GPO

Таким образом, мы запретили запуск PowerShell для обычных пользователей, но разрешили администраторам. Аналогично политика не должна применяться к учётной записи SYSTEM, чтобы запускались стартовые скрипты и задачи из Планировщика.

Для проверки, что политика не применяется к администраторам, используйте команду gpresult /r.

gpresult - filtering deny GPO for adminsgpresult - filtering deny GPO for admins

Однако начиная с Windows 10 версии 1803 и Windows Server 2019, политики Software Restriction Policies считаются устаревшими. Вместо них рекомендуется использовать политики Windows Defender Application Control (WDAC) или AppLocker.

Далее рассмотрим, как использовать политику AppLocker для запрета запуска powershell.exe. Изначально AppLocker был доступен только в корпоративных версиях Windows. Начиная с Windows 10 версии 2004, политики AppLocker можно применять и в версиях Pro Windows 10 и 11.

  1. Для применения политики AppLocker на клиенте включите автоматический запуск службы Application Identity (Computer Configuration -> Windows Settings -> Security Settings -> System Services) Application Identity service - autostartApplication Identity service - autostart
  2. Зайдите в Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Application Control Policies -> AppLocker. Откройте свойства и активируйте опцию Configured в разделе Executable rules. Установите режим работы в Enforce rules. Enable AppLocker policyEnable AppLocker policy
  3. Щёлкните правой кнопкой мыши на Executable rules и выберите Create Default rules.
  4. В правиле «All files located in the Windows folder» добавьте исключение по издателю (Publisher) с указанием пути к исполняемому файлу powershell.exe.
  5. Выберите этот исполняемый файл и передвиньте ползунок на пункт File nameblock running powershell via AppLocker policyblock running powershell via AppLocker policy
  6. Это правило запретит запуск данного файла для пользователей.
  7. Чтобы разрешить администраторам запуск powershell.exe, создайте для них отдельное разрешающее правило, в котором будет указан только этот файл. allow powershell to run only for adminsallow powershell to run only for admins
  8. По умолчанию политики AppLocker запрещают запуск любых исполняемых файлов, кроме тех, что находятся в папках Windows и Program Files. Поэтому, если необходимо запретить запуск только PowerShell.exe, нужно добавить правило, разрешающее всё для доменных пользователей, кроме powershell.exe (укажите в поле пути *). AppLocker rule - allow all except powershellAppLocker rule - allow all except powershell
При создании правил AppLocker следует учитывать несколько моментов. Уровень по умолчанию — «Disallowed», то есть запрещено всё, что явно не разрешено. Правила запрета имеют приоритет над разрешающими правилами. Это значит, что файл будет запускаться только если он не запрещён и явно разрешён.

Вы можете экспортировать итоговые настройки политики AppLocker в XML-файл, чтобы просмотреть их на клиентском компьютере:

Get-AppLockerPolicy -Effective -XML > C:\temp\applocker_result_policy.xml

При попытке пользователя запустить PowerShell.exe на клиенте, появляется сообщение о том, что приложение заблокировано системным администратором.

PowerShell blocked for users by system administratorPowerShell blocked for users by system administrator

Так же рекомендуется блокировать все версии powershell.exe, powershell_ise.exe и pwsh.exe как для x86, так и для x64.

.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *