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 не применяется.
Этапы обработки
- Создание фильтра: администратор создаёт WMI-фильтр в консоли управления групповыми политиками (Group Policy Management Console, GPMC), задавая WQL-запрос.
- Привязка к GPO: фильтр связывается с конкретным объектом групповой политики. Один фильтр может быть связан с несколькими GPO, и наоборот — один GPO может быть связан только с одним фильтром.
- Выполнение на клиенте: при обновлении политик (по расписанию, при загрузке системы или входе пользователя) клиентский компьютер выполняет WQL-запрос, обращаясь к локальному репозиторию WMI.
- Применение 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, чтобы обойти фильтр.
Источники
- Групповые политики Windows. Справочное руководство. — Microsoft Press, 2010.
- Документация Microsoft по WMI-фильтрам (Windows Server).
- Статья «Using WMI Filters to Target Group Policy» на TechNet.
- WQL (Windows Management Instrumentation Query Language) — спецификация Microsoft.
- Практическое руководство по администрированию Active Directory. — БХВ-Петербург, 2015.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →