Открыть сервис

WMI-фильтры

WMI-фильтры (Windows Management Instrumentation filter) — это механизм операционной системы Windows, позволяющий администраторам задавать условия на основе данных WMI для динамического применения объектов групповой политики (GPO) к компьютерам или пользователям. WMI-фильтры используются для тонкой настройки распространения политик в среде Active Directory, позволяя применять GPO только к тем системам, которые соответствуют определённым критериям, таким как версия операционной системы, объём оперативной памяти, наличие определённого программного обеспечения или сетевое расположение.

История и развитие

Механизм WMI-фильтров был впервые представлен в Windows Server 2003 и Windows XP как часть расширения функциональности групповых политик. До появления WMI-фильтров администраторы могли применять GPO только на основе статических параметров — расположения объекта в Active Directory (организационная единица, домен, сайт) или членства в группах безопасности. Это ограничивало гибкость управления, так как, например, политику для установки обновлений нельзя было применить только к компьютерам с определённой версией ОС без создания дополнительных организационных единиц.

С развитием Windows Server 2008 и Windows 7 функциональность WMI-фильтров была расширена: улучшена производительность обработки запросов, добавлена поддержка более сложных WQL-запросов (WMI Query Language). В последующих версиях Windows Server (2012, 2016, 2019, 2022) и клиентских ОС (Windows 8, 10, 11) механизм оставался практически неизменным, но продолжал использоваться как стандартный инструмент для динамического применения политик.

Принцип работы

WMI-фильтр представляет собой WQL-запрос, который выполняется на целевом компьютере в момент обработки групповой политики. Если запрос возвращает истинное значение (то есть данные WMI соответствуют заданным условиям), то GPO, связанный с этим фильтром, применяется. Если запрос возвращает ложное значение или ошибку, GPO не применяется.

Этапы обработки

  1. Создание фильтра: администратор создаёт WMI-фильтр в консоли управления групповыми политиками (Group Policy Management Console, GPMC), задавая WQL-запрос.
  2. Привязка к GPO: фильтр связывается с конкретным объектом групповой политики. Один фильтр может быть связан с несколькими GPO, и наоборот — один GPO может быть связан только с одним фильтром.
  3. Выполнение на клиенте: при обновлении политик (по расписанию, при загрузке системы или входе пользователя) клиентский компьютер выполняет WQL-запрос, обращаясь к локальному репозиторию WMI.
  4. Применение GPO: если результат запроса положительный, GPO применяется. Если отрицательный — GPO игнорируется.

Особенности выполнения

  • WMI-фильтры выполняются в контексте безопасности SYSTEM, что обеспечивает доступ ко всем данным WMI, включая информацию об оборудовании и установленном ПО.
  • Фильтры могут быть применены как к компьютерам, так и к пользователям, в зависимости от типа GPO (конфигурация компьютера или конфигурация пользователя).
  • Если запрос содержит синтаксическую ошибку или ссылается на несуществующий класс WMI, фильтр считается невыполненным, и GPO не применяется.

Синтаксис WQL

WMI-фильтры используют подмножество языка WQL, который является диалектом SQL, адаптированным для запросов к репозиторию WMI. Основные операторы и ключевые слова:

  • SELECTвыборка данных (обычно используется SELECT *).
  • FROM — указание класса WMI (например, Win32_OperatingSystem).
  • WHERE — условие фильтрации.
  • AND, OR, NOT — логические операторы.
  • LIKE — сравнение с шаблоном (с использованием символов % и _).
  • IS NULL, IS NOT NULL — проверка на пустое значение.
  • =, <, >, <=, >=, <> — операторы сравнения.

Примеры WQL-запросов

```sql -- Применить GPO только к Windows 10 версии 22H2 SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0.19045%"

-- Применить GPO только к компьютерам с объёмом RAM более 8 ГБ SELECT * FROM Win32_ComputerSystem WHERE TotalPhysicalMemory > 8589934592

-- Применить GPO только к ноутбукам SELECT * FROM Win32_ComputerSystem WHERE PCSystemType = 2

-- Применить GPO только к компьютерам с установленным Microsoft Office SELECT * FROM Win32_Product WHERE Name LIKE "Microsoft Office%" ```

Применение

WMI-фильтры широко используются в корпоративных средах для решения следующих задач:

Управление обновлениями и исправлениями

