Delen via


Toegangsbeheer (Windows Filtering Platform)

In Windows Filtering Platform (WFP) implementeert de BFE-service (Base Filtering Engine) het standaardmodel Windows-toegangsbeheermodel op basis van toegangstokens en beveiligingsdescriptors.

Model voor toegangsbeheer

Beveiligingsdescriptors kunnen worden opgegeven bij het toevoegen van nieuwe WFP-objecten, zoals filters en sublagen. Beveiligingsdescriptors worden beheerd met behulp van de WFP-beheerfuncties Fwpm*GetSecurityInfo0 en Fwpm*SetSecurityInfo0, waarbij * staat voor de naam van het WFP-object. Deze functies zijn semantisch identiek aan de functies Van Windows GetSecurityInfo en SetSecurityInfo.

Notitie

De Fwpm*SetSecurityInfo0--functies kunnen niet worden aangeroepen vanuit een expliciete transactie.

Notitie

De functies Fwpm*SetSecurityInfo0 kunnen alleen worden aangeroepen vanuit een dynamische sessie als ze worden gebruikt voor het beheren van een dynamisch object dat in dezelfde sessie is gemaakt.

De standaardbeveiligingsdescriptor voor de filterengine (het hoofdengineobject in het onderstaande diagram) is als volgt.

  • Ververleent GENERIC_ALL (GA) toegangsrechten voor de ingebouwde groep Administrators.
  • Ververleent GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) toegangsrechten voor netwerkconfiguratieoperators.
  • Verken GRGWGX- toegangsrechten voor de volgende servicebeveiligings-id's (SSID's): MpsSvc (Windows Firewall), NapAgent (Network Access Protection Agent), PolicyAgent (IPsec Policy Agent), RpcSs (Remote Procedure Call) en WdiServiceHost (Diagnostic Service Host).
  • Geef FWPM_ACTRL_OPEN en FWPM_ACTRL_CLASSIFY aan iedereen. (Dit zijn WFP-specifieke toegangsrechten, zoals beschreven in de onderstaande tabel.)

De resterende standaardbeveiligingsdescriptors worden afgeleid via overname.

Er zijn enkele toegangscontroles, zoals voor Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 functie-aanroepen, die niet op objectniveau kunnen worden uitgevoerd. Voor deze functies zijn er containerobjecten voor elk objecttype. Voor de standaardobjecttypen (bijvoorbeeld providers, bijschriften, filters), worden de bestaande Fwpm*GetSecurityInfo0 en functies Fwpm*SetSecurityInfo0 overbelast, zodat een null-GUID- parameter de gekoppelde container identificeert. Voor de andere objecttypen (bijvoorbeeld netwerk gebeurtenissen en IPsec-beveiligingskoppelingen), zijn er expliciete functies voor het beheren van de beveiligingsgegevens van de container.

BFE biedt ondersteuning voor automatische overname van toegangscontrole-ingangen (ACE's) van de Discretionary Access Control List (DACL). BFE biedt geen ondersteuning voor SACL (System Access Control List) ACE's. Objecten nemen ACE's over van hun container. Containers erven ACE's van de filterengine. De overdrachtsbanen worden weergegeven in het onderstaande diagram.

diagram waarin de ACE-doorgiftepaden worden weergegeven, te beginnen met 'Engine'.

Voor de standaardobjecttypen dwingt BFE alle algemene en standaardtoegangsrechten af. Daarnaast definieert WFP de volgende specifieke toegangsrechten.

WFP-toegangsrechten Beschrijving
FWPM_ACTRL_ADD
Vereist om een object toe te voegen aan een container.
FWPM_ACTRL_ADD_LINK
Vereist voor het maken van een koppeling naar een object. Als u bijvoorbeeld een filter wilt toevoegen dat verwijst naar een callout, moet de oproeper ADD_LINK toegang hebben tot de callout.
FWPM_ACTRL_BEGIN_READ_TXN
Vereist om een expliciete leestransactie te starten.
FWPM_ACTRL_BEGIN_WRITE_TXN
Vereist om een expliciete schrijftransactie te starten.
FWPM_ACTRL_CLASSIFY
Vereist om te classificeren op basis van een gebruikersmoduslaag.
FWPM_ACTRL_ENUM
Vereist om de objecten in een container op te sommen. De enumerator retourneert echter alleen objecten waartoe de aanroeper FWPM_ACTRL_READ toegang heeft.
FWPM_ACTRL_OPEN
Vereist voor het openen van een sessie met BFE.
FWPM_ACTRL_READ
Vereist om de eigenschappen van een object te lezen.
FWPM_ACTRL_READ_STATS
Vereist voor het lezen van statistieken.
FWPM_ACTRL_SUBSCRIBE
Vereist om u te abonneren op meldingen. Abonnees ontvangen alleen meldingen voor objecten waartoe ze FWPM_ACTRL_READ toegang hebben.
FWPM_ACTRL_WRITE
Het is vereist om motoropties in te stellen.

BFE slaat alle toegangscontroles voor bellers in de kernelmodus over.

Om te voorkomen dat beheerders zichzelf uit BFE vergrendelen, krijgen leden van de ingebouwde beheerdersgroep altijd FWPM_ACTRL_OPEN tot het engineobject. Een beheerder kan dus weer toegang krijgen via de volgende stappen.

  • Schakel de SE_TAKE_OWNERSHIP_NAME-bevoegdheid in.
  • Roep FwpmEngineOpen0aan. De aanroep slaagt omdat de aanroeper lid is van Ingebouwde Beheerders.
  • Verantwoordelijkheid nemen voor het motorobject. Dit lukt omdat de beller de bevoegdheid SE_TAKE_OWNERSHIP_NAME heeft.
  • Werk de DACL bij. Dit lukt omdat de eigenaar altijd WRITE_DAC toegang heeft

Omdat BFE eigen aangepaste controle ondersteunt, worden er geen algemene objecttoegangscontroles gegenereerd. De SACL wordt dus genegeerd.

WFP Vereiste toegangsrechten

In de onderstaande tabel ziet u de toegangsrechten die zijn vereist voor de functies WFP om toegang te krijgen tot verschillende filterplatformobjecten. De functies FwpmFilter* worden weergegeven als voorbeeld voor toegang tot de standaardobjecten. Alle andere functies die toegang hebben tot standaardobjecten, volgen het FwpmFilter* functions-toegangsmodel.

Functie Object gecontroleerd Toegang vereist
FwpmEngineOpen0 Motor FWPM_ACTRL_OPEN
FwpmEngineGetOption0- Motor FWPM_ACTRL_READ
FwpmEngineSetOption0- Motor FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Motor FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Motor FWPM_ACTRL_BEGIN_READ_TXN & FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Containerleverancier
Laag
Sub-Layer
Opmerking
Providercontext
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 VERWIJDEREN
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 DB FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0-
IPsecSaContextAddOutbound0-
IPsec SA DB FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA DB VERWIJDEREN
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA DB FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA DB VERWIJDEREN
IkeextSaGetById0 IKE SA DB FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Container FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Geen aanvullende toegangscontroles buiten die voor de afzonderlijke filters en providercontexten