Запрет запуска приложений и служб в Windows через групповые политики

GPO

В записи описывается как можно запретить запуск служб и приложений в windows при помощи групповых политик Active Directory. Рассматривается пример запрета TeamViewer.

Мне была поставлена задача заблокировать работу TeamViewer на компьютерах компании. Можно пойти двумя путями:

  1. Блокировать работу TeamViewer на уровне сети - запретить обращаться к портам, серверам и анализировать содержимое пакетов
  2. Блокировать запуск ПО TeamViewer на уровне политик ОС

Я выбрал второй вариант.

Блокирование запуска системной службы

Первое что я захотел заблокировать (и заодно протестировать работу политики) - это запуск службы TeamViewer:

  • На доменном контролере запускаем оснастку Group Policy Managment
  • Создаем или переходим к редактированию групповой политики
  • В групповой политике переходим по адресу: Computer Configuration - Windows Settings - Security Settings - System Services
  • В списке сервисов находим тот, что нужен и дважды кликаем по нему, у меня это сервис TeamViewer
  • Ставим галочку возле "Define this policy setting"
  • В блоке "Select service startup mode" выбираем "Disabled"

system services policy

  • Жмем на кнопку "Edit Security..." и выставляем права на чтение "Read" для Administrators и INTERACTIVE, все другие права снимаем. Для SYSTEM права не изменяем.
  • Дважды жмем OK
  • На локальном компьютере, где политику нужно применить именно сейчас, в командной консоли вводим команду "gpupdate /force" и после ее отработки перезагружаем компьютер.

Как добавить службу в групповую политику

Есть один нюанс: по умолчанию при редактировании групповой политики по адресу "Computer Configuration - Windows Settings - Security Settings - System Services" видны только те службы, который установлены на компьютере, где это редактирование происходит, в нашем случае это контроллер домена.

Чтобы в редакторе групповых политик в "System Services" добавить какую-либо службу, нужно сделать следующее:

  • На компьютере, где есть нужная нам служба, запускаем "Консоль Управления (MMC)": Пуск - Выполнить - MMC
  • Выбираем меню "Консоль" - "Добавить или удалить оснастку"
  • В появившемся окне жмем кнопку "Добавить"
  • В списке доступных изолированных оснасток выбираем "Шаблоны безопасности" и жмем кнопку "Добавить", затем "ОК"
  • Разворачиваем в MMC "Шаблоны безопасности" и кликаем по "C:\Windows\Security\Templates"

security templates

  • В правой области окна кликаем правой кнопкой мышки, выбираем пункт "Создать шаблон" и прописываем имя для нового шаблона - "system services". Созданный шаблон должен появится в левой области окна.
  • В MMC переходим по адресу "Шаблоны безопасности - C:\Windows\Security\Templates - system services - "Системные службы"
  • Среди списка системных служб находим нужную службу, в моем случае это была TeamViewer и дважды кликаем по ней
  • Ставим галочку возле "Определить следующий параметр политики в шаблоне"
  • Откроется окно настройки безопасности:
    • для Администраторы и Интерактивные оставляем галочку только возле "Чтение", все остальные галочки снимаем.
    • для SYSTEM оставляем как есть.
    • жмем ОК
  • В блоке "Выберите режим запуска службы:" выбираем пункт "Запрещен" и жмем "ОК"
  • После этого среди списка шаблонов безопасности (в левой части окна) кликаем правой кнопкой мышки по "system services" и выбираем пункт "сохранить как..." - сохраняем файл и переносим его на доменный контроллер.
  • На доменном контроллере при редактировании нужной политики кликаем правой кнопкой мышки по "Computer Configuration - Windows Settings - Security Settings" и выбираем пункт "Import Policy" - импортируем сохраненный файл.
  • После этого нужная служба появится в списке "Computer Configuration - Windows Settings - Security Settings - System Services": убеждаемся в этом и проверяем настройки.

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

Запрет запуска приложений

Также я решил запретить запуск самого приложения. При помощи групповых политик это можно сделать описывая одно из следующих правил:

  • Правило зоны
  • Правило пути
  • Правило хеша
  • Правило сертификата

Правило зоны

Запрет запуска приложений *.msi из определенной зоны (Интернет, Локальный компьютер, Надежные узлы) - считаю этот метод блокировки бесполезным, исходя из того, что он маловостребованный

Правило пути

Блокировка по имени/пути файла или по пути в реестре (если программа хранит пути к своим рабочим каталогам в реестре). Можно использовать переменные среды или подстановочные знаки «?»  и «*».

Минус этого метода в том, что эту политику легко обойти: достаточно переместить или переименовать файл.

Плюс метода в том, что можно реализовать следующую логику: разрешить запуск программ ТОЛЬКО С определенных папок, таких как windows, program files и запретить пользователям что-либо в этих папках изменять\записывать. В результате идеальная защита: исполняемые файлы вне этих папок не запустятся, свои же файлы пользователи не смогут записать в системные папки из которых разрешен запуск - нет прав. К сожалению у себя в локальной сети мы не готовы так жестко ограничить пользователей.

