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.
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. |