Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Windows Filtering Platform (WFP) esegue le attività integrando le entità di base seguenti: livelli , filtri , shime callout .
Strati
Un livello è un contenitore gestito dal motore di filtro la cui funzione consiste nell'organizzare i filtri in set. Un livello non è un modulo nello stack di rete. Ogni livello ha uno schema che definisce il tipo di filtri che può essere aggiunto. Per altre informazioni, vedere Condizioni di filtro disponibili in Ogni livello di filtro.
I livelli possono contenere livelli secondari per gestire i requisiti di filtro in conflitto, ad esempio "Blocca porte TCP superiori a 1024" e "Apri porta 1080". Le regole per la gestione dei conflitti di filtro sono determinate da arbitraggio del filtro.
WFP contiene un set di livelli secondari predefiniti. Ogni livello eredita tutti i livelli secondari predefiniti. Gli utenti possono anche aggiungere i propri livelli secondari.
L'elenco dei livelli del motore di filtro è disponibile nell'argomento della sezione di riferimento Filtrare gli identificatori del livello.
Filtri
Un filtro è una regola corrispondente ai pacchetti in ingresso o in uscita. La regola indica al motore di filtro cosa fare con il pacchetto, incluso per chiamare un modulo callout per l'ispezione approfondita di pacchetti o flussi. Ad esempio, un filtro può specificare "Blocca il traffico con una porta TCP maggiore di 1024" o "Call out to IDS for all traffic that not secured".
Un filtro di avvio è un filtro applicato al momento dell'avvio non appena viene avviato il driver dello stack TCP/IP (tcpip.sys). Un filtro di avvio è disabilitato all'avvio di BFE. Un filtro viene contrassegnato come boot-time impostando il flag FWPM_FILTER_FLAG_BOOTTIME quando viene richiamato FwpmFilterAdd0.
Un filtro di runtime è un filtro applicato dopo l'avvio di BFE. Un filtro di runtime può essere statico, dinamico o persistente a seconda del modo in cui è stato creato. Per altre informazioni sui diversi tipi di filtri di runtime e sulla relativa durata, vedere Object Management.
Spessori
Un shim è un componente in modalità kernel che prende decisioni di filtro classificando i livelli del motore di filtro. Ogni shim classifica uno o più livelli. Ad esempio, lo shim Transport Layer Module classifica il livello Trasporto in ingresso, il livello Trasporto in uscita e i livelli ALE Connect e Receive-Accept per il primo pacchetto di un flusso.
Come pacchetti, flussi ed eventi attraversano lo stack di rete, gli shim li analizzano per estrarre le condizioni e i valori classificabili e quindi chiamare nel motore di filtro per valutarli rispetto ai filtri in un determinato livello. Il motore di filtro può richiamare uno o più callout come parte della classificazione. Gli shim eseguono l'effettiva eliminazione di pacchetti, flussi ed eventi in base al risultato della classificazione eseguita dal motore di filtro.
Callout
Un callout è un set di funzioni esposte da un driver e usate per il filtro specializzato. Vengono usati per eseguire l'analisi e la manipolazione dei pacchetti, ad esempio l'analisi di virus, i controlli genitori cercano contenuto inappropriato, l'analisi dei dati dei pacchetti per gli strumenti di monitoraggio. Alcuni callout, ad esempio il driver NAT (Network Address Translation), sono incorporati nel sistema operativo. Altri, ad esempio un callout di Controllo genitori HTTP o il callout del sistema di rilevamento delle intrusioni (IDS), possono essere forniti da fornitori di software indipendenti (ISV). Le funzioni di callout vengono richiamate dal motore di filtro quando un filtro callout corrispondente viene confrontato a un determinato livello.
I callout possono essere registrati in uno dei livelli WFP in modalità kernel. I callout possono restituire un'azione ("Blocca", "Consenti" e, durante l'esecuzione dell'ispezione dei flussi, "Rinvia", "Necessità di altri dati", "Drop connection") e possono modificare e proteggere il traffico di rete in ingresso e in uscita.
Una volta registrato un callout con il motore di filtro, può ricevere il traffico di rete da elaborare. Il traffico può essere pacchetti, flussi o eventi a seconda del livello. Un agente dell'applicazione o del firewall fa sì che il traffico venga passato a un callout aggiungendo un filtro la cui azione è "Callout" e il cui ID callout è l'identificatore del callout. I callout possono indicare al motore di filtro di restituire "Block" o "Permit" allo shim. I callout possono anche restituire "Continua" per consentire ad altri filtri di elaborare il pacchetto.
Più callout possono essere esposti da un driver callout.
È necessario aggiungere un callout (con FwpmCalloutAdd0) e registrato (con FwpsCalloutRegister) prima di poterlo usare. È necessaria una chiamata a FwpmCalloutAdd0 prima della creazione di filtri che fanno riferimento al callout. Una chiamata a FwpsCalloutRegister è necessaria prima che IL WFP possa richiamare il callout quando vengono confrontati i filtri di callout. Per impostazione predefinita, i filtri che fanno riferimento ai callout aggiunti ma che non sono ancora stati registrati con il motore di filtro vengono considerati filtri "Blocca". L'ordine di chiamata FwpmCalloutAdd0 e FwpsCalloutRegister non è importante. Un callout permanente deve essere aggiunto una sola volta e deve essere registrato ogni volta che il driver che implementa il callout viene avviato (ad esempio, dopo un riavvio).
Classificazione
La classificazione è il processo di applicazione di filtri al traffico di rete (pacchetto, flusso o evento) per determinare il risultato di "Permit" o "Block" per tale traffico. Per un pacchetto, un flusso o un evento è presente una chiamata di classificazione per livello.
Durante la classificazione, le proprietà (ad esempio, l'indirizzo di origine) del pacchetto, del flusso o dell'evento vengono confrontate con le condizioni di filtro impostate sui filtri a livello in cui viene richiamata la classificazione. Quando vengono trovate corrispondenze, l'algoritmo di di filter arbitration viene usato per determinare il risultato del processo di classificazione.
Una richiesta di classificazione viene attivata da uno shim.
Le azioni di classificazione possono essere:
- Permettere
- Blocco
- Callout
- Permettere
- Blocco
- Continuare
- Differire
- Sono necessari altri dati
- Eliminare la connessione
Operazione WFP
Al momento dell'avvio, non appena viene avviato il driver dello stack TCP/IP (tcpip.sys), il motore di filtro in modalità kernel applica i criteri di sicurezza del sistema tramite filtri di avvio.
Dopo l'avvio del motore di filtro di base (BFE) in modalità utente, i filtri permanenti vengono aggiunti alla piattaforma, i filtri di avvio vengono disabilitati e le notifiche vengono inviate a tali driver callout sottoscritti usando FwpmBfeStateSubscribeChanges0. Le notifiche vengono inviate immediatamente dopo il completamento dell'inizializzazione BFE. La piattaforma è ora pronta per la registrazione dei callout e per l'aggiunta di oggetti in fase di esecuzione.
La transizione dal tempo di avvio ai filtri permanenti può essere di alcuni secondi o ancora più lunga in un computer lento. È atomico, quindi se un provider ha sia un tempo di avvio che un filtro permanente, non ci sarà mai una finestra quando nessuno dei due è attivo.
Dopo l'avvio di BFE, i filtri di runtime possono essere aggiunti dagli agenti firewall o da soluzioni firewall personalizzate. BFE elabora questi filtri e li invia al livello del motore di filtro appropriato per l'imposizione. BFE accetta anche le impostazioni di autenticazione e invia queste impostazioni ai moduli di keying IPsec (IKE/AuthIP). Per altre informazioni, vedere di configurazione IPsec.
In qualsiasi momento, i filtri e le impostazioni di autenticazione possono essere aggiunti, rimossi o modificati nel sistema tramite l'interfaccia RPC esposta dall'autenticazione BFE. I livelli secondari e i moduli callout possono essere aggiunti o rimossi in modo analogo.
Flusso di dati:
- Un pacchetto entra nello stack di rete.
- Lo stack di rete trova e chiama uno shim.
- Lo shim richiama il processo di classificazione a un determinato livello.
- Durante la classificazione, i filtri vengono confrontati e viene eseguita l'azione risultante. (Vedere Filter Arbitration.)
- Se durante il processo di classificazione vengono confrontati filtri callout, vengono richiamati i callout corrispondenti.
- Lo shim agisce sulla decisione finale di filtro (ad esempio, eliminare il pacchetto).
Il flusso di dati in uscita segue un modello simile.
Gli argomenti seguenti descrivono ulteriormente il funzionamento del WFP.
Argomenti correlati