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

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

by admin
A+A-
Сброс

Отдел безопасности поручил нашему 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

В редакторе групповой политики есть встроенный параметр, который позволяет запретить запуск определенных исполняемых файлов. Эта политика — 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 появится сообщение об ошибке:

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

Однако такая политика недостаточно надёжна и безопасна. Например, она не блокирует запуск 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 необходимо блокировать несколько исполняемых файлов, расположенных в разных каталогах:

  • x86 и x64 версии powershell.exe и powershell_ise.exe в папках %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 в домене AD с помощью консоли 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 administratorThis app has been blocked by your administrator

Данная политика SRP также блокирует запуск процесса PowerShell.exe через Windows Terminal.

[error 2147943660 (0x800704ec) при запуске `%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe']

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

Эта программа заблокирована групповой политикой. Для получения дополнительной информации обратитесь к вашему системному администратору.

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. Это позволит запускать скрипты при загрузке и задания планировщика PowerShell.

Чтобы проверить, что политика GPO не применяется к администраторам, используйте команду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 можно было применять только в Enterprise-редакции 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. В правиле «Все файлы, расположенные в папке Windows» добавьте исключение Publisher для файла powershell.exe.
  5. Выделите этот исполняемый файл и переместите ползунок в положение File name. block 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

При этом следует заблокировать запуск как x86, так и x64 версий файлов powershell.exe, powershell_ise.exe и pwsh.exe.

Вам также может понравиться

оставить комментарий

Focus Mode