Filtern von Schiedsverfahren
Filter schied ist die in die Windows-Filterplattform (WFP) integrierte Logik, die verwendet wird, um zu bestimmen, wie Filter miteinander interagieren, wenn Sie Entscheidungen zur Filterung des Netzwerkdatenverkehrs treffen.
Filtern von Schiedsverhalten
Die folgenden Verhaltensweisen charakterisieren das Filterschiedsungssystem:
- Der gesamte Datenverkehr kann überprüft werden. Kein Datenverkehr kann Filter auf einer bestimmten Ebene umgehen.
- Datenverkehr kann durch einen Beschriftungsfilter über ein Veto blockiert werden, auch wenn ein Filter mit höherer Priorität dies zugelassen hat.
- Mehrere Anbieter können den Datenverkehr auf derselben Ebene untersuchen. Beispielsweise können Firewalls, 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 in Unterebenen unterteilt, die nach Priorität sortiert sind (auch als Gewichtung bezeichnet). Netzwerkdatenverkehr durchläuft Unterebenen von der höchsten Priorität zur niedrigsten Priorität. Unterebenen werden von den Entwicklern mithilfe der WFP-API erstellt und verwaltet.
Innerhalb jeder Unterschicht werden Filter nach Gewichtung sortiert. Netzwerkdatenverkehr wird für übereinstimmende Filter von der höchsten Gewichtung bis zur niedrigsten Gewichtung angegeben.
Der Filterschiedsalgorithmus 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 Unterschicht wird die Filterschiedsung wie folgt ausgeführt:
- Berechnen Sie die Liste der übereinstimmenden Filter nach Gewichtung vom höchsten zum niedrigsten.
- Bewerten Sie übereinstimmende Filter in der Reihenfolge, bis eine "Permit" oder ein "Block" zurückgegeben wird (Filter können auch "Weiter" zurückgeben) oder bis die Liste erschöpft ist.
- Überspringen Sie die verbleibenden Filter, und geben Sie die Aktion aus dem zuletzt ausgewerteten Filter zurück.
Innerhalb einer Ebene wird die Filterschiedsung wie folgt ausgeführt:
- Führen Sie eine Filterschiedsung auf jeder Untergeordneten Ebene in der Reihenfolge von der höchsten bis zur niedrigsten Priorität durch.
- Evaluieren Sie alle Unterebenen, auch wenn sich eine Unterebene mit höherer Priorität 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 für untergeordnete Ebenen. Die äußeren Felder stellen Ebenen dar. Die inneren Felder stellen Untergeordnete Ebenen dar, die Filter enthalten. Der Platzhalter (*) in einem Filter bedeutet, dass der gesamte Datenverkehr mit dem Filter übereinstimmt.
Die einzige Möglichkeit, einen Filter zu umgehen, ist, wenn ein Filter mit höherer Gewichtung den Datenverkehr innerhalb derselben Unterebene zugelassen oder blockiert hat. 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 dem gesamten Datenverkehr entspricht.
Konfigurierbare Außerkraftsetzungsrichtlinie
Die unten beschriebenen Regeln regeln die Schiedsentscheidungen innerhalb einer Ebene. Diese Regeln werden von der Filter-Engine verwendet, um zu entscheiden, welche der Aktionen der Untergeordneten Ebene auf den Netzwerkdatenverkehr angewendet wird.
Die grundlegende Richtlinie sieht wie folgt aus.
- Aktionen werden in der Prioritätsreihenfolge der Unterebenen von der höchsten bis zur niedrigsten Priorität ausgewertet.
- "Block" überschreibt "Permit".
- "Block" ist endgültig (kann nicht überschrieben werden) und beendet die Auswertung. Das Paket wird verworfen.
Die grundlegende Richtlinie unterstützt nicht das Szenario einer Ausnahme, die nicht von einer Firewall überschrieben wird. Typische Beispiele für diese Art von Szenario sind:
- Der Remoteverwaltungsport muss auch in Anwesenheit einer Firewall eines Drittanbieters geöffnet werden.
- Komponenten, für die Ports geöffnet werden müssen, um zu funktionieren (z. B. Universal Plug & Play UPnP). Wenn der Administrator die Komponente explizit aktiviert hat, sollte die Firewall den Datenverkehr nicht automatisch blockieren.
Um die oben genannten Szenarien zu unterstützen, muss eine Filterentscheidung schwieriger überschrieben werden als eine andere Filterentscheidung, indem die Berechtigung zum Außerkraftsetzen der Aktion verwaltet wird. Diese Berechtigung wird als FWPS_RIGHT_ACTION_WRITE-Flag implementiert und auf Filterbasis festgelegt.
Der Auswertungsalgorithmus verwaltet die aktuelle Aktion ("Permit" oder "Block") zusammen mit dem FWPS_RIGHT_ACTION_WRITE Flag. Das Flag steuert, ob eine untergeordnete Ebene mit niedrigerer Priorität die Aktion überschreiben darf. Durch das Festlegen oder Zurücksetzen des FWPS_RIGHT_ACTION_WRITE-Flags in der FWPS_CLASSIFY_OUT0-Struktur steuert ein Anbieter, wie Aktionen überschrieben werden können oder nicht. Wenn das Flag festgelegt ist, gibt es an, dass die Aktion überschrieben werden kann. Wenn das Flag nicht vorhanden ist, kann die Aktion nicht überschrieben werden.
Aktion | Außerkraftsetzung zulassen (FWPS_RIGHT_ACTION_WRITE festgelegt ist) | BESCHREIBUNG |
---|---|---|
Zulassen | Ja | Der Datenverkehr kann auf einer anderen Unterebene blockiert werden. Dies wird als soft permit bezeichnet. |
Zulassen | Nein | Der Datenverkehr kann auf einer anderen Unterebene nur durch ein Beschriftungs-Veto blockiert werden. Dies wird als harte Genehmigung bezeichnet. |
Blockieren | Ja | Der Datenverkehr kann auf einer anderen Unterebene zugelassen werden. Dies wird als weicher Block bezeichnet. |
Blockieren | Nein | Der Datenverkehr kann nicht auf einer anderen Unterebene zugelassen werden. Dies wird als harter Block bezeichnet. |
Die Filteraktion kann durch Festlegen des Typmembers in der struktur FWPM_ACTION0 auf FWP_ACTION_BLOCK oder FWP_ACTION_PERMIT festgelegt werden. Zusammen mit dem Aktionstyp macht ein Filter auch das Flag FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT verfügbar. Wenn dieses Flag gelöscht wird, ist der Aktionstyp hart und kann nicht überschrieben werden, es sei denn, eine harte Genehmigung wird durch ein Veto außer Kraft gesetzt, wie später erläutert, andernfalls handelt es sich um ein weiches Element, das durch eine Aktion mit hoher Priorität außer Kraft gesetzt werden kann.
In der folgenden Tabelle ist das Standardverhalten für Filter- und Beschriftungsaktionen aufgeführt.
Aktion | Standardverhalten |
---|---|
Filterberechtigung | Vorläufige Genehmigung |
Beschriftungsgenehmigung | Vorläufige Genehmigung |
Filterblock | Harter Block |
Beschriftungsblock | Weicher Block |
Ein Veto ist eine "Blockieren"-Aktion, die vom Filter zurückgegeben wird, wenn das flag FWPS_RIGHT_ACTION_WRITE vor dem Aufrufen des Filters zurückgesetzt wurde. Ein Veto blockiert datenverkehr, der mit einer harten Genehmigung zugelassen wurde.
Wenn ein Veto ausgestellt wird, ist dies ein Hinweis auf einen Konflikt in der Konfiguration. Die folgenden Aktionen werden ausgeführt, um den Konflikt zu entschärfen.
Der Datenverkehr wird blockiert.
Ein Überwachungsereignis wird generiert.
Eine Benachrichtigung wird generiert.
Hinweis
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 der jeweilige Filter überschrieben wird).
Hinweis
Es wird keine obligatorische Benutzeroberfläche instanziiert, wenn ein "Hard Permit"-Filter überschrieben wird. Die Benachrichtigungen über die Außerkraftsetzung werden an jeden Anbieter gesendet, der sich registriert hat, um sie zu empfangen, wodurch Firewalls oder die Anwendungen, die die "Zulassen"-Filter erstellt haben, die Benutzeroberfläche anzeigen können, die nach Benutzeraktionen fragt. Es ist nicht sinnvoll, eine Plattform-UI-Benachrichtigung für diese Außerkraftsetzungsereignisse zu erhalten, da Firewall-ISVs, die nicht im Hintergrund blockieren möchten, dies tun können, indem sie sich an einem anderen Ort in WFP registrieren oder (weniger bevorzugt) ihre gesamte Logik in einem Aufruftreiber verarbeiten können. ISVs, die die Aufforderung von Benutzern für eine gute Idee halten, sollten die Benutzeroberfläche besitzen und eine eigene Benutzeroberfläche erstellen.
Das oben beschriebene Entschärfungsverhalten stellt sicher, dass ein "Hard Permit"-Filter nicht automatisch von einem "Blockieren"-Filter überschrieben 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 in einer untergeordneten Ebene mit höherer Priorität hinzufügen.
Hinweis
Da es keine ebenenübergreifende Schlichtung gibt, kann der mit "Hard Permit" zulässige Verkehr auf einer anderen Ebene noch blockiert werden. Es liegt in der Verantwortung des Richtlinienautors sicherzustellen, dass Datenverkehr bei Bedarf auf jeder Ebene zugelassen wird.
Benutzeranwendungen, die das Öffnen von Ports anfordern, fügen einer Untergeordneten Ebene mit niedriger Priorität überschreibbare Filter hinzu. Die Firewall kann den Filter abonnieren, um Benachrichtigungsereignisse hinzuzufügen und nach der Überprüfung des Benutzers (oder der Richtlinie) einen entsprechenden Filter hinzuzufügen.