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.

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
Engine
FWPM _ ACTRL _ OPEN
Engine
FWPM _ ACTRL _ READ
Engine
FWPM _ ACTRL _ WRITE
Engine
FWPM _ _ ACTRL-ENUMERATION
Engine
FWPM _ ACTRL _ BEGIN _ READ _ TXN & FWPM _ ACTRL BEGIN WRITE _ _ _ TXN
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
Containerfilter
FWPM _ ACTRL _ ENUMFWPM _ ACTRL _ READ
Container
FWPM _ ACTRL _ SUBSCRIBE
Container
FWPM _ ACTRL _ READ
IPsec SA DB
FWPM _ ACTRL _ READ _ STATS
IPsecSaContextCreate0IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA DB
FWPM _ ACTRL _ ADD
IPsecSaContextDeleteById0IPsecSaContextExpire0
IPsec SA DB
DELETE
IPsec SA DB
FWPM _ ACTRL _ READ
IPsecSaContextCreateEnumHandle0IPsecSaCreateEnumHandle0
IPsec SA DB
FWPM _ ACTRL _ ENUM & FWPM _ ACTRL _ READ
IKE SA DB
FWPM _ ACTRL _ READ _ STATS
IKE SA DB
DELETE
IKE SA DB
FWPM _ ACTRL _ READ
IKE SA DB
FWPM _ ACTRL _ ENUM & FWPM _ ACTRL _ READ
Container
_ _ FWPM-ACTRL-ENUM
FwpmIPsecTunnelAdd0FwpmIPsecTunnelDeleteByKey0
Keine zusätzlichen Zugriffsüberprüfungen über diejenigen hinaus für die einzelnen Filter und Anbieterkontexte