Я решил проверить как работает правило пути: создал правило в котором указал запрет запуска если путь "*TeamViewer*". В результате TeamViewer не запускался до тех пор, пока я не нашел портативную версию и не переименовал ее файл.

Правило хеша

Для идентификации файла используется его хеш – это цифровой «отпечаток» файла. Хеш однозначно идентифицирует любой файл, независимо от того как он называется и где находится. То есть два файла с идентичным содержимым будут иметь один и тот же хеш. Это спасает от переименования и перемещения файлов.

Но если программа часто обновляется, то после каждого обновления придется прописывать новый хеш.

Правило сертификата

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

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

Чтобы просмотреть и экспортировать сертификат издателя выполните следующие действия:

  • Правый клик мышки на exe-файле
  • Выберите пункт свойства - перейдите на вкладку цифровые подписи
  • В поле "список подписей" дважды кликните по подписи
  • Нажмите на кнопку "просмотр сертификата"
  • Перейдите на вкладку "Состав" и нажмите на кнопку "Копировать в файл..."
  • Выберите формат файла сертификата в DER или Base64-кодировке и жмите по кнопкам "далее" - дальше все должно быть понятно.

Также следует учесть один нюанс: для того чтобы правило сертификата работало нужно активировать их работу:

  • переходим к редактированию нужной политики
  • в политике переходим по адресу "Computer Configuration - Windows Settings - Security Settings - Local Policies - Security Options"
  • в самом низу находим "System settings: Use Certificate Rules on Windows Executables for Software Restriction Policies" ("Параметры системы:использовать правила сертификатов для исполняемых файлов Windows для политик ограниченного использования программ") и дважды кликаем по нему
  • Ставим галочку возле "Define this policy setting" и выбираем "enabled"

Область действия политик ограниченного использования программ и приоритет правил

Действие политик ограниченного использования программ не распространяется на:

  • Программы, запущенные от имени учетной записи SYSTEM
  • Драйверы и другие приложения уровня ядра
  • Макросы внутри документов Microsoft Office
  • Программы, написанные для общей многоязыковой библиотеки времени выполнения (Common Language Runtime) – эти программы используют политику безопасности доступа кода (Code Access Security Policy)

Приоритет применения правил выглядит так (по мере убывания приоритета):

  • Правило для хеша
  • Правило для сертификата
  • Правило для пути
  • Правило для зоны Интернета
  • Правило по умолчанию

Настраиваем политику запрета программного обеспечения

При редактировании политики переходим по адресу "Computer Configuration - Windows Settings - Security Settings - Software Restriction Policies"

Если политики для программного обеспечения  еще не определялись, то вы увидите предупреждение, что в случае их назначения новые правила перекроют параметры политик, унаследованных от других объектов GPO. Именно это мы и собираемся сделать, поэтому жмем правой кнопкой мышки по Software Restriction Policies и выбираем в меню "Create Software Restriction Policies". После этого увидим:

Software Restriction Policies

Общие настройки:

  • Enforcement - можно указать к чему\кому эти политики применяются (или можно оставить настройки по умолчанию):
    • Ко всем файлам программного обеспечения или ко всем файлам программного обеспечения кроме библиотек (таких как dll)
    • Ко всем пользователям или ко всем пользователям кроме администраторов
  • Designated File Types - указаны какие файлы считаются исполняемыми. Список уже сформирован, но при желании вы можете добавить или убавить типы файлов из этого списка.
  • Trusted Publishers - эта группа параметров позволяет настраивать реагирование политики на элементы управления ActiveX® и другое подписанное содержимое. Здесь можно указать, кто будет принимать решение о доверии подписанному содержимому (лучше оставить это право администраторам предприятия), а также задать параметры проверки сертификатов – проверить, не отозван ли сертификат, и удостовериться, что он не просрочен.

В папке Security Levels, будут два уровня:

  • Disallowed - когда все запрещено кроме того, что разрешено (разрешить можно в Additional Rules)
  • Unrestricted - все разрешено кроме того, что запрещено (запретить можно в Additional Rules)

Если кликнуть по одному из этих уровней, то можно увидеть кнопку "Set as default". По умолчанию включен уровень Unrestricted

В папке Additional Rules собственно и создаются разрешающие или запрещающие политики. По умолчанию там уже будут созданы политики для путей в реестре, которые разрешают запускать приложения из служебных\системных папок.

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

Я ограничивал Teamviewer по сертификату издателя: выбрал New Certificate Rule, в нем указал файл с сертификатом издателя (чуть выше описано как его получить) и в Security level выбрал "Disallowed", то есть запретить.

Запрет запуска приложений через Software Restriction Policies additional rules

Если после настройки политик не терпится увидеть их работу на локальном компьютере, то в командной строке введите "gpupdate /force" и после выполнения команды перезагрузите компьютер.

Полезные ссылки:

  • windowsfaq.ru - Ограничение списка запускаемых программ при помощи групповых политик
Понравилось? =) Поделись с друзьями:

Обсуждение записи “Запрет запуска приложений и служб в Windows через групповые политики”

  1. Станислав says:

    Спасибо! Всё четко и по делу! Отличная статья!

Обсудить