Администраторы могут создавать фильтры, которые применяют политики установки обновлений только к тем системам, которые ещё не получили определённое исправление. Например, GPO для установки патча KB5021234 может быть привязан к фильтру, проверяющему отсутствие этого обновления в системе.

Настройка безопасности

Фильтры позволяют применять различные политики безопасности в зависимости от роли компьютера. Например, для серверов баз данных можно задать более строгие параметры аудита, а для клиентских рабочих станций — более мягкие. Фильтр может проверять, установлена ли роль SQL Server.

Разграничение политик по версиям ОС

Поскольку разные версии Windows поддерживают разные возможности (например, BitLocker, AppLocker, Credential Guard), WMI-фильтры позволяют применять соответствующие политики только к тем системам, где эти функции доступны.

Управление периферийными устройствами

Фильтры могут проверять наличие определённого оборудования (например, TPM-модуля, смарт-карт) и применять политики, связанные с этим оборудованием.

Тестирование и пилотные проекты

Администраторы могут создавать фильтры, которые применяют GPO только к компьютерам с определённым именем или в определённом IP-диапазоне, что удобно для пилотного внедрения изменений.

Ограничения и недостатки

  • Производительность: выполнение WQL-запросов на клиентских компьютерах может замедлять обработку групповых политик, особенно если запросы сложные или обращаются к большим объёмам данных (например, к классу Win32_Product).
  • Сложность отладки: ошибки в WQL-запросах не всегда очевидны, и их диагностика требует использования инструментов, таких как wbemtest или WMIC.
  • Зависимость от WMI: если служба WMI на клиенте повреждена или отключена, фильтры не будут работать, и GPO не применится.
  • Ограниченная поддержка в изолированных средах: в средах без доступа к контроллеру домена (например, в изолированных рабочих группах) WMI-фильтры не используются, так как групповые политики применяются только в домене.
  • Не поддерживается для локальных политик: WMI-фильтры работают исключительно в контексте доменных групповых политик и не могут быть применены к локальным политикам безопасности.

Инструменты управления

Основным инструментом для создания и управления WMI-фильтрами является Group Policy Management Console (GPMC), которая входит в состав Windows Server и доступна для установки на клиентских версиях Windows через пакет средств удалённого администрирования сервера (RSAT). В GPMC фильтры отображаются в отдельном узле «WMI-фильтры» (WMI Filters) в лесу домена.

Дополнительно для тестирования WQL-запросов используются:

  • WBEMTEST — встроенная утилита Windows для тестирования WMI-запросов.
  • WMICкомандная строка для выполнения WMI-запросов.
  • PowerShell — командлеты Get-WmiObject и Get-CimInstance позволяют выполнять WQL-запросы и проверять их корректность.

Примеры использования

Пример 1: Применение политики только к виртуальным машинам

``sql SELECT * FROM Win32_ComputerSystem WHERE Model LIKE "%Virtual%" ``

Этот фильтр применяет GPO только к компьютерам, модель которых содержит слово «Virtual» (характерно для виртуальных машин Hyper-V, VMware, VirtualBox).

Пример 2: Применение политики только к компьютерам с русской локалью

``sql SELECT * FROM Win32_OperatingSystem WHERE OSLanguage = 1049 ``

Код 1049 соответствует русскому языку (Russian — Russia).

Пример 3: Применение политики только к компьютерам с определённым сетевым адаптером

``sql SELECT * FROM Win32_NetworkAdapter WHERE Manufacturer = "Intel Corporation" AND NetEnabled = TRUE ``

Безопасность

WMI-фильтры не являются механизмом безопасности, а лишь средством фильтрации. Они не предотвращают применение GPO к несанкционированным системам, если те могут подделать данные WMI. Для обеспечения безопасности следует использовать фильтры в сочетании с группами безопасности Active Directory и правами на делегирование. Кроме того, злоумышленник с правами администратора на клиенте может изменить локальные данные WMI, чтобы обойти фильтр.

Источники

  1. Групповые политики Windows. Справочное руководство. — Microsoft Press, 2010.
  2. Документация Microsoft по WMI-фильтрам (Windows Server).
  3. Статья «Using WMI Filters to Target Group Policy» на TechNet.
  4. WQL (Windows Management Instrumentation Query Language) — спецификация Microsoft.
  5. Практическое руководство по администрированию Active Directory. — БХВ-Петербург, 2015.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →