Блокировка PowerShell с помощью GPO

Вопрос или проблема

Мой руководитель сказал мне, что они хотят, чтобы PowerShell выполнялся только на серверах с учетной записью администратора, поэтому я создал групповую политику (GPO), которая блокирует PowerShell.exe и PowerShell_ise.exe с помощью функции “Не запускать указанные приложения Windows”.

Несколько дней назад я обнаружил, что я все еще могу запускать PowerShell через cmd, просто выполнив powershell -c или просто powershell, и я не блокирую cmd, потому что мне это нужно для поддержки и административных задач на рабочих станциях.

После небольшого исследования я попытался установить хеш SRP для блокировки PowerShell и ise. Дело в том, что это не применяется, хотя делегация хорошая, OU в порядке, права групп в порядке. Я имею в виду, что я вижу, что пользователь получает GPO и находится в одной из групп, которые читают и применяют GPO.

Я пробовал разные OU, группы, аккаунты, типы SRP, но ничего не помогает.

Есть ли у вас какие-либо советы для этой ситуации? Заранее благодарен

Правка: я не хочу блокировать ядро PowerShell, потому что некоторые процессы или задачи не смогут выполниться. Поэтому идея заключается в том, чтобы заблокировать доступ к PowerShell для определенных пользователей (или компьютеров).

Краткий ответ

Краткий ответ на ваш вопрос – не пытаться предотвратить пользователей от открытия PowerShell. Почему? PowerShell – это программа, а не граница безопасности. Для получения подробной информации продолжайте читать.

Предотвращение запуска PowerShell не увеличивает безопасность

Блокировка PowerShell или предотвращение выполнения сценариев PowerShell не увеличивает безопасность. В Windows границей безопасности является учетная запись пользователя, а не программы, которые запускает пользователь. Тот факт, что пользователь может открыть PowerShell или запускать сценарии PowerShell, не позволяет ему обойти какие-либо средства контроля безопасности, которые присутствуют для его учетной записи.

Политика выполнения PowerShell – это функция безопасности, а не граница безопасности

Политика выполнения PowerShell – это широко misunderstood функция, которую часто (зло) используют, чтобы попытаться остановить пользователей от выполнения сценариев PowerShell в ошибочном убеждении, что это как-то увеличивает безопасность.

Политика выполнения PowerShell – это функционал безопасности, который был разработан для предотвращения случайного выполнения неподписанных сценариев. Брюс Пейтт, один из основных разработчиков PowerShell, говорит точно это в принятом ответе на этот вопрос на StackOverflow.

ExecutionPolicy не является границей безопасности. Как кто-то заметил в комментарии1, это функция безопасности. Думайте о ней как о ремне безопасности, а не о замке двери. Но ремни безопасности уменьшают риск, поэтому лучше использовать их, чем не использовать. ExecutionPolicy снижает риск случайного выполнения вредоносного кода. Рекомендуемая минимальная политика – RemoteSigned.

1“Кто-то”, о ком он говорил, это я сам.

Ответ или решение

Ответ на вопрос о блокировке PowerShell с помощью GPO

Общая информация

Блокировка PowerShell с помощью групповых политик (GPO) – задача, требующая тщательного подхода. Однако, стоит отметить, что простое ограничение доступа к программе PowerShell не всегда повышает безопасность. Защита ваших систем должна основываться на контроле доступа и управлении привилегиями пользователей. Давайте рассмотрим, как правильно подойти к этой задаче, предоставив конкретные шаги для решения вашей ситуации.

Почему блокировка PowerShell может быть неэффективной

PowerShell является мощным инструментом управления в Windows, и его блокировка не предотвратит злоумышленников от использования альтернативных методов, таких как запуск через cmd. Блокировка программы не является достаточным средством для защиты вашей среды, так как главное значение имеет учетная запись пользователя, а не конкретные приложения.

Рекомендации по ограничению доступа к PowerShell

  1. Управление доступом через группы безопасности:

    • Создайте группу безопасности для администраторов, которым разрешен доступ к PowerShell.
    • Убедитесь, что только пользователи, входящие в эту группу, имеют необходимые права для запуска PowerShell. Все остальные должны быть исключены из этой группы.
  2. Используйте политики выполнения PowerShell:

    • Вместо полного блокирования PowerShell, настройте политику выполнения (Execution Policy) на уровне OU. Например, установите RemoteSigned, что позволит запускать только подписанные скрипты.
    • Это может снизить риск случайного запуска вредоносного кода.
  3. Фильтрация процессов с помощью Software Restriction Policies (SRP):

    • Если вы хотите больше контролировать доступ к PowerShell, примените SRP, чтобы разрешить или запрещать выполнение конкретных версий PowerShell только для определенных групп пользователей.
    • Настройте правила хеширования для powershell.exe и powershell_ise.exe, чтобы ограничить доступ.
  4. Аудит и мониторинг:

    • Включите аудит использования PowerShell, чтобы отслеживать, кто запускает его и какие команды выполняет. Это поможет вам следить за потенциальными злоупотреблениями.
    • Используйте решения для мониторинга и журналирования, такие как Windows Event Forwarding или сторонние инструменты SIEM, для анализа и своевременного обнаружения необычной активности.
  5. Обучение пользователей:

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

Заключение

Учитывая вышеизложенные рекомендации, вы сможете более эффективно контролировать доступ к PowerShell и минимизировать возможные риски. Помните, что безопасность – это процесс, а не состояние, и он должен включать в себя использование комплексного подхода, включая управление пользователями, контроль доступа и мониторинг.

Если у вас дальше возникают сложности с настройкой GPO или SRP, может быть полезно обратиться к IT-специалисту с экспертизой в области управления политиками безопасности в Windows.

Оцените материал
Добавить комментарий

Капча загружается...