Usando o controle de conexões com proxies

Há suporte para o acompanhamento de conexões com proxy em Windows 8 e versões posteriores do Windows.

Esse recurso do WFP facilita o acompanhamento de "registros" de redirecionamento do redirecionamento inicial de uma conexão para a conexão final com o destino. O WFP também permite que um driver de texto explicativo redirecione conexões.

Controle de conexões com proxy

Com a presença de vários proxies (por exemplo, desenvolvidos por ISVs diferentes), a conexão usada por uma parte para se comunicar com o destino final poderia, por sua vez, ser redirecionada por uma segunda parte; e essa nova conexão poderia ser redirecionada novamente pela parte original. Sem o rastreamento de conexão, a conexão original pode nunca chegar ao destino final, pois ela fica presa no loop de proxy infinito.

As adições aos Identificadores de Campo de Dados para dar suporte ao acompanhamento de conexão incluem:

FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
O caminho completo do aplicativo original para conexões de proxy. Se o aplicativo não tiver sido colocado em proxy, esse caminho será idêntico ao xxx_ALE_APP_ID.

FWPS_FIELD_Xxx_PACKAGE_ID
O identificador de pacote é um SID (identificador de segurança) que identifica o processo AppContainer associado.

Redirecionando conexões

Um driver de texto explicativo chama a função FwpsRedirectHandleCreate0 para criar um identificador que pode ser usado para redirecionar conexões TCP.

Esta seção inclui os tópicos a seguir:

Usando um identificador de redirecionamento

Consultando o estado de redirecionamento

Usando um identificador de redirecionamento

Antes que um texto explicativo de redirecionamento de conexão ALE possa redirecionar conexões para um processo local, ele deve obter um identificador de redirecionamento com a função FwpsRedirectHandleCreate0 e colocar o identificador na estrutura FWPS_CONNECT_REQUEST0 . O texto explicativo modifica a estrutura no classifyFn para as camadas de redirecionamento de conexão do ALE.

A estrutura FWPS_CONNECT_REQUEST0 contém os seguintes membros para redirecionamento:

Termo Descrição

localRedirectHandle

O identificador de redirecionamento que o driver de texto explicativo criou chamando a função FwpsRedirectHandleCreate0 .

localRedirectContext

Uma área de contexto do driver de texto explicativo que o driver de texto explicativo alocou chamando a função ExAllocatePoolWithTag .

localRedirectContextSize

O tamanho, em bytes, da área de contexto fornecida pelo texto explicativo.

Depois que um driver de texto explicativo terminar de usar um identificador de redirecionamento, ele deverá chamar a função FwpsRedirectHandleDestroy0 para destruir o identificador.

Consultando o estado de redirecionamento

Um driver de texto explicativo chama a função FwpsQueryConnectionRedirectState0 para obter o estado de redirecionamento de uma conexão. A enumeração FWPS_CONNECTION_REDIRECT_STATE é o tipo de retorno de uma chamada para a função FwpsQueryConnectionRedirectState0 .

Se o status de redirecionamento for FWPS_CONNECTION_NOT_REDIRECTED, o texto explicativo do ALE_CONNECT_REDIRECT poderá prosseguir para o proxy da conexão.

Se o status de redirecionamento for FWPS_CONNECTION_REDIRECTED_BY_SELF, o texto explicativo do ALE_CONNECT_REDIRECT deverá retornar FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE.

Se o status de redirecionamento for FWPS_CONNECTION_REDIRECTED_BY_OTHER, o texto explicativo do ALE_CONNECT_REDIRECT poderá prosseguir para o proxy da conexão se não confiar no resultado do outro inspetor.

Se o status de redirecionamento for FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF, o texto explicativo do ALE_CONNECT_REDIRECT não deverá executar o redirecionamento mesmo que os resultados de outros inspetores não sejam aceitáveis. Nesse caso, ele deve permitir ou bloquear a conexão (na camada ALE_AUTH_CONNECT).