Typen von Legenden

Die folgenden Arten von Legenden können mit WFP verwendet werden:

Inlineinspektionsbeschriftung
Dieser Typ von Legende gibt immer FWP_ACTION_CONTINUE aus der klassifizierenFn-Funktion zurück und ändert den Netzwerkdatenverkehr in keiner Weise. Eine Legende, die Netzwerkstatistiken sammelt, ist ein Beispiel für diese Art von Legende.

Für diesen Typ von Legende sollte der Filteraktionstyp (angegeben durch den Typmember der FWPS_ACTION0-Struktur ) auf FWP_ACTION_CALLOUT_INSPECTION festgelegt werden.

Out-of-Band-Inspektionsbeschriftung
Diese Art von Legende ändert den Netzwerkdatenverkehr nicht. Stattdessen wird jede Überprüfung, die außerhalb der klassifizierenFn-Funktion durchgeführt werden soll, zurückgestellt, indem die angegebenen Daten "ausstehend" und dann die geschriebenen Daten mit einer der Paketeinschleusungsfunktionen wieder in den TCP/IP-Stapel eingefügt werden. Pending wird implementiert, indem zuerst die angegebenen Daten klonen, gefolgt von FWP_ACTION_BLOCK aus der klassifizierungFn-Funktion zurückgegeben wird, die das FWPS_CLASSIFY_OUT_FLAG_ABSORB Bit festgelegt hat.

Inlineänderungs-Legende
Diese Art von Legende ändert den Netzwerkdatenverkehr, indem zuerst ein Klon der angegebenen Daten erstellt, dann den Klon geändert und schließlich der geänderte Klon aus der klassifizierenFn-Funktion wieder in den TCP/IP-Stapel eingefügt wird. Dieser Typ von Legende gibt auch FWP_ACTION_BLOCK aus der klassifizierungFn-Funktion zurück, die das FWPS_CLASSIFY_OUT_FLAG_ABSORB Bit festgelegt hat.

Der Filteraktionstyp für diesen Legendentyp sollte auf FWP_ACTION_CALLOUT_TERMINATING festgelegt werden.

Out-of-Band-Änderungsbeschriftung
Dieser Typ von Legende verweist zuerst auf das angegebene Paket mithilfe der Funktion FwpsReferenceNetBufferList0 , deren Parameter intentToModify auf TRUE festgelegt ist. Die Legende gibt dann FWP_ACTION_BLOCK mit dem FWPS_CLASSIFY_OUT_FLAG_ABSORB Bit zurück, das aus der klassifizierungFn-Funktion festgelegt ist. Wenn das Paket außerhalb von klassifizierenFn geändert werden kann, klont die Legende das Paket, auf das verwiesen wird (sobald es geklont wird, kann das ursprüngliche Paket dereferenziert werden). Die Legende ändert dann den Klon und fügt das geänderte Paket wieder in den TCP/IP-Stapel ein.

Der Filteraktionstyp für diesen Legendentyp sollte auf FWP_ACTION_CALLOUT_TERMINATING festgelegt werden.

Umleitungs-Legende
Weitere Informationen zu dieser Art von Legende finden Sie unter Verwenden der Bindung oder der Verbindungsumleitung.

Es gibt zwei Arten von Umleitungs-Legenden:

  • Eine Bindungsumleitungs-Legende ermöglicht es dem Legendentreiber, die lokale Adresse und den lokalen Port eines Sockets zu ändern.
  • Eine Verbindungsumleitungs-Legende ermöglicht es dem Legendentreiber, die Remoteadresse und den Remoteport einer Verbindung zu ändern.

Der Filteraktionstyp für diese Art von Legende sollte auf FWP_ACTION_PERMIT festgelegt werden.

Weitere Informationen zu FWPS_CLASSIFY_OUT_FLAG_ABSORB finden Sie unter FWPS_CLASSIFY_OUT0. Dieses Flag ist auf WFP-Verwerfensebenen nicht gültig. Die Rückgabe von FWP_ACTION_BLOCK mit dem FWPS_CLASSIFY_OUT_FLAG_ABSORB Flag aus der klassifizierenFn-Funktion bewirkt, dass das Paket automatisch verworfen wird, sodass das Paket keine der WFP-Verwerfungsebenen trifft und keine Überwachungsereignisse generiert werden.

Obwohl geklonte Netzpufferlisten geändert werden können, z. B. durch Hinzufügen oder Entfernen von Netzpuffern oder MDLs oder beides, müssen Legenden solche Änderungen rückgängig machen, bevor sie die Funktion FwpsFreeCloneNetBufferList0 aufrufen.

Um mit anderen Legenden, die Paketüberprüfung, Paketänderung oder Verbindungsumleitung durchführen, zu koexistieren, bevor ein Paket mit dem Verweis-/Clone-Drop-Reinject-Mechanismus geschrieben wird, muss eine Legende das ursprüngliche Paket "hart" löschen, indem das FWPS_RIGHT_ACTION_WRITE-Flag im Rechtemember der FWPS_CLASSIFY_OUT0-Struktur gelöscht wird, die von der KlassifizierungFn-Funktion zurückgegeben wird. Wenn das FWPS_RIGHT_ACTION_WRITE-Flag festgelegt wird, wenn klassifizierenFn aufgerufen wird (was bedeutet, dass das Paket mit Stift versehen und später erneut eingefügt oder geändert werden kann), darf die Legende die Angabe nicht anheften und sollte den aktuellen Aktionstyp nicht ändern. Und es muss warten, bis eine Legende mit höherer Gewichtung den Klon einschleust, der möglicherweise geändert wird.

Das flag FWPS_RIGHT_ACTION_WRITE sollte immer dann festgelegt werden, wenn eine Legende eine Klassifizierung angibt. Ihr Legendentreiber sollte testen, ob das flag FWPS_RIGHT_ACTION_WRITE , um die Rechte für Ihre Legende zu überprüfen, um eine Aktion zurückzugeben. Wenn dieses Flag nicht festgelegt ist, kann ihre Legende dennoch eine FWP_ACTION_BLOCK Aktion zurückgeben, um ein Veto gegen eine FWP_ACTION_PERMIT Aktion einzugeben, die von einer vorherigen Legende zurückgegeben wurde. Im Beispiel in Using a Callout for Deep Inspection wird die Funktion einfach beendet, wenn das Flag nicht festgelegt ist.

Die Funktion FwpsPendOperation0 wird zum Stiften von Paketen verwendet, die aus den VerwaltungsfilterebenenFWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX oder FWPM_LAYER_ALE_AUTH_CONNECT_XXX stammen.

Die FwpsPendClassify0-Funktion wird zum Stiften von Paketen verwendet, die aus den folgenden Laufzeitfilterebenen stammen:

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