Freigeben über


Filtervermittlung

Die Filtervermittlung ist die Logik, die in die Windows-Filterplattform (WFP) integriert ist, die verwendet wird, um zu bestimmen, wie Filter miteinander interagieren, wenn Sie Entscheidungen zum Filtern von Netzwerkdatenverkehr treffen.

Verhalten der Filtervermittlung

Das folgende Verhalten zeichnet sich durch das Filtervermittlungssystem aus:

  • Der gesamte Datenverkehr kann geprüft werden. Kein Datenverkehr kann Filter auf einer bestimmten Ebene umgehen.
  • Datenverkehr kann durch einen Popupfilter über einen Veto- blockiert werden, auch wenn ein Filter mit höherer Priorität dies erlaubt hat.
  • Mehrere Anbieter können den Datenverkehr auf derselben Ebene prüfen. Beispielsweise können Firewallfilter, gefolgt von IDS-Filtern (Intrusion-Detection System) oder IPsec gefolgt von QoS-Filtern (Quality of Service) den Datenverkehr auf derselben Ebene untersuchen.

Filtermodell

Jede Filterebene wird nach Priorität sortiert in Unterebenen unterteilt (auch als Gewichtung bezeichnet). Der Netzwerkdatenverkehr durchläuft Unterebenen von der höchsten Priorität zur niedrigsten Priorität. Unterebenen werden von den Entwicklern mit der WFP-API erstellt und verwaltet.

Innerhalb jeder Unterebene werden Filter nach Gewicht sortiert. Der Netzwerkdatenverkehr wird für übereinstimmende Filter von der höchsten Gewichtung bis zur niedrigsten Gewichtung angegeben.

Der Filtervermittlungsalgorithmus wird auf alle Unterebenen innerhalb einer Ebene angewendet, und die endgültige Filterentscheidung wird getroffen, nachdem alle Unterebenen ausgewertet wurden. Dies bietet mehrere Abgleichsfunktionen.

Innerhalb einer Unterebene erfolgt die Filtervermittlung wie folgt:

  • Berechnen Sie die Liste der übereinstimmenden Filter, die nach Gewicht von der höchsten zum niedrigsten sortiert sind.
  • Bewerten Sie übereinstimmende Filter in der Reihenfolge, bis ein "Permit" oder ein "Block" zurückgegeben wird (Filter können auch "Continue" zurückgeben) oder bis die Liste erschöpft ist.
  • Überspringen Sie die verbleibenden Filter, und geben Sie die Aktion aus dem letzten ausgewerteten Filter zurück.

Innerhalb einer Ebene erfolgt die Filtervermittlung wie folgt:

  • Führen Sie die Filtervermittlung auf jeder Unterebene in der Reihenfolge von der höchsten Priorität bis zur niedrigsten Priorität aus.
  • Bewerten Sie alle Unterebenen, auch wenn sich eine untere Ebene mit höherer Priorität dafür entschieden hat, den Datenverkehr zu blockieren.
  • Gibt die resultierende Aktion basierend auf den im folgenden Abschnitt beschriebenen Richtlinienregeln zurück.

Das folgende Diagramm veranschaulicht eine Beispielkonfiguration auf Unterebene. Die äußeren Felder stellen Ebenen dar. Die inneren Felder stellen Unterebenen dar, die Filter enthalten. Der Platzhalter (*) in einem Filter bedeutet, dass der gesamte Datenverkehr mit dem Filter übereinstimmt.

Beispielkonfiguration

Die einzige Möglichkeit für die Umgehung eines Filters besteht darin, dass ein Filter mit höherer Gewichtung den Datenverkehr innerhalb derselben Unterebene zugelassen oder blockiert hat. Umgekehrt besteht eine Möglichkeit, sicherzustellen, dass ein Filter immer den gesamten Datenverkehr innerhalb einer Ebene sieht, besteht darin, eine Unterebene hinzuzufügen, die einen einzelnen Filter enthält, der mit dem gesamten Datenverkehr übereinstimmt.

Konfigurierbare Außerkraftsetzungsrichtlinie

Die unten beschriebenen Regeln regeln die Schiedsentscheidungen innerhalb einer Ebene. Diese Regeln werden vom Filtermodul verwendet, um zu entscheiden, welche der Unterebenenaktionen auf den Netzwerkdatenverkehr angewendet werden.

Die grundlegende Richtlinie lautet wie folgt.

  • Aktionen werden in der Prioritätsreihenfolge von Unterebenen von der höchsten Priorität bis zur niedrigsten Priorität ausgewertet.
  • "Block" setzt "Permit" außer Kraft.
  • "Block" ist abgeschlossen (kann nicht außer Kraft gesetzt werden) und beendet die Auswertung. Das Paket wird verworfen.

Die grundlegende Richtlinie unterstützt nicht das Szenario einer Ausnahme, die von einer Firewall nicht außer Kraft gesetzt wird. Typische Beispiele für diese Art von Szenario sind:

  • Der Remoteverwaltungsport muss geöffnet werden, auch wenn eine Firewall eines Drittanbieters vorhanden ist.
  • Komponenten, für die Ports geöffnet werden müssen, um zu funktionieren (z. B. Universal Plug and Play UPnP). Wenn der Administrator die Komponente explizit aktiviert hat, sollte die Firewall den Datenverkehr nicht im Hintergrund blockieren.

Um die oben genannten Szenarien zu unterstützen, muss eine Filterentscheidung schwieriger außer Kraft setzen als eine andere Filterentscheidung durch die Verwaltung der Berechtigung zum Außerkraftsetzen der Aktion. Diese Berechtigung wird als FWPS_RIGHT_ACTION_WRITE-Kennzeichnung implementiert und wird pro Filter festgelegt.

Der Auswertungsalgorithmus verwaltet die aktuelle Aktion ("Permit" oder "Block") zusammen mit dem FWPS_RIGHT_ACTION_WRITE Flag. Das Flag steuert, ob eine Unterebene mit niedrigerer Priorität die Aktion außer Kraft setzen darf. Durch Festlegen oder Zurücksetzen des FWPS_RIGHT_ACTION_WRITE-Flags in der FWPS_CLASSIFY_OUT0-Struktur steuert ein Anbieter, wie Aktionen außer Kraft gesetzt werden können oder nicht außer Kraft gesetzt werden können. Wenn das Flag festgelegt ist, gibt es an, dass die Aktion überschrieben werden kann. Wenn das Flag nicht vorhanden ist, kann die Aktion nicht außer Kraft gesetzt werden.

Aktion Außerkraftsetzung zulassen (FWPS_RIGHT_ACTION_WRITE festgelegt ist) Beschreibung
Erlauben Ja Der Datenverkehr kann auf einer anderen Unterebene blockiert werden. Dies wird als weiche Genehmigung bezeichnet.
Erlauben Nein Der Datenverkehr kann nur auf einer anderen Unterebene durch eine Legende Veto-blockiert werden. Dies wird als harte Genehmigung bezeichnet.
Block Ja Der Datenverkehr kann auf einer anderen Unterebene zulässig sein. Dies wird als weicher Block bezeichnet.
Block Nein Der Datenverkehr kann nicht auf einer anderen Unterebene zugelassen werden. Dies wird als harter Block bezeichnet.

Die Filteraktion kann festgelegt werden, indem sie den Typ Member in der Struktur FWPM_ACTION0 auf FWP_ACTION_BLOCK oder FWP_ACTION_PERMITfestlegen. Zusammen mit dem Aktionstyp macht ein Filter auch das Flag FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHTverfügbar. Wenn diese Kennzeichnung gelöscht wird, ist der Aktionstyp hart und kann nicht außer außer wenn eine harte Genehmigung von einem Veto- außer Kraft gesetzt wird, wie weiter unten erläutert, andernfalls ist er weich, was durch aktion mit hoher Priorität außer Kraft gesetzt werden kann.

Die folgende Tabelle enthält das Standardverhalten für Filter- und Popupaktionen.

Aktion Standardverhalten
Filtergenehmigung Weiche Genehmigung
Legende zulassen Weiche Genehmigung
Filterblock Harter Block
Legendenblock Weicher Block

Ein Veto- ist eine vom Filter zurückgegebene "Blockieren"-Aktion, wenn das FWPS_RIGHT_ACTION_WRITE Flag vor dem Aufrufen des Filters zurückgesetzt wurde. Ein Veto- blockiert den Datenverkehr, der mit einer harten Genehmigung erlaubt wurde.

Wenn ein Veto ausgegeben wird, ist es ein Hinweis auf einen Konflikt in der Konfiguration. Die folgenden Maßnahmen werden ausgeführt, um den Konflikt zu mindern.

  • Der Datenverkehr wird blockiert.

  • Ein Überwachungsereignis wird generiert.

  • Eine Benachrichtigung wird generiert.

    Anmerkung

    Die Benachrichtigung wird von allen Entitäten empfangen, die sie abonniert haben. Dies umfasst in der Regel die Firewall (um Fehlkonfigurationen zu erkennen) oder Anwendungen (um zu erkennen, ob ihr bestimmter Filter überschrieben wird).

    Anmerkung

    Es gibt keine obligatorische Benutzeroberfläche, die instanziiert wird, wenn ein "Hard Permit"-Filter überschrieben wird. Die Benachrichtigungen der Außerkraftsetzung werden an jeden Anbieter gesendet, der registriert wurde, um sie zu empfangen, wodurch Firewalls oder die Anwendungen, die die Filter "Zulassen" erstellt haben, die Benutzeroberfläche anzeigen, die nach Benutzeraktion fragt. Es gibt keinen Wert, wenn eine Plattform-UI-Benachrichtigung für diese Außerkraftsetzungsereignisse vorhanden ist, da Firewall-ISVs, die dies nicht automatisch blockieren möchten, dies tun können, indem sie sich an einer anderen Stelle in WFP registrieren oder (weniger bevorzugt) alle ihre Logik in einem Anruftreiber behandeln. ISVs, die denken, dass das Auffordern von Benutzern eine gute Idee ist, die Benutzeroberfläche zu besitzen und ihre eigene Benutzeroberfläche zu erstellen.

Das oben beschriebene Entschärfungsverhalten stellt sicher, dass ein "Hard Permit"-Filter nicht automatisch von einem "Block"-Filter außer Kraft gesetzt wird, und deckt das Szenario ab, in dem ein Remoteverwaltungsport nicht von der Firewall blockiert werden darf. Um "Hard Permit"-Filter im Hintergrund außer Kraft zu setzen, muss eine Firewall ihre Filter innerhalb einer Unterebene mit höherer Priorität hinzufügen.

Anmerkung

Da es keine layerübergreifende Vermittlung gibt, kann der mit "Hard Permit" zulässige Datenverkehr auf einer anderen Ebene weiterhin blockiert werden. Es liegt in der Verantwortung des Richtlinienautors, sicherzustellen, dass der Datenverkehr bei Bedarf auf jeder Ebene zulässig ist.

Benutzeranwendungen, die Ports anfordern, die geöffnet werden sollen, fügen überschreibbare Filter zu einer untergeordneten Ebene mit niedriger Priorität hinzu. Die Firewall kann die Filter-Add-Benachrichtigungsereignisse abonnieren und nach der Benutzerüberprüfung einen übereinstimmenden Filter hinzufügen.

Filtergewichtungszuordnung