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.
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 |