Zugriffssteuerung (Windows Filterplattform)

In der Windows-Filterplattform (Windows Filtering Platform, WFP) implementiert der BFE-Dienst (Base Filtering Engine) das standardmäßige Windows-Zugriffssteuerungsmodell , das auf Zugriffstoken und Sicherheitsbeschreibungen basiert.

Zugriffssteuerungsmodell

Sicherheitsbeschreibungen können beim Hinzufügen neuer WFP-Objekte wie Filter und Unterebenen angegeben werden. Sicherheitsdeskriptoren 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 Windows GetSecurityInfo - und SetSecurityInfo-Funktionen .

Hinweis

Die Fwpm*SetSecurityInfo0-Funktionen 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.

Der Standardsicherheitsdeskriptor für die Filter-Engine (das Stamm-Engine-Objekt im folgenden Diagramm) lautet wie folgt.

  • Erteilen Sie GENERIC_ALL Zugriffsrechte (GA) für die integrierte Gruppe Administratoren.
  • Gewähren Sie GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) Zugriffsrechte für Netzwerkkonfigurationsoperatoren.
  • Gewähren Sie GRGWGX-Zugriffsrechte für die folgenden Dienstsicherheitsbezeichner (SSIDs): MpsSvc (Windows-Firewall), NapAgent (Netzwerkzugriffsschutz-Agent), PolicyAgent (IPsec-Richtlinien-Agent), RpcSs (Remoteprozeduraufruf) und WdiServiceHost (Diagnosediensthost).
  • Gewähren Sie allen FWPM_ACTRL_OPEN und FWPM_ACTRL_CLASSIFY . (Hierbei handelt es sich um 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 Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0-Funktionsaufrufe , die nicht auf der Ebene einzelner Objekte durchgeführt werden können. Für diese Funktionen gibt es Containerobjekte für jeden Objekttyp. Für die Standardobjekttypen (z. B. Anbieter, Legenden, 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 Verteilungspfade sind im folgenden Diagramm dargestellt.

Diagramm, das die ACE-Verteilungspfade zeigt, beginnend mit

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_ADD_LINK
Erforderlich, um eine Zuordnung zu einem -Objekt zu erstellen. Um beispielsweise einen Filter hinzuzufügen, der auf eine Legende verweist, muss der Aufrufer ADD_LINK Zugriff auf die Legende haben.
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 Benutzermodusebene zu klassifizieren.
FWPM_ACTRL_ENUM
Erforderlich, um die Objekte in einem Container aufzulisten. Der Enumerator gibt jedoch nur Objekte zurück, auf die der Aufrufer FWPM_ACTRL_READ Zugriff hat.
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
Erforderlich zum Lesen von Statistiken.
FWPM_ACTRL_SUBSCRIBE
Erforderlich, um Benachrichtigungen zu abonnieren. Abonnenten erhalten nur Benachrichtigungen für Objekte, auf die sie FWPM_ACTRL_READ Zugriff haben.
FWPM_ACTRL_WRITE
Erforderlich, um Engine-Optionen festzulegen.

BFE überspringt alle Zugriffsprüfungen für Aufrufer im Kernelmodus.

Um zu verhindern, dass Administratoren sich von BFE sperren, werden Mitgliedern der integrierten Administratorgruppe 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 Berechtigung SE_TAKE_OWNERSHIP_NAME .
  • Rufen Sie FwpmEngineOpen0 auf. 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 berechtigung SE_TAKE_OWNERSHIP_NAME verfügt.
  • Aktualisieren Sie die DACL. Dies ist erfolgreich, da der Besitzer immer über WRITE_DAC Zugriff verfügt.

Da BFE eine 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 von den WFP-Funktionen für den Zugriff auf verschiedene Filterplattformobjekte erforderlich sind. Die FwpmFilter* -Funktionen werden als Beispiel für den Zugriff auf die Standardobjekte aufgeführt. Alle anderen Funktionen, die auf Standardobjekte zugreifen, folgen dem FwpmFilter* -Funktionszugriffsmodell.

Funktion Objekt aktiviert Zugriff erforderlich
FwpmEngineOpen0 Engine FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Engine FWPM_ACTRL_READ
FwpmEngineSetOption0 Engine FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Engine FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Engine & FWPM_ACTRL_BEGIN_READ_TXN FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Containeranbieter
Ebene
Sub-Layer
Legende
Anbieterkontext
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filter DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
Filter FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Containerfilter
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Container FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Container FWPM_ACTRL_READ
IPsecGetStatistics0 IPsec SA-Datenbank FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA-Datenbank FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA-Datenbank DELETE
IPsecSaContextGetById0 IPsec SA-Datenbank FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA-Datenbank & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA-DATENBANK FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA-DATENBANK DELETE
IkeextSaGetById0 IKE SA-DATENBANK FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA-DATENBANK & FWPM_ACTRL_ENUM FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Container FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Keine zusätzlichen Zugriffsprüfungen, die über die für die einzelnen Filter und Anbieterkontexte hinausgehen