AppLocker и CRL


Проверка списков отзыва сертификатов (CRL) полезная вещь позволяющая нам избежать взаимодействия с системами, у которых скомпрометирован сертификат.

Со временем политика использования сертификатов на Windows системах ужесточается. Мы все ощутили это в то время, когда RDP клиент на Windows 7 начал делать жесткие проверки сертификатов. Многие инфраструктуры пришлось тогда подчистить и подправить, чтобы пользователи не испытывали проблем с подключениями к удаленным рабочим столам.

Проверки CRL также могут вызывать проблемы — в виде задержек. Это уже было в нашем опыте с Sharepoint и Exchange серверами. Собственно это все тот же CAPI.

На днях выяснилось, что этой проблеме подвержен AppLocker. Оказывается, даже если он выключен, он всё равно работает где-то в недрах системы, пытается что-то проверять и даже провоцирует проверки сертификатов и CRL. А уж если он включен, и настроены правила Publisher, то и подавно.

Это имеет один неожиданный побочный эффект. Собственно так это и было обнаружено. Суть в том, что PowerShell имеет встроенную поддержку AppLocker, т.е. делает специальные вызовы API, чтобы проверить можно ли запускать тот или иной скрипт. Побочный эффект в том, что из-за проверок CRL в AppLocker PowerShell может работать медленнее: задержка запуска, задержки при загрузке модулей, задержки при выполнении скриптов.

Надо отметить, что эта проблема чаще всего возникает в изолированных сетях. Но иной раз и в сетях, которые просто неправильно сконфигурированы (фаервол и, особенно, DNS).

Неправильно сконфигурированные сети надо лечить.

Рекомендация для изолированных сетей простая: групповыми политиками уменьшить тайм-аут проверки CRL.

Ссылки:

Рекомендация отсюда

Обсуждение PowerShell

SCCM,Application,Powershell – software restriction policy


Все начиналось с простого: потребовалось раскатать на пользователей сертификат. С помощью групповых политик на пользователей можно распространить только корневые сертификаты. Этот вариант отпал. Т.к. под раздачу попадали древние компьютеры с Windows XP, то пришлось протестировать несколько других различных способов. Оказалось, например, что certutil на разных версиях ОС имеет разные наборы ключей, и от этого варианта пришлось отказаться. Powershell подошел, но с оговоркой – пришлось тестировать под версией 2, которая работает на Windows XP. После танцев с бубном (как беден Powershell стрых версий!) скрипт был отлажен на тестовой машине. Для его исполнения решили использовать SCCM. Сделали приложение, сделали распространение на коллекцию пользователей и … началось – мониторинг закраснел ошибками выполнения скрипта. Читать далее