Control de acceso (Plataforma de filtrado de Windows)

En la Plataforma de filtrado de Windows (PMA), el servicio Motor de filtrado base (BFE) implementa el modelo estándar de control de acceso de Windows basado en tokens de acceso y descriptores de seguridad.

Modelo de control de acceso

Se pueden especificar descriptores de seguridad al agregar nuevos objetos PMA, como filtros y subcapas. Los descriptores de seguridad se administran mediante las funciones de administración de PMA Fwpm*GetSecurityInfo0 y Fwpm*SetSecurityInfo0, donde * significa el nombre del objeto PMA. Estas funciones son semánticamente idénticas a las funciones GetSecurityInfo y SetSecurityInfo de Windows.

Nota

No se puede llamar a las funciones Fwpm*SetSecurityInfo0 desde dentro de una transacción explícita.

Nota

Las funciones Fwpm*SetSecurityInfo0 solo se pueden llamar desde dentro de una sesión dinámica si se usan para administrar un objeto dinámico creado dentro de la misma sesión.

El descriptor de seguridad predeterminado para el motor de filtro (el objeto engine raíz en el diagrama siguiente) es el siguiente.

  • Conceda derechos de acceso de GENERIC_ALL (GA) al grupo administradores integrado.
  • Conceda derechos de acceso de GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) a los operadores de configuración de red.
  • Conceda derechos de acceso GRGWGX a los siguientes identificadores de seguridad de servicio (SSID): MpsSvc (Firewall de Windows), NapAgent (Agente de protección de acceso de red), PolicyAgent (Agente de directivas IPsec), RpcSs (llamada a procedimiento remoto) y WdiServiceHost (host de servicio de diagnóstico).
  • Conceda FWPM_ACTRL_OPEN y FWPM_ACTRL_CLASSIFY a todos. (Estos son derechos de acceso específicos del PMA, descritos en la tabla siguiente).

Los descriptores de seguridad predeterminados restantes se derivan a través de la herencia.

Hay algunas comprobaciones de acceso, como fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 , que no se pueden realizar en el nivel de objeto individual. Para estas funciones, hay objetos contenedor para cada tipo de objeto. Para los tipos de objeto estándar (por ejemplo, proveedores, llamadas, filtros), se sobrecargan las funciones Fwpm*GetSecurityInfo0 y Fwpm*SetSecurityInfo0 existentes, de modo que un parámetro GUID nulo identifica el contenedor asociado. Para los otros tipos de objeto (por ejemplo, eventos de red y asociaciones de seguridad IPsec), hay funciones explícitas para administrar la información de seguridad del contenedor.

BFE admite la herencia automática de entradas de control de acceso de lista de Access Control discrecionales (DACL). BFE no admite acees de System Access Control List (SACL). Los objetos heredan las ACE de su contenedor. Los contenedores heredan las ACE del motor de filtro. Las rutas de propagación se muestran en el diagrama siguiente.

Diagrama que muestra las rutas de propagación ace, empezando por

Para los tipos de objeto estándar, BFE aplica todos los derechos de acceso genéricos y estándar. Además, el PMA define los siguientes derechos de acceso específicos.

Derecho de acceso a PMA Descripción
FWPM_ACTRL_ADD
Necesario para agregar un objeto a un contenedor.
FWPM_ACTRL_ADD_LINK
Necesario para crear una asociación a un objeto . Por ejemplo, para agregar un filtro que haga referencia a una llamada, el autor de la llamada debe tener ADD_LINK acceso a la llamada.
FWPM_ACTRL_BEGIN_READ_TXN
Necesario para iniciar una transacción de lectura explícita.
FWPM_ACTRL_BEGIN_WRITE_TXN
Necesario para iniciar una transacción de escritura explícita.
FWPM_ACTRL_CLASSIFY
Necesario para clasificar en una capa en modo de usuario.
FWPM_ACTRL_ENUM
Necesario para enumerar los objetos de un contenedor. Sin embargo, el enumerador solo devuelve objetos a los que el autor de la llamada tiene FWPM_ACTRL_READ acceso.
FWPM_ACTRL_OPEN
Se requiere para abrir una sesión con BFE.
FWPM_ACTRL_READ
Se requiere para leer las propiedades de un objeto.
FWPM_ACTRL_READ_STATS
Se requiere para leer las estadísticas.
FWPM_ACTRL_SUBSCRIBE
Necesario para suscribirse a las notificaciones. Los suscriptores solo recibirán notificaciones para los objetos a los que tienen acceso FWPM_ACTRL_READ.
FWPM_ACTRL_WRITE
Se requiere para establecer las opciones del motor.

BFE omite todas las comprobaciones de acceso de los autores de llamadas en modo kernel.

Para evitar que los administradores se bloqueen fuera de BFE, los miembros del grupo de administradores integrados siempre se conceden FWPM_ACTRL_OPEN al objeto de motor. Por lo tanto, un administrador puede recuperar el acceso a través de los pasos siguientes.

  • Habilite el privilegio SE_TAKE_OWNERSHIP_NAME .
  • Llame a FwpmEngineOpen0. La llamada se realiza correctamente porque el autor de la llamada es miembro de los administradores integrados.
  • Tome posesión del objeto del motor. Esto se realiza correctamente porque el autor de la llamada tiene el privilegio SE_TAKE_OWNERSHIP_NAME .
  • Actualice la DACL. Esto se realiza correctamente porque el propietario siempre tiene acceso WRITE_DAC

Dado que BFE admite su propia auditoría personalizada, no genera auditorías de acceso a objetos genéricos. Por lo tanto, se omite la SACL.

Derechos de acceso requeridos por EL PMA

En la tabla siguiente se muestran los derechos de acceso requeridos por las funciones del PMA para acceder a varios objetos de plataforma de filtrado. Las funciones FwpmFilter* se enumeran como ejemplo para acceder a los objetos estándar. Todas las demás funciones que acceden a objetos estándar siguen el modelo de acceso de funciones FwpmFilter* .

Función Objeto activado Acceso requerido
FwpmEngineOpen0 Motor FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Motor FWPM_ACTRL_READ
FwpmEngineSetOption0 Motor FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Motor FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Motor & FWPM_ACTRL_BEGIN_READ_TXN FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Proveedor de contenedores
Nivel
Sub-Layer
Llamada
Contexto del proveedor
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filtrar DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
Filtrar FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Filtro de contenedor
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Contenedor FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Contenedor FWPM_ACTRL_READ
IPsecGetStatistics0 IPsec SA DB FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA DB FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA DB DELETE
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
IkeextGetStatistics0 Base de datos sa de IKE FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 Base de datos sa de IKE DELETE
IkeextSaGetById0 Base de datos sa de IKE FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 Base de datos sa de IKE & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Contenedor FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
No hay comprobaciones de acceso adicionales más allá de las de los filtros individuales y los contextos del proveedor.