Uso del rilevamento connessioni proxied
Il rilevamento delle connessioni proxied è supportato in Windows 8 e versioni successive di Windows.
Questa funzionalità WFP facilita il rilevamento dei "record" di reindirizzamento dal reindirizzamento iniziale di una connessione alla connessione finale alla destinazione. IL WFP consente anche a un chiamante di reindirizzare le connessioni.
Rilevamento connessioni proxied
Con la presenza di più proxy (ad esempio, sviluppati da isv diversi) la connessione utilizzata da una parte per comunicare con la destinazione finale potrebbe essere reindirizzata a sua volta da una seconda parte; e tale nuova connessione potrebbe essere nuovamente reindirizzata dalla parte originale. Senza il rilevamento delle connessioni, la connessione originale potrebbe non raggiungere mai la destinazione finale perché viene bloccata nel ciclo proxy infinito.
Le aggiunte agli identificatori di campo dati per supportare il rilevamento delle connessioni includono:
FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Percorso completo dell'applicazione originale per le connessioni proxy. Se l'applicazione non è stata proxied, questo percorso è identico al xxx_ALE_APP_ID.
FWPS_FIELD_Xxx_PACKAGE_ID
L'identificatore del pacchetto è un identificatore di sicurezza (SID) che identifica il processo AppContainer associato.
Reindirizzamento delle connessioni
Un driver di callout chiama la funzione FwpsRedirectHandleCreate0 per creare un handle che può essere usato per reindirizzare le connessioni TCP.
Questa sezione include gli argomenti seguenti:
Uso di un handle di reindirizzamento
Esecuzione di query sullo stato di reindirizzamento
Uso di un handle di reindirizzamento
Prima che un callout di reindirizzamento connessione ALE possa reindirizzare le connessioni a un processo locale, deve ottenere un handle di reindirizzamento con la funzione FwpsRedirectHandleCreate0 e inserire l'handle nella struttura FWPS_CONNECT_REQUEST0 . Il callout modifica la struttura nel livello di classificazioneFn per i livelli di reindirizzamento di connessione ALE.
La struttura FWPS_CONNECT_REQUEST0 contiene i membri seguenti per il reindirizzamento:
Termine | Descrizione |
---|---|
localRedirectHandle |
Handle di reindirizzamento creato dal driver di callout chiamando la funzione FwpsRedirectHandleCreate0 . |
localRedirectContext |
Area del contesto del driver callout allocata dal driver callout chiamando la funzione ExAllocatePoolWithTag . |
localRedirectContextSize |
Dimensioni, in byte, dell'area di contesto fornita dal callout. |
Al termine dell'uso di un handle di reindirizzamento, un driver di callout deve chiamare la funzione FwpsRedirectHandleDestroy0 per eliminare l'handle.
Esecuzione di query sullo stato di reindirizzamento
Un driver di callout chiama la funzione FwpsQueryConnectionRedirectState0 per ottenere lo stato di reindirizzamento di una connessione. L'enumerazione FWPS_CONNECTION_REDIRECT_STATE è il tipo restituito per una chiamata alla funzione FwpsQueryConnectionRedirectState0 .
Se lo stato del reindirizzamento è FWPS_CONNECTION_NOT_REDIRECTED, il callout ALE_CONNECT_REDIRECT può procedere al proxy della connessione.
Se lo stato di reindirizzamento è FWPS_CONNECTION_REDIRECTED_BY_SELF, il callout ALE_CONNECT_REDIRECT deve restituire FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE.
Se lo stato del reindirizzamento è FWPS_CONNECTION_REDIRECTED_BY_OTHER, il callout ALE_CONNECT_REDIRECT potrebbe procedere al proxy della connessione se non considera attendibile il risultato dell'altro controllo.
Se lo stato di reindirizzamento è FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF, il callout ALE_CONNECT_REDIRECT non deve eseguire il reindirizzamento anche se i risultati di altri controlli non sono accettabili. In questo caso, deve consentire o bloccare la connessione (al livello ALE_AUTH_CONNECT).