Verwenden der Nachverfolgung von Proxied-Verbindungen
Die Nachverfolgung von Proxied-Verbindungen wird in Windows 8 und höheren Versionen von Windows unterstützt.
Dieses WFP-Feature erleichtert die Nachverfolgung der Umleitung von "Datensätzen" von der anfänglichen Umleitung einer Verbindung zur endgültigen Verbindung zum Ziel. WFP ermöglicht es auch einem Legendentreiber, Verbindungen umzuleiten.
Nachverfolgung von Proxied-Verbindungen
Mit dem Vorhandensein mehrerer Proxys (z. B. von verschiedenen ISVs entwickelt) könnte die Verbindung, die von einer Partei für die Kommunikation mit dem Endziel verwendet wird, wiederum von einer 2. Partei umgeleitet werden; und dass die neue Verbindung von der ursprünglichen Partei erneut umgeleitet werden konnte. Ohne Verbindungsnachverfolgung erreicht die ursprüngliche Verbindung möglicherweise nie ihr endgültiges Ziel, da sie in der endlosen Proxyschleife hängen bleibt.
Zu den Datenfeldbezeichnern zur Unterstützung der Verbindungsnachverfolgung gehören:
FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Der vollständige Pfad der ursprünglichen Anwendung für Proxyverbindungen. Wenn die Anwendung nicht proxied wurde, ist dieser Pfad mit dem xxx_ALE_APP_ID identisch.
FWPS_FIELD_Xxx_PACKAGE_ID
Der Paketbezeichner ist eine Sicherheits-ID (SID), die den zugeordneten AppContainer-Prozess identifiziert.
Umleitung von Verbindungen
Ein Legendentreiber ruft die FwpsRedirectHandleCreate0-Funktion auf, um ein Handle zu erstellen, das zum Umleiten von TCP-Verbindungen verwendet werden kann.
Dieser Abschnitt schließt folgende Themen ein:
Verwenden eines Umleitungshandles
Abfragen des Umleitungsstatus
Verwenden eines Umleitungshandles
Bevor eine ALE-Verbindungsumleitungs-Legende Verbindungen an einen lokalen Prozess umleiten kann, muss sie ein Umleitungshandle mit der Funktion FwpsRedirectHandleCreate0 abrufen und das Handle in der FWPS_CONNECT_REQUEST0-Struktur platzieren. Die Legende ändert die Struktur in klassifizierenFn für die ALE-Verbindungsumleitungsebenen.
Die FWPS_CONNECT_REQUEST0-Struktur enthält die folgenden Member für die Umleitung:
Begriff | BESCHREIBUNG |
---|---|
localRedirectHandle |
Das Umleitungshandle, das der Legendentreiber durch Aufrufen der Funktion FwpsRedirectHandleCreate0 erstellt hat. |
localRedirectContext |
Ein Legendentreiberkontextbereich, den der Legendentreiber durch Aufrufen der Funktion ExAllocatePoolWithTag zugeordnet hat. |
localRedirectContextSize |
Die Größe des angegebenen Kontextbereichs in Bytes. |
Nachdem ein Legendentreiber die Verwendung eines Umleitungshandles abgeschlossen hat, muss er die Funktion FwpsRedirectHandleDestroy0 aufrufen, um das Handle zu zerstören.
Abfragen des Umleitungsstatus
Ein Legendentreiber ruft die FwpsQueryConnectionRedirectState0-Funktion auf, um den Umleitungszustand einer Verbindung abzurufen. Die FWPS_CONNECTION_REDIRECT_STATE-Enumeration ist der Rückgabetyp für einen Aufruf der Funktion FwpsQueryConnectionRedirectState0 .
Wenn die umleitungs-status FWPS_CONNECTION_NOT_REDIRECTED ist, kann die ALE_CONNECT_REDIRECT-Legende mit dem Proxy für die Verbindung fortfahren.
Wenn die umleitungs-status FWPS_CONNECTION_REDIRECTED_BY_SELF ist, sollte die ALE_CONNECT_REDIRECT-Legende FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE zurückgeben.
Wenn die umleitungsbasierte status FWPS_CONNECTION_REDIRECTED_BY_OTHER ist, kann die ALE_CONNECT_REDIRECT-Legende die Verbindung als Proxy verwenden, wenn sie dem Ergebnis des anderen Inspektors nicht vertraut.
Wenn die umleitungs-status FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF ist, darf die ALE_CONNECT_REDIRECT-Legende keine Umleitung durchführen, auch wenn die Ergebnisse anderer Inspektoren nicht akzeptabel sind. In diesem Fall muss die Verbindung entweder zugelassen oder blockiert werden (auf der ALE_AUTH_CONNECT Ebene).