Condividi tramite


Controllo di accesso (piattaforma di filtro Di Windows)

In Windows Filtering Platform (WFP), il servizio BFE (Base Filtering Engine) implementa il modello standard di controllo di accesso di Windows basato su token di accesso e descrittori di sicurezza.

Modello di controllo di accesso

I descrittori di sicurezza possono essere specificati quando si aggiungono nuovi oggetti WFP, ad esempio filtri e livelli secondari. I descrittori di sicurezza vengono gestiti usando le funzioni di gestione DEL WFP Fwpm*GetSecurityInfo0 e Fwpm*SetSecurityInfo0, dove * corrisponde al nome dell'oggetto WFP. Queste funzioni sono semanticamente identiche alle funzioni Windows GetSecurityInfo e SetSecurityInfo.

Nota

Le funzioni Fwpm*SetSecurityInfo0 non possono essere chiamate dall'interno di una transazione esplicita.

Nota

Le funzioni Fwpm*SetSecurityInfo0 possono essere chiamate solo dall'interno di una sessione dinamica se vengono usate per gestire un oggetto dinamico creato all'interno della stessa sessione.

Il descrittore di sicurezza predefinito per il motore di filtro (l'oggetto motore radice nel diagramma seguente) è il seguente.

  • Concedere diritti di accesso GENERIC_ALL (GA) al gruppo Amministrazione istrators predefinito.
  • Concedere GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) agli operatori di configurazione di rete.
  • Concedere i diritti di accesso GRGWGX agli identificatori di sicurezza del servizio seguenti (SSID): MpsSvc (Windows Firewall), NapAgent (agente protezione accesso alla rete), PolicyAgent (agente criteri IPsec), RpcSs (chiamata di procedura remota) e WdiServiceHost (host del servizio di diagnostica).
  • Concedere FWPM_ACTRL_OPEN e FWPM_ACTRL_CLASSIFY a tutti. Questi sono diritti di accesso specifici del WFP, descritti nella tabella seguente.

I descrittori di sicurezza predefiniti rimanenti vengono derivati tramite ereditarietà.

Esistono alcuni controlli di accesso, ad esempio per Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 chiamate di funzione, che non possono essere eseguite a livello di singolo oggetto. Per queste funzioni sono disponibili oggetti contenitore per ogni tipo di oggetto. Per i tipi di oggetto standard (ad esempio, provider, callout, filtri), le funzioni Fwpm*GetSecurityInfo0 e Fwpm*SetSecurityInfo0 esistenti vengono sottoposte a overload, in modo che un parametro GUID Null identifichi il contenitore associato. Per gli altri tipi di oggetto , ad esempio eventi di rete e associazioni di sicurezza IPsec, esistono funzioni esplicite per la gestione delle informazioni di sicurezza del contenitore.

BFE supporta l'ereditarietà automatica delle voci di controllo di accesso ACL (Discretionary Controllo di accesso List). BFE non supporta gli ACL (System Controllo di accesso List). Gli oggetti ereditano gli ACL dal contenitore. I contenitori ereditano gli ACL dal motore di filtro. I percorsi di propagazione sono illustrati nel diagramma seguente.

Diagram that shows the ACE propagation paths, starting with 'Engine'.

Per i tipi di oggetto standard, BFE applica tutti i diritti di accesso generici e standard. Inoltre, il WFP definisce i seguenti diritti di accesso specifici.

Diritto di accesso DEL WFP Descrizione
FWPM_ACTRL_ADD
Obbligatorio per aggiungere un oggetto a un contenitore.
FWPM_ACTRL_ADD_LINK
Obbligatorio per creare un'associazione a un oggetto . Ad esempio, per aggiungere un filtro che fa riferimento a un callout, il chiamante deve avere ADD_LINK accesso al callout.
FWPM_ACTRL_BEGIN_READ_TXN
Obbligatorio per avviare una transazione di lettura esplicita.
FWPM_ACTRL_BEGIN_WRITE_TXN
Obbligatorio per avviare una transazione di scrittura esplicita.
FWPM_ACTRL_CLASSIFY
Obbligatorio per la classificazione rispetto a un livello in modalità utente.
FWPM_ACTRL_ENUM
Obbligatorio per enumerare gli oggetti in un contenitore. Tuttavia, l'enumeratore restituisce solo oggetti a cui il chiamante ha accesso FWPM_ACTRL_READ.
FWPM_ACTRL_OPEN
Obbligatorio per aprire una sessione con BFE.
FWPM_ACTRL_READ
Obbligatorio per leggere le proprietà di un oggetto.
FWPM_ACTRL_READ_STATS
Obbligatorio per leggere le statistiche.
FWPM_ACTRL_SUBSCRIBE
Obbligatorio per sottoscrivere le notifiche. I Sottoscrittori riceveranno notifiche solo per gli oggetti a cui hanno accesso FWPM_ACTRL_READ.
FWPM_ACTRL_WRITE
Obbligatorio per impostare le opzioni del motore.

BFE ignora tutti i controlli di accesso per i chiamanti in modalità kernel.

Per evitare che gli amministratori si blocchino da BFE, ai membri del gruppo administrators predefinito viene sempre concesso FWPM_ACTRL_OPEN all'oggetto motore. Pertanto, un amministratore può ottenere nuovamente l'accesso tramite la procedura seguente.

  • Abilitare il privilegio edizione Standard_TAKE_OWNERSHIP_NAME.
  • Chiamare FwpmEngineOpen0. La chiamata ha esito positivo perché il chiamante è membro di Amministrazione istrator predefiniti.
  • Acquisire la proprietà dell'oggetto motore. Questa operazione ha esito positivo perché il chiamante dispone del privilegio edizione Standard_TAKE_OWNERSHIP_NAME.
  • Aggiornare il DACL. Ciò ha esito positivo perché il proprietario ha sempre WRITE_DAC accesso

Poiché BFE supporta il proprio controllo personalizzato, non genera controlli di accesso agli oggetti generici. Di conseguenza, l'elenco SACL viene ignorato.

Diritti di accesso necessari per il WFP

La tabella seguente mostra i diritti di accesso richiesti dalle funzioni WFP per accedere a vari oggetti piattaforma di filtro. Le funzioni FwpmFilter* sono elencate come esempio per l'accesso agli oggetti standard. Tutte le altre funzioni che accedono agli oggetti standard seguono il modello di accesso alle funzioni FwpmFilter* .

Funzione Oggetto selezionato Accesso richiesto
FwpmEngineOpen0 Motore FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Motore FWPM_ACTRL_READ
FwpmEngineSetOption0 Motore FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Motore FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Motore FWPM_ACTRL_BEGIN_READ_TXN e FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Provider di contenitori
Livello
Livello secondario
Callout
Contesto del provider
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filtro DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
Filtro FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Filtro contenitore
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Contenitore FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Contenitore 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 DELETE
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB FWPM_ACTRL_ENUM e 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 e FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Contenitore FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Nessun controllo di accesso aggiuntivo oltre quelli per i singoli filtri e contesti del provider