Partager via


Contrôle d’accès (plateforme de filtrage Windows)

Dans la plateforme de filtrage Windows (PAM), le service BFE (Base Filtering Engine) implémente le modèle de contrôle d’accès Windows standard basé sur les jetons d’accès et les descripteurs de sécurité.

Modèle de contrôle d'accès

Des descripteurs de sécurité peuvent être spécifiés lors de l’ajout de nouveaux objets PAM, tels que des filtres et des sous-couches. Les descripteurs de sécurité sont gérés à l’aide des fonctions de gestion PAM Fwpm*GetSecurityInfo0 et Fwpm*SetSecurityInfo0, où * signifie le nom de l’objet WFP. Ces fonctions sont sémantiquement identiques aux fonctions Windows GetSecurityInfo et SetSecurityInfo .

Notes

Les fonctions Fwpm*SetSecurityInfo0 ne peuvent pas être appelées à partir d’une transaction explicite.

Notes

Les fonctions Fwpm*SetSecurityInfo0 ne peuvent être appelées qu’à partir d’une session dynamique si elles sont utilisées pour gérer un objet dynamique créé au sein de la même session.

Le descripteur de sécurité par défaut pour le moteur de filtre (l’objet Engine racine dans le diagramme ci-dessous) est le suivant.

  • Accordez des droits d’accès GENERIC_ALL au groupe Administrateurs intégré.
  • Accordez GENERIC_READ des droits d’accès GENERIC_EXECUTE (GX) GENERIC_WRITE (GR) aux opérateurs de configuration réseau.
  • Accordez des droits d’accès GRGWGX aux identificateurs de sécurité de service (SSID) suivants : MpsSvc (Pare-feu Windows), NapAgent (Agent de protection de l’accès réseau), PolicyAgent (agent de stratégie IPsec), RpcSs (appel de procédure distante) et WdiServiceHost (hôte du service de diagnostic).
  • Accordez FWPM_ACTRL_OPEN et FWPM_ACTRL_CLASSIFY à tout le monde. (Il s’agit de droits d’accès spécifiques au PAM, décrits dans le tableau ci-dessous.)

Les descripteurs de sécurité par défaut restants sont dérivés par héritage.

Certaines vérifications d’accès, telles que pour les appels de fonction Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 , ne peuvent pas être effectuées au niveau de l’objet individuel. Pour ces fonctions, il existe des objets conteneur pour chaque type d’objet. Pour les types d’objets standard (par exemple, fournisseurs, légendes, filtres), les fonctions Fwpm*GetSecurityInfo0 et Fwpm*SetSecurityInfo0 existantes sont surchargées, de sorte qu’un paramètre GUID null identifie le conteneur associé. Pour les autres types d’objets (par exemple, les événements réseau et les associations de sécurité IPsec), il existe des fonctions explicites pour gérer les informations de sécurité du conteneur.

BFE prend en charge l’héritage automatique des entrées de contrôle d’accès de liste de Access Control discrétionnaires (ACL). BFE ne prend pas en charge les AIC SaCL (System Access Control List). Les objets héritent d’AE de leur conteneur. Les conteneurs héritent des AAC du moteur de filtre. Les chemins de propagation sont indiqués dans le diagramme ci-dessous.

Diagramme montrant les chemins de propagation ACE, en commençant par « Moteur ».

Pour les types d’objets standard, BFE applique tous les droits d’accès génériques et standard. En outre, pam définit les droits d’accès spécifiques suivants.

Droit d’accès PAM Description
FWPM_ACTRL_ADD
Requis pour ajouter un objet à un conteneur.
FWPM_ACTRL_ADD_LINK
Requis pour créer une association à un objet. Par exemple, pour ajouter un filtre qui référence une légende, l’appelant doit avoir ADD_LINK accès à la légende.
FWPM_ACTRL_BEGIN_READ_TXN
Obligatoire pour commencer une transaction de lecture explicite.
FWPM_ACTRL_BEGIN_WRITE_TXN
Requis pour commencer une transaction d’écriture explicite.
FWPM_ACTRL_CLASSIFY
Obligatoire pour classifier par rapport à une couche en mode utilisateur.
FWPM_ACTRL_ENUM
Requis pour énumérer les objets dans un conteneur. Toutefois, l’énumérateur retourne uniquement les objets auxquels l’appelant a FWPM_ACTRL_READ accès.
FWPM_ACTRL_OPEN
Obligatoire pour ouvrir une session avec BFE.
FWPM_ACTRL_READ
Requis pour lire les propriétés d’un objet.
FWPM_ACTRL_READ_STATS
Obligatoire pour lire les statistiques.
FWPM_ACTRL_SUBSCRIBE
Obligatoire pour s’abonner aux notifications. Les abonnés recevront uniquement des notifications pour les objets auxquels ils ont FWPM_ACTRL_READ accès.
FWPM_ACTRL_WRITE
Obligatoire pour définir les options du moteur.

BFE ignore toutes les vérifications d’accès pour les appelants en mode noyau.

Pour empêcher les administrateurs de se verrouiller hors de BFE, les membres du groupe d’administrateurs intégré se voient toujours accorder FWPM_ACTRL_OPEN à l’objet moteur. Ainsi, un administrateur peut récupérer l’accès en procédant comme suit.

  • Activez le privilège SE_TAKE_OWNERSHIP_NAME .
  • Appelez FwpmEngineOpen0. L’appel réussit, car l’appelant est membre des administrateurs intégrés.
  • Prendre possession de l’objet moteur. Cette opération réussit, car l’appelant dispose du privilège SE_TAKE_OWNERSHIP_NAME .
  • Mettez à jour le DACL. Cela réussit, car le propriétaire a toujours un accès WRITE_DAC

Étant donné que BFE prend en charge son propre audit personnalisé, il ne génère pas d’audits d’accès aux objets génériques. Par conséquent, la liste SACL est ignorée.

Droits d’accès requis au PAM

Le tableau ci-dessous montre les droits d’accès requis par les fonctions PAM pour accéder à différents objets de plateforme de filtrage. Les fonctions FwpmFilter* sont répertoriées comme exemple pour accéder aux objets standard. Toutes les autres fonctions qui accèdent aux objets standard suivent le modèle d’accès aux fonctions FwpmFilter* .

Fonction Objet vérifié Accès requis
FwpmEngineOpen0 Moteur FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Moteur FWPM_ACTRL_READ
FwpmEngineSetOption0 Moteur FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Moteur FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Moteur & FWPM_ACTRL_BEGIN_READ_TXN FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Fournisseur de conteneurs
Couche
Sub-Layer
Légende
Contexte du fournisseur
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filtrer DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
Filtrer FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Filtre de conteneur
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Conteneur FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Conteneur FWPM_ACTRL_READ
IPsecGetStatistics0 Base de données SA IPsec FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
Base de données SA IPsec FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
Base de données SA IPsec DELETE
IPsecSaContextGetById0 Base de données SA IPsec FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
Base de données SA IPsec & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
IkeextGetStatistics0 Base de données IKE SA FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 Base de données IKE SA DELETE
IkeextSaGetById0 Base de données IKE SA FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 Base de données IKE SA & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Conteneur FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Aucune vérification d’accès supplémentaire au-delà de celles pour les filtres individuels et les contextes de fournisseur