Partager via


Types de légendes

Les types de légendes suivants peuvent être utilisés avec le PAM :

Légende d’inspection inline
Ce type de légende retourne toujours FWP_ACTION_CONTINUE de la fonction classifieFn et ne modifie pas le trafic réseau d’une manière quelconque. Une légende qui collecte des statistiques réseau est un exemple de ce type de légende.

Pour ce type de légende, le type d’action de filtre (spécifié par le membre Type de la structure FWPS_ACTION0) doit être défini sur FWP_ACTION_CALLOUT_INSPECTION.

Légende d’inspection hors bande
Ce type de légende ne modifie pas le trafic réseau. Au lieu de cela, il reporte toute inspection à effectuer en dehors de la fonction classifieFn en « en attente » les données indiquées, puis réinjecte les données pendées dans la pile TCP/IP avec l’une des fonctions d’injection de paquets. En attente est implémentée en clonant d’abord les données indiquées, puis en retournant FWP_ACTION_BLOCK à partir de la fonction classifiableFn qui a le jeu de bits FWPS_CLASSIFY_OUT_FLAG_ABSORB.

Légende de modification inline
Ce type de légende modifie le trafic réseau en faisant d’abord un clone des données indiquées, puis en modifiant le clone, puis en injectant le clone modifié dans la pile TCP/IP à partir de la fonction classifieFn . Ce type de légende retourne également FWP_ACTION_BLOCK de la fonction classifiableFn qui a le jeu de bits FWPS_CLASSIFY_OUT_FLAG_ABSORB.

Le type d’action de filtre pour ce type de légende doit être défini sur FWP_ACTION_CALLOUT_TERMINATING.

Légende de modification hors bande
Ce type de légende fait d’abord référence au paquet indiqué à l’aide de la fonction FwpsReferenceNetBufferList0 qui a le paramètre intentToModify défini sur TRUE. La légende retourne ensuite FWP_ACTION_BLOCK avec le jeu de bits FWPS_CLASSIFY_OUT_FLAG_ABSORB à partir de la fonction classifiableFn . Lorsque le paquet est prêt à être modifié en dehors de classifiableFn, la légende clone le paquet référencé (dès qu’il est cloné, le paquet d’origine peut ensuite être déréférencement). La légende modifie ensuite le clone et injecte le paquet modifié dans la pile TCP/IP.

Le type d’action de filtre pour ce type de légende doit être défini sur FWP_ACTION_CALLOUT_TERMINATING.

Légende de redirection
Pour plus d’informations sur ce type de légende, consultez Utilisation de la redirection de liaison ou de connexion.

Il existe deux types de légendes de redirection :

  • Une légende de redirection de liaison permet au pilote de légende de modifier l’adresse locale et le port local d’un socket.
  • Une légende de redirection de connexion permet au pilote de légende de modifier l’adresse distante et le port distant d’une connexion.

Le type d’action de filtre pour ce type de légende doit être défini sur FWP_ACTION_PERMIT.

Pour plus d’informations sur FWPS_CLASSIFY_OUT_FLAG_ABSORB, consultez FWPS_CLASSIFY_OUT0. Cet indicateur n’est pas valide au niveau d’une couche d’abandon DU PAM. Le retour d’FWP_ACTION_BLOCK avec l’indicateur de FWPS_CLASSIFY_OUT_FLAG_ABSORB défini à partir de la fonction classifiableFn entraîne l’abandon silencieux du paquet, de telle sorte que le paquet n’a pas atteint les couches d’abandon du PAM, ni ne provoque la génération d’événements d’audit.

Bien que les listes de mémoires tampons nettes clonées puissent être modifiées, par exemple, en ajoutant ou en supprimant des mémoires tampons nettes ou des MDL, ou les deux, les légendes doivent annuler ces modifications avant d’appeler la fonction FwpsFreeCloneNetBufferList0.

Pour coexister avec d’autres légendes qui effectuent l’inspection des paquets, la modification de paquets ou la redirection de connexion, avant qu’un paquet soit suspendu avec le mécanisme de référence/clone-drop-reinject, une légende doit « supprimer en dur » le paquet d’origine en désactivant l’indicateur de FWPS_RIGHT_ACTION_WRITE dans le membre des droits de la structure FWPS_CLASSIFY_OUT0 retournée par la fonction classifieFn. Si l’indicateur de FWPS_RIGHT_ACTION_WRITE est défini lorsque classifieFn est appelé (ce qui signifie que le paquet peut être suspendu et réinjecté ou modifié ultérieurement), la légende ne doit pas mettre en pendule l’indication et ne doit pas changer le type d’action actuel ; et il doit attendre qu’une légende de poids plus élevée injecte le clone susceptible d’être modifié.

L’indicateur FWPS_RIGHT_ACTION_WRITE doit être défini chaque fois qu’une légende pend une classification. Votre pilote de légende doit tester l’indicateur de FWPS_RIGHT_ACTION_WRITE pour vérifier les droits de votre légende pour retourner une action. Si cet indicateur n’est pas défini, votre légende peut toujours renvoyer une action de FWP_ACTION_BLOCK afin de veto à une action de FWP_ACTION_PERMIT retournée par une légende précédente. Dans l’exemple illustré dans Utilisation d’une légende pour l’inspection approfondie, la fonction se ferme simplement si l’indicateur n’est pas défini.

La fonction FwpsPendOperation0 est utilisée pour pender les paquets provenant des couches de filtrage de gestion FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX ou FWPM_LAYER_ALE_AUTH_CONNECT_XXX.

La fonction FwpsPendClassify0 est utilisée pour mettre en suspension les paquets provenant des couches de filtrage au moment de l’exécution suivantes :

FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6