Condividi tramite


Controllo di accesso (piattaforma di filtro Di Windows)

In Windows Filtering Platform (WFP), il servizio BFE (Base Filtering Engine) implementa lo standard modello 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 * sta per il nome dell'oggetto WFP. Queste funzioni sono semanticamente identiche alle funzioni diGetSecurityInfo di Windowse SetSecurityInfo.

Nota

Impossibile chiamare le funzioni Fwpm*SetSecurityInfo0 all'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 GENERIC_ALL (GA) diritti di accesso al gruppo Amministratori predefinito.
  • Concedere i diritti di accesso GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) agli operatori di configurazione di rete.
  • Concedere GRGWGX diritti di accesso ai seguenti identificatori di sicurezza del servizio: MpsSvc (Windows Firewall), NapAgent (agente di protezione dell'accesso alla rete), PolicyAgent (agente dei criteri IPsec), RpcSs (servizio di 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 di Fwpm*GetSecurityInfo0 esistenti e Fwpm*SetSecurityInfo0 vengono sottoposte a overload, in modo che un GUID null parametro 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 (ACEs) nella lista DACL (Discretionary Access Control List). BFE non supporta le ACE delle SACL (System Access Control 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.

Diagramma che mostra i percorsi di propagazione ACE, a partire da '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
Richiesto per classificare in relazione 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 SE_TAKE_OWNERSHIP_NAME.
  • Effettuare la chiamata FwpmEngineOpen0. La chiamata ha esito positivo perché il chiamante è membro di Amministratori predefiniti.
  • Acquisire la proprietà dell'oggetto motore. Questa operazione ha esito positivo perché il chiamante ha il privilegio SE_TAKE_OWNERSHIP_NAME.
  • Aggiornare il DACL. Ciò ha esito positivo perché il proprietario ha sempre accesso di WRITE_DAC.

Poiché BFE supporta il proprio controllo personalizzato, non genera controlli di accesso agli oggetti generici. Di conseguenza, il 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 accedere agli oggetti standard. Tutte le altre funzioni che accedono agli oggetti standard seguono il modello di accesso alle funzioni FwpmFilter*.

Funzione Oggetto controllato Accesso obbligatorio
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 & FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Provider di contenitori
Strato
Sub-Layer
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 ELIMINA
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 Database FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
Database delle Associazioni di Sicurezza IPsec (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 & FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA DB FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA DB ELIMINA
IkeextSaGetById0 IKE SA DB FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA DB FWPM_ACTRL_ENUM & 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