
В записи описывается как можно запретить запуск служб и приложений в windows при помощи групповых политик Active Directory. Рассматривается пример запрета TeamViewer.
Мне была поставлена задача заблокировать работу TeamViewer на компьютерах компании. Можно пойти двумя путями:
- Блокировать работу TeamViewer на уровне сети - запретить обращаться к портам, серверам и анализировать содержимое пакетов
- Блокировать запуск ПО TeamViewer на уровне политик ОС
Я выбрал второй вариант.
Блокирование запуска системной службы
Первое что я захотел заблокировать (и заодно протестировать работу политики) - это запуск службы TeamViewer:
- На доменном контролере запускаем оснастку Group Policy Managment
- Создаем или переходим к редактированию групповой политики
- В групповой политике переходим по адресу: Computer Configuration - Windows Settings - Security Settings - System Services
- В списке сервисов находим тот, что нужен и дважды кликаем по нему, у меня это сервис TeamViewer
- Ставим галочку возле "Define this policy setting"
- В блоке "Select service startup mode" выбираем "Disabled"
- Жмем на кнопку "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"
- В правой области окна кликаем правой кнопкой мышки, выбираем пункт "Создать шаблон" и прописываем имя для нового шаблона - "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". После этого увидим:
Общие настройки:
- 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", то есть запретить.
Если после настройки политик не терпится увидеть их работу на локальном компьютере, то в командной строке введите "gpupdate /force" и после выполнения команды перезагрузите компьютер.
Полезные ссылки:
- windowsfaq.ru - Ограничение списка запускаемых программ при помощи групповых политик
Спасибо! Всё четко и по делу! Отличная статья!