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