Types de légendes

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

Légende d’inspection inline
Ce type de légende retourne toujours FWP_ACTION_CONTINUE de la fonction classifyFn et ne modifie en aucune façon le trafic réseau. 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, elle reporte toute inspection à effectuer en dehors de la fonction classifyFn en « en attente » des données indiquées, puis en réinjectant les données pendantes dans la pile TCP/IP avec l’une des fonctions d’injection de paquets. En attente est implémenté en clonant d’abord les données indiquées, puis en retournant FWP_ACTION_BLOCK à partir de la fonction classifyFn qui a le FWPS_CLASSIFY_OUT_FLAG_ABSORB bit défini.

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

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 dont le paramètre intentToModify a la valeur TRUE. La légende retourne ensuite FWP_ACTION_BLOCK avec le bit FWPS_CLASSIFY_OUT_FLAG_ABSORB défini à partir de la fonction classifyFn . Lorsque le paquet est prêt à être modifié en dehors de classifyFn, 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érencé). 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 valide sur aucune couche de rejet pam. Si vous retournez FWP_ACTION_BLOCK avec l’indicateur de FWPS_CLASSIFY_OUT_FLAG_ABSORB défini à partir de la fonction classifyFn , le paquet est ignoré en mode silencieux, de sorte que le paquet n’atteint aucune des couches de rejet PAM, ni que des événements d’audit soient générés.

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 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 ne soit suspendu avec le mécanisme de référence/clone-drop-reinject, une légende doit « dur » supprimer le paquet d’origine en effaçant l’indicateur de FWPS_RIGHT_ACTION_WRITE dans le membre de droits de la structure FWPS_CLASSIFY_OUT0 retourné par la fonction classifyFn . Si l’indicateur de FWPS_RIGHT_ACTION_WRITE est défini lorsque classifiFn est appelé (ce qui signifie que le paquet peut être suspendu, puis réinjecté ou modifié), la légende ne doit pas mettre en attente l’indication et ne doit pas modifier le type d’action actuel ; et il doit attendre qu’une légende de poids plus élevé injecte le clone qui peut ê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 FWPS_RIGHT_ACTION_WRITE pour case activée les droits permettant à votre légende de retourner une action. Si cet indicateur n’est pas défini, votre légende peut toujours retourner une action FWP_ACTION_BLOCK afin d’opposer son veto à une action FWP_ACTION_PERMIT qui a été retournée par une légende précédente. Dans l’exemple présenté 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 mettre en suspension les paquets provenant des couches de filtrage de gestionFWPM_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 qui proviennent des couches de filtrage d’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