Управление доступом (платформа фильтрации Windows)
В платформе фильтрации Windows (МПП) служба базового модуля фильтрации (BFE) реализует стандартную модель управления доступом Windows на основе маркеров доступа и дескрипторов безопасности.
Модель управления доступом
Дескрипторы безопасности можно указать при добавлении новых объектов МПП, таких как фильтры и вложенные слои. Дескрипторы безопасности управляются с помощью функций управления МПП*GetSecurityInfo0 и Fwpm*SetSecurityInfo0, где * обозначает имя объекта МПП. Эти функции семантически идентичны функциям Windows GetSecurityInfo и SetSecurityInfo.
Примечание.
Функции Fwpm*SetSecurityInfo0 нельзя вызывать из явной транзакции.
Примечание.
Функции Fwpm*SetSecurityInfo0 можно вызывать только из динамического сеанса, если они используются для управления динамическим объектом, созданным в одном сеансе.
Дескриптор безопасности по умолчанию для обработчика фильтров (корневой объект engine на схеме ниже) выглядит следующим образом.
- Предоставьте права доступа GENERIC_ALL (GA) встроенной группе Администратор istrator.
- Предоставьте GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) права доступа к операторам конфигурации сети.
- Предоставьте права доступа GRGWGX к следующим идентификаторам безопасности службы (SSID): MpsSvc (брандмауэр Windows), NapAgent (агент защиты доступа к сети), PolicyAgent (агент политики IPsec), RpcSs (удаленный вызов процедуры) и WdiServiceHost (узел службы диагностики).
- Предоставьте всем FWPM_ACTRL_OPEN и FWPM_ACTRL_CLASSIFY . (Это права доступа, относящиеся к МПП, описанные в таблице ниже.)
Остальные дескрипторы безопасности по умолчанию являются производными через наследование.
Существует несколько проверка доступа, таких как Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0, которые невозможно выполнить на уровне отдельного объекта. Для этих функций существуют объекты контейнера для каждого типа объекта. Для стандартных типов объектов (например, поставщиков, выносок, фильтров), существующие функции Fwpm*GetSecurityInfo0 и Fwpm*SetSecurityInfo0 перегружены, поэтому параметр NULL GUID определяет связанный контейнер. Для других типов объектов (например, сетевых событий и связей безопасности IPsec) существуют явные функции для управления сведениями о безопасности контейнера.
BFE поддерживает автоматическое наследование записей управления доступом (ACES) для дискреционных контроль доступа List (DACL). BFE не поддерживает интерфейсы управления доступом контроль доступа system контроль доступа (SACL). Объекты наследуют acEs из контейнера. Контейнеры наследуют acEs от обработчика фильтров. Пути распространения показаны на схеме ниже.
Для стандартных типов объектов BFE применяет все универсальные и стандартные права доступа. Кроме того, МПП определяет следующие конкретные права доступа.
ПРАВО ДОСТУПА К МПП | Description |
---|---|
FWPM_ACTRL_ADD |
Требуется для добавления объекта в контейнер. |
FWPM_ACTRL_ADD_LINK |
Требуется для создания связи с объектом. Например, чтобы добавить фильтр, ссылающийся на выноску, вызывающий объект должен иметь ADD_LINK доступ к выноске. |
FWPM_ACTRL_BEGIN_READ_TXN |
Требуется для начала явной транзакции чтения. |
FWPM_ACTRL_BEGIN_WRITE_TXN |
Требуется для начала явной транзакции записи. |
FWPM_ACTRL_CLASSIFY |
Требуется классифицировать на уровне пользовательского режима. |
FWPM_ACTRL_ENUM |
Требуется для перечисления объектов в контейнере. Однако перечислитель возвращает только объекты, к которым вызывающий объект имеет доступ FWPM_ACTRL_READ. |
FWPM_ACTRL_OPEN |
Требуется для открытия сеанса с BFE. |
FWPM_ACTRL_READ |
Требуется для чтения свойств объекта. |
FWPM_ACTRL_READ_STATS |
Требуется для чтения статистики. |
FWPM_ACTRL_SUBSCRIBE |
Требуется подписаться на уведомления. Подписчики получат уведомления только для объектов, к которым у них есть доступ FWPM_ACTRL_READ. |
FWPM_ACTRL_WRITE |
Требуется для задания параметров подсистемы. |
BFE пропускает все проверка доступа для вызывающих объектов в режиме ядра.
Чтобы предотвратить блокировку администраторов из BFE, члены встроенной группы администраторов всегда предоставляются FWPM_ACTRL_OPEN объекту подсистемы. Таким образом, администратор может восстановить доступ, выполнив следующие действия.
- Включите привилегию SE_TAKE_OWNERSHIP_NAME .
- Вызов FwpmEngineOpen0. Вызов завершается успешно, так как вызывающий объект является членом встроенных Администратор istratorов.
- Возьмите на себя ответственность за объект обработчика. Это успешно, так как вызывающий объект имеет права SE_TAKE_OWNERSHIP_NAME .
- Обновите DACL. Это успешно, так как владелец всегда имеет WRITE_DAC доступ
Так как BFE поддерживает собственный пользовательский аудит, он не создает универсальные аудиты доступа к объектам. Таким образом, saCL игнорируется.
Необходимые права доступа в МПП
В таблице ниже показаны права доступа, необходимые функциямИ МПП для доступа к различным объектам платформы фильтрации. Функции FwpmFilter* перечислены в качестве примера для доступа к стандартным объектам. Все остальные функции, обращаюющиеся к стандартным объектам, следуют модели доступа к функциям FwpmFilter* .
Function | Объект проверка | Требуется доступ |
---|---|---|
FwpmEngineOpen0 | Подсистема | FWPM_ACTRL_OPEN |
FwpmEngineGetOption0 | Подсистема | FWPM_ACTRL_READ |
FwpmEngineSetOption0 | Подсистема | FWPM_ACTRL_WRITE |
FwpmSessionCreateEnumHandle0 | Подсистема | FWPM_ACTRL_ENUM |
FwpmTransactionBegin0 | Подсистема | FWPM_ACTRL_BEGIN_READ_TXN & FWPM_ACTRL_BEGIN_WRITE_TXN |
FwpmFilterAdd0 | Поставщик контейнеров Уровень Вложенный слой Выноска Контекст поставщика |
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK |
FwpmFilterDeleteById0 FwpmFilterDeleteByKey0 |
Фильтр | DELETE |
FwpmFilterGetById0 FwpmFilterGetByKey0 |
Фильтр | FWPM_ACTRL_READ |
FwpmFilterCreateEnumHandle0 | Фильтр контейнеров |
FWPM_ACTRL_ENUMFWPM_ACTRL_READ |
FwpmFilterSubscribeChanges0 | Контейнер | FWPM_ACTRL_SUBSCRIBE |
FwpmFilterSubscriptionsGet0 | Контейнер | FWPM_ACTRL_READ |
IPsecGetStatistics0 | База данных SA IPsec | FWPM_ACTRL_READ_STATS |
IPsecSaContextCreate0 IPsecSaContextGetSpi0 IPsecSaContextAddInbound0 IPsecSaContextAddOutbound0 |
База данных SA IPsec | FWPM_ACTRL_ADD |
IPsecSaContextDeleteById0 IPsecSaContextExpire0 |
База данных SA IPsec | DELETE |
IPsecSaContextGetById0 | База данных SA IPsec | FWPM_ACTRL_READ |
IPsecSaContextCreateEnumHandle0 IPsecSaCreateEnumHandle0 |
База данных SA IPsec | FWPM_ACTRL_ENUM & FWPM_ACTRL_READ |
IkeextGetStatistics0 | IKE SA DB | FWPM_ACTRL_READ_STATS |
IkeextSaDeleteById0 | IKE SA DB | DELETE |
IkeextSaGetById0 | IKE SA DB | FWPM_ACTRL_READ |
IkeextSaCreateEnumHandle0 | IKE SA DB | FWPM_ACTRL_ENUM & FWPM_ACTRL_READ |
FwpmNetEventCreateEnumHandle0 | Контейнер | FWPM_ACTRL_ENUM |
FwpmIPsecTunnelAdd0 FwpmIPsecTunnelDeleteByKey0 |
Дополнительные проверка доступа за пределами отдельных фильтров и контекстов поставщика |