Поделиться через


Управление доступом (платформа фильтрации 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 от обработчика фильтров. Пути распространения показаны на схеме ниже.

Diagram that shows the ACE propagation paths, starting with 'Engine'.

Для стандартных типов объектов 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
Дополнительные проверка доступа за пределами отдельных фильтров и контекстов поставщика