WFP-Vorgang

Windows Filtering Platform (WFP) führt ihre Aufgaben aus, indem sie die folgenden grundlegenden Entitäten integriert: Ebenen, Filter, Shims und Legenden.

Ebenen

Eine Ebene ist ein container, der von der Filter-Engine verwaltet wird, dessen Funktion darin besteht, Filter in Gruppen zu organisieren. Eine Ebene ist kein Modul im Netzwerkstapel. Jede Ebene verfügt über ein Schema, das den Typ der Filter definiert, die ihr hinzugefügt werden können. Weitere Informationen finden Sie unter Filterbedingungen verfügbar auf jeder Filterebene .

Ebenen können Unterebenen enthalten, um konfliktierende Filteranforderungen zu verwalten, z. B. "TCP-Ports über 1024 blockieren" und "Port 1080 öffnen". Die Regeln für die Verwaltung von Filterkonflikten werden durch filter arbitration bestimmt.

WFP enthält einen Satz integrierter Unterebenen. Jede Ebene erbt alle integrierten Unterebenen. Benutzer können auch eigene Unterebenen hinzufügen.

Die Liste der Filter-Engine-Ebenen finden Sie im Referenzabschnitt Filterebenenbezeichner.

Filter

Ein Filter ist eine Regel, die mit eingehenden oder ausgehenden Paketen abgeglichen wird. Die Regel teilt der Filter-Engine mit, was mit dem Paket zu tun ist, einschließlich des Aufrufens eines Legendenmoduls für die Umfassende Paket- oder Streamüberprüfung. Ein Filter kann beispielsweise "Datenverkehr blockieren mit einem TCP-Port größer als 1024" oder "Aufruf von IDS für den gesamten nicht gesicherten Datenverkehr" angeben.

Ein Startzeitfilter ist ein Filter, der zur Startzeit erzwungen wird, sobald der TCP/IP-Stapeltreiber (tcpip.sys) gestartet wird. Ein Startzeitfilter ist deaktiviert, wenn BFE gestartet wird. Ein Filter wird als Startzeit markiert, indem das FWPM_FILTER_FLAG_BOOTTIME-Flag festgelegt wird, wenn FwpmFilterAdd0 aufgerufen wird.

Ein Laufzeitfilter ist ein Filter, der nach dem Start von BFE erzwungen wird. Ein Laufzeitfilter kann statisch, dynamisch oder persistent sein, je nachdem, wie er erstellt wurde. Weitere Informationen zu den verschiedenen Typen von Laufzeitfiltern und ihrer Lebensdauer finden Sie unter Objektverwaltung .

Shims

Ein Shim ist eine Kernelmoduskomponente, die Filterentscheidungen durch Klassifizieren anhand der Filter-Engine-Ebenen trifft. Jeder Shim wird für eine oder mehrere Ebenen klassifiziert. Beispielsweise klassifiziert der Shim Transport Layer Module die Eingangstransportschicht, die ausgehende Transportschicht und die ALE Connect- und Receive-Accept-Ebenen für das erste Paket eines Flows.

Während Pakete, Streams und Ereignisse den Netzwerkstapel durchlaufen, analysieren die Shims sie, um die klassifizierbaren Bedingungen und Werte zu extrahieren, und rufen dann die Filter-Engine auf, um sie anhand der Filter in einer bestimmten Ebene auszuwerten. Die Filter-Engine kann eine oder mehrere Legenden als Teil der Klassifizierung aufrufen. Die Shims führen das tatsächliche Ablegen von Paketen, Datenströmen und Ereignissen basierend auf dem Ergebnis der Klassifizierung durch die Filter-Engine durch.

Aufrufe

Eine Legende ist eine Reihe von Funktionen, die von einem Treiber verfügbar gemacht und für die spezielle Filterung verwendet werden. Sie werden verwendet, um die Analyse und Manipulation der Pakete durchzuführen, z. B. Virenscan, Überprüfung der Kindersicherung auf unangemessene Inhalte, Analyse von Paketdaten für Überwachungstools. Einige Legenden, z. B. der NAT-Treiber (Network Address Translation), sind in das Betriebssystem integriert. Andere, z. B. ein HTTP-Callout für die Kindersicherung oder die IdS-Beschriftung (Intrusion Detection System) können von unabhängigen Softwareanbietern (ISVs) bereitgestellt werden. Die Legendenfunktionen werden von der Filter-Engine aufgerufen, wenn ein entsprechender Legendenfilter auf einer bestimmten Ebene abgeglichen wird.

Legenden können auf allen Kernelmodus-WFP-Ebenen registriert werden. Legenden können eine Aktion zurückgeben ("Block", "Permit", and, when perform stream inspection, "Defer", "Need more data", "Drop connection") und können den eingehenden und ausgehenden Netzwerkdatenverkehr ändern und schützen.

Sobald eine Legende bei der Filter-Engine registriert wurde, kann sie Netzwerkdatenverkehr empfangen, der verarbeitet werden soll. Der Datenverkehr kann je nach Ebene Pakete, Streams oder Ereignisse sein. Ein Anwendungs- oder Firewall-Agent bewirkt, dass Datenverkehr an eine Legende übergeben wird, indem ein Filter hinzugefügt wird, dessen Aktion "Callout" lautet und dessen Legenden-ID der Bezeichner dieses Legenden ist. Legenden können die Filter-Engine anweisen, "Block" oder "Permit" an den Shim zurückzugeben. Legenden können auch "Continue" zurückgeben, damit andere Filter das Paket verarbeiten können.

Mehrere Legenden können von einem Legendentreiber verfügbar gemacht werden.

Eine Legende muss hinzugefügt (mit FwpmCalloutAdd0) und registriert werden (mit FwpsCalloutRegister), bevor sie verwendet werden kann. Vor der Erstellung von Filtern, die auf die Legende verweisen, ist ein Aufruf von FwpmCalloutAdd0 erforderlich. Ein Aufruf von FwpsCalloutRegister ist erforderlich, bevor WFP die Legende aufrufen kann, wenn die Legendenfilter übereinstimmen. Standardmäßig werden Filter, die auf Legenden verweisen, die hinzugefügt, aber noch nicht bei der Filter-Engine registriert sind, als "Blockfilter" behandelt. Die Reihenfolge des Aufrufens von FwpmCalloutAdd0 und FwpsCalloutRegister spielt keine Rolle. Eine persistente Legende muss nur einmal hinzugefügt werden und muss jedes Mal registriert werden, wenn der Treiber registriert wird, der die Legende implementiert (z. B. nach einem Neustart).

Klassifizierung

Klassifizierung ist der Prozess des Anwendens von Filtern auf Netzwerkdatenverkehr (Paket, Stream oder Ereignis), um ein Ergebnis von "Permit" oder "Block" für diesen Datenverkehr zu bestimmen. Für ein Paket, einen Stream oder ein Ereignis gibt es einen Klassifizierungsaufruf pro Schicht.

Während der Klassifizierung werden die Eigenschaften (z. B. Quelladresse) des Pakets, Streams oder Ereignisses mit Filterbedingungen verglichen, die für Filter auf der Ebene festgelegt werden, auf der die Klassifizierung aufgerufen wird. Wenn Übereinstimmungen gefunden werden, wird der Algorithmus filter arbitration verwendet, um das Ergebnis des Klassifizierungsprozesses zu bestimmen.

Eine Klassifizierungsanforderung wird durch einen Shim ausgelöst.

Klassifizierungsaktionen können wie folgt sein:

  • Zulassen
  • Blockieren
  • Legende
    • Zulassen
    • Blockieren
    • Weiter
    • Verzögern
    • Weitere Daten benötigen
    • Verbindung löschen

WFP-Vorgang

Sobald der TCP/IP-Stapeltreiber (tcpip.sys) gestartet wird, erzwingt die Kernelmodusfilter-Engine die Sicherheitsrichtlinie des Systems durch Startzeitfilter.

Sobald die Basisfilterungs-Engine (BFE) im Benutzermodus gestartet wird, werden der Plattform persistente Filter hinzugefügt, Startzeitfilter deaktiviert und Benachrichtigungen an die Legendentreiber gesendet, die mit FwpmBfeStateSubscribeChanges0 abonniert haben. Die Benachrichtigungen werden unmittelbar nach Abschluss der BFE-Initialisierung versendet. Die Plattform ist jetzt für die Registrierung von Legenden und für das Hinzufügen von Laufzeitobjekten bereit.

Der Übergang von startzeit zu persistenten Filtern kann mehrere Sekunden oder sogar länger auf einem langsamen Computer dauern. Es ist atomisch. Wenn ein Anbieter also sowohl über eine Startzeit als auch über einen persistenten Filter verfügt, wird es nie ein Fenster geben, wenn keines der beiden aktiviert ist.

Nach dem Start von BFE können Laufzeitfilter von Firewall-Agents oder von benutzerdefinierten Firewalllösungen hinzugefügt werden. BFE verarbeitet diese Filter und sendet sie zur Erzwingung an die entsprechende Filter-Engine-Schicht. BFE akzeptiert auch Authentifizierungseinstellungen und sendet diese Einstellungen an die IPsec-Schlüsselmodule (IKE/AuthIP). Weitere Informationen finden Sie unter IPsec-Konfiguration .

Filter und Authentifizierungseinstellungen können jederzeit über die vom BFE verfügbar gemachte RPC-Schnittstelle hinzugefügt, entfernt oder geändert werden. Unterebenen und Legendenmodule können ebenfalls hinzugefügt oder entfernt werden.

Datenfluss:

  1. Ein Paket wird in den Netzwerkstapel eingegliedert.
  2. Der Netzwerkstapel sucht und ruft einen Shim auf.
  3. Der Shim ruft den Klassifizierungsprozess auf einer bestimmten Ebene auf.
  4. Während der Klassifizierung werden Filter abgeglichen, und die resultierende Aktion wird ausgeführt. (Siehe Filter arbitration.)
  5. Wenn während des Klassifizierungsprozesses Legendenfilter übereinstimmen, werden die entsprechenden Legenden aufgerufen.
  6. Der Shim wirkt sich auf die endgültige Filterentscheidung aus (z. B. das Paket löschen).

Der ausgehende Datenfluss folgt einem ähnlichen Muster.

In den folgenden Themen wird der Betrieb des WFP weiter beschrieben.

Objektmodell

Objektverwaltung