Access Control (Windows Filterplattform)

In Windows Filterplattform (WFP) implementiert der BFE-Dienst (Base Filtering Engine) das Standardmodell Windows Zugriffssteuerung basierend auf Zugriffstoken und Sicherheitsbeschreibungen.

Access Control-Modell

Sicherheitsbeschreibungen können beim Hinzufügen neuer WFP-Objekte wie Filter und Unterebenen angegeben werden. Sicherheitsbeschreibungen werden mit den WFP-Verwaltungsfunktionen Fwpm * GetSecurityInfo0 und Fwpm * SetSecurityInfo0 verwaltet, wobei * * _ für den Namen des WFP-Objekts steht. Diese Funktionen sind semantisch identisch mit den Funktionen Windows _ GetSecurityInfo * und SetSecurityInfo.

Hinweis

Die * Fwpm-Funktionen SetSecurityInfo0 können nicht innerhalb einer expliziten Transaktion aufgerufen werden.

Hinweis

Die Fwpm * SetSecurityInfo0-Funktionen können nur innerhalb einer dynamischen Sitzung aufgerufen werden, wenn sie zum Verwalten eines dynamischen Objekts verwendet werden, das innerhalb derselben Sitzung erstellt wurde.

Die Standardsicherheitsbeschreibung für die Filter-Engine (das Stamm-Engine-Objekt im diagramm unten) lautet wie folgt.

  • Gewähren Sie der integrierten Administratorgruppe allgemeine Zugriffsrechte (GENERIC _ ALL, GA).
  • Gewähren Sie DEN Netzwerkkonfigurationsoperatoren GENERIC _ READ (GR) GENERIC _ WRITE (GW) GENERIC _ EXECUTE (GX).
  • Erteilen Sie GRGWGX-Zugriffsrechte für die folgenden Dienstsicherheits-IDs (SSIDs): MpsSvc (Windows Firewall), NapAgent (Network Access Protection Agent), PolicyAgent (IPsec Policy Agent), RpcSs (Remote Procedure Call) und WdiServiceHost (Diagnostic Service Host).
  • Gewähren Sie FWPM _ ACTRL _ OPEN und FWPM _ ACTRL _ CLASSIFY für alle Benutzer. (Dies sind WFP-spezifische Zugriffsrechte, die in der folgenden Tabelle beschrieben werden.)

Die verbleibenden Standardsicherheitsbeschreibungen werden durch Vererbung abgeleitet.

Es gibt einige Zugriffsüberprüfungen, z. B. für Funktionsaufrufe von Fwpm * Add0, Fwpm * CreateEnumHandle0 und Fwpm * SubscribeChanges0, die auf der Ebene einzelner Objekte nicht durchgeführt werden können. Für diese Funktionen gibt es Containerobjekte für jeden Objekttyp. Für die Standardobjekttypen (z. B. Anbieter, Aufrufe, Filter) werden die vorhandenen Funktionen Fwpm * GetSecurityInfo0 und Fwpm * SetSecurityInfo0 überladen, sodass ein NULL-GUID-Parameter den zugeordneten Container identifiziert. Für die anderen Objekttypen (z. B. Netzwerkereignisse und IPsec-Sicherheitszuordnungen) gibt es explizite Funktionen zum Verwalten der Sicherheitsinformationen des Containers.

BFE unterstützt die automatische Vererbung von DACL-Zugriffssteuerungseinträgen (Discretionary Access Control List). BFE unterstützt keine SACL-ACEs (System Access Control List). Objekte erben ACEs von ihrem Container. Container erben ACEs von der Filter-Engine. Die Weitergabepfade sind im folgenden Diagramm dargestellt.

Diagramm, das die ACE-Weitergabepfade zeigt, beginnend mit "Engine".

Für die Standardobjekttypen erzwingt BFE alle generischen und Standardzugriffsrechte. Darüber hinaus definiert WFP die folgenden spezifischen Zugriffsrechte.

WFP-Zugriffsrecht BESCHREIBUNG
FWPM _ ACTRL _ ADD
Erforderlich, um einem Container ein Objekt hinzuzufügen.
FWPM _ ACTRL _ LINK HINZUFÜGEN _
Erforderlich, um eine Zuordnung zu einem Objekt zu erstellen. Um beispielsweise einen Filter hinzuzufügen, der auf eine Aufrufliste verweist, muss der Aufrufer über ADD _ LINK-Zugriff auf die -Aufrufliste verfügen.
FWPM _ ACTRL _ BEGIN _ READ _ TXN
Erforderlich, um eine explizite Lesetransaktion zu starten.
FWPM _ ACTRL _ BEGIN _ WRITE _ TXN
Erforderlich, um eine explizite Schreibtransaktion zu starten.
FWPM _ ACTRL _ CLASSIFY
Erforderlich, um eine Klassifizierung für eine Benutzermodusebene zu erstellen.
FWPM _ _ ACTRL-ENUMERATION
Erforderlich, um die Objekte in einem Container aufzuzählen. Der Enumerator gibt jedoch nur Objekte zurück, auf die der Aufrufer über FWPM _ ACTRL _ READ-Zugriff verfügt.
FWPM _ ACTRL _ OPEN
Erforderlich, um eine Sitzung mit BFE zu öffnen.
FWPM _ ACTRL _ READ
Erforderlich, um die Eigenschaften eines Objekts zu lesen.
FWPM _ ACTRL _ READ _ STATS
Zum Lesen von Statistiken erforderlich.
FWPM _ ACTRL _ SUBSCRIBE
Erforderlich, um Benachrichtigungen zu abonnieren. Abonnenten erhalten nur Benachrichtigungen für Objekte, auf die sie über FWPM _ ACTRL _ READ-Zugriff verfügen.
FWPM _ ACTRL _ WRITE
Erforderlich, um Engine-Optionen festzulegen.

BFE überspringt alle Zugriffsüberprüfungen für Aufrufer im Kernelmodus.

Um zu verhindern, dass Administratoren sich selbst von BFE sperren, wird Mitgliedern der integrierten Administratorengruppe immer FWPM _ ACTRL _ OPEN für das Engine-Objekt gewährt. Daher kann ein Administrator den Zugriff mithilfe der folgenden Schritte wiedererlangen.

  • Aktivieren Sie die SE _ TAKE OWNERSHIP _ _ NAME-Berechtigung.
  • Rufen Sie FwpmEngineOpen0auf. Der Aufruf ist erfolgreich, da der Aufrufer Mitglied der integrierten Administratoren ist.
  • Übernehmen Sie den Besitz des Engine-Objekts. Dies ist erfolgreich, da der Aufrufer über die SE _ TAKE OWNERSHIP _ _ NAME-Berechtigung verfügt.
  • Aktualisieren Sie die DACL. Dies ist erfolgreich, da der Besitzer immer über _ SCHREIB-DAC-Zugriff verfügt.

Da BFE seine eigene benutzerdefinierte Überwachung unterstützt, werden keine generischen Objektzugriffsüberwachungen generiert. Daher wird die SACL ignoriert.

Erforderliche WFP-Zugriffsrechte

Die folgende Tabelle zeigt die Zugriffsrechte, die für die WFP-Funktionen erforderlich sind, um auf verschiedene Filterplattformobjekte zuzugreifen. Die FwpmFilter * _-Funktionen werden als Beispiel für den Zugriff auf die Standardobjekte aufgeführt. Alle anderen Funktionen, die auf Standardobjekte zugreifen, folgen dem Zugriffsmodell _FwpmFilter-Funktionen. *

Funktion

Objekt überprüft

Erforderlicher Zugriff

FwpmEngineOpen0

Engine

FWPM _ ACTRL _ OPEN

FwpmEngineGetOption0

Engine

FWPM _ ACTRL _ READ

FwpmEngineSetOption0

Engine

FWPM _ ACTRL _ WRITE

FwpmSessionCreateEnumHandle0

Engine

FWPM _ _ ACTRL-ENUMERATION

FwpmTransactionBegin0

Engine

FWPM _ ACTRL _ BEGIN _ READ _ TXN & FWPM _ ACTRL BEGIN WRITE _ _ _ TXN

FwpmFilterAdd0

Containeranbieter
Ebene
Sub-Layer
Legende
Anbieterkontext

FWPM _ ACTRL _ ADDFWPM _ ACTRL _ LINK HINZUFÜGEN _
FWPM _ ACTRL _ LINK HINZUFÜGEN _
FWPM _ ACTRL _ LINK HINZUFÜGEN _
FWPM _ ACTRL _ LINK HINZUFÜGEN _
FWPM _ ACTRL _ LINK HINZUFÜGEN _

FwpmFilterDeleteById0FwpmFilterDeleteByKey0

Filtern

DELETE

FwpmFilterGetById0FwpmFilterGetByKey0

Filtern

FWPM _ ACTRL _ READ

FwpmFilterCreateEnumHandle0

Containerfilter

FWPM _ ACTRL _ ENUMFWPM _ ACTRL _ READ

FwpmFilterSubscribeChanges0

Container

FWPM _ ACTRL _ SUBSCRIBE

FwpmFilterSubscriptionsGet0

Container

FWPM _ ACTRL _ READ

IPsecGetStatistics0

IPsec SA DB

FWPM _ ACTRL _ READ _ STATS

IPsecSaContextCreate0IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0

IPsec SA DB

FWPM _ ACTRL _ ADD

IPsecSaContextDeleteById0IPsecSaContextExpire0

IPsec SA DB

DELETE

IPsecSaContextGetById0

IPsec SA DB

FWPM _ ACTRL _ READ

IPsecSaContextCreateEnumHandle0IPsecSaCreateEnumHandle0

IPsec SA DB

FWPM _ ACTRL _ ENUM & FWPM _ ACTRL _ READ

IkeextGetStatistics0

IKE SA DB

FWPM _ ACTRL _ READ _ STATS

IkeextSaDeleteById0

IKE SA DB

DELETE

IkeextSaGetById0

IKE SA DB

FWPM _ ACTRL _ READ

IkeextSaCreateEnumHandle0

IKE SA DB

FWPM _ ACTRL _ ENUM & FWPM _ ACTRL _ READ

FwpmNetEventCreateEnumHandle0

Container

_ _ FWPM-ACTRL-ENUM

FwpmIPsecTunnelAdd0FwpmIPsecTunnelDeleteByKey0

Keine zusätzlichen Zugriffsüberprüfungen über diejenigen hinaus für die einzelnen Filter und Anbieterkontexte

Standardzugriffsrechte

Windows des Zugriffssteuerungsmodells

Windows Filtern von Bezeichnern für Plattformzugriffsrechte