Безопасность PowerShell в Active Directory

Добрый день всем.

Речь пойдет немного о концепции безопасности в PowerShell, централизованной установке ExecutionPolicy в домене, настройке центра сертфикации, подписывании собственных скриптов и распространении сертификатов. Матерьяла много, но тем не менее хотелось бы как можно более подробно.

Шаг 1. PowerShell ExecutionPolicy

Прежде всего необходимо разобраться с тем что же такое Execution Policy, какие они бывают и на каких уровнях работают. Для этого рекомендую прочитать мою статью о Execution Policy.

В общем-то нам необходимо, чтобы на всех компьютерах стояла ExectuionPolicy в значение AllSigned на уровне LocalMachine. Однако для наших разработчиков необходимо выделить тестовую среду или на их компьютерах установить политику RemoteSigned — иначе разработка скриптов для них покажется сущим кошмаром.

Шаг 2. Установка ExecutionPolicy

Проще всего настраивать Exectuion Policy используя групповые политики. Для этого достаточно в объкте групповых политик установить следующий параметр Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell в значение Allow only signed scripts. Подробней прочитайте в моей статье установка Execution Policy.

Напомню, что политика Allsigned позволяет запускать только скрипы, подписанные доверенным центром сертификации. Вариантов на самом деле два — или использовать самоподписанные сертификаты или что более логично в корпоративной среде — сертификаты подписанные доверенным центром сертификации. Доверенным центром сертификации может стать наш Active Directory Certificate Services. Если он у вас установлен и настроен, тогда можно смело пропускать следующий раздел.

Шаг 3. Настройка Certification Authority и создание шаблона для сертификата

Прежде всего вам необходимо установить Active Directory Certificate Services, настроить его в качестве Certification Authority. Далее желательно создать копию шаблона Code Signer, в которой установить галку Allow private key to be exported и настроить необходимые разрешения. По шагам можно поглядеть в статье настройка Certification Authority для подписывания скриптов

Шаг 4. Получение сертификатов

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

Шаг 5. Подписывание скриптов

Для подписывания скриптов необходимо использовать командлет Set-AuthenticodeSignature в качестве параметров необходимо указать сертификат и файл скрипта. По шагам можно поглядеть в статье подписывание скриптов PowerShell.

Шаг 6. Добавление сертификатов в хранилище доверенных издателей

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

Шаг 7. Обновление сертификата

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

Заключение

Статья получилась, весьма обширная и большая. Тем не менее надеюсь, что разобраться с этим всем у вас уйдет не так много времени.

Почитать еще

get-help about_Execution_Policies -ShowWindow

get-help about_Signing -ShowWindow

How Can I Sign Windows PowerShell Scripts with an Enterprise Windows PKI? Part 1

How Can I Sign Windows PowerShell Scripts with an Enterprise Windows PKI? Part 2

3 комментария

  1. Такого легкого для понимания исполнения материала при работе с СА еще не видел

  2. Приветствую! Это, пожалуй, самая доступная серия статей о подписании скриптов)
    Спасибо

  3. Отличный материал! Понимание приходит мгновенно) Автор респект тебе!

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

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

CAPTCHA ImageChange Image