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