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