Использование отслеживания прокси-подключений
Отслеживание прокси-подключений поддерживается в Windows 8 и более поздних версиях Windows.
Эта функция МПП упрощает отслеживание "записей" перенаправления от первоначального перенаправления подключения к окончательному подключению к месту назначения. ВПП также позволяет драйверу выноски перенаправлять подключения.
Отслеживание прокси-подключений
При наличии нескольких прокси-серверов (например, разработанных разными независимыми поставщиками программного обеспечения) подключение, используемое одной стороной для связи с конечным назначением, в свою очередь, может быть перенаправлено второй стороной; и что новое подключение может быть перенаправлено исходной стороной. Без отслеживания подключения исходное подключение может никогда не достичь конечного пункта назначения, так как оно зависает в бесконечном цикле прокси-сервера.
К идентификаторам полей данных для поддержки отслеживания подключений относятся:
FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Полный путь к исходному приложению для прокси-подключений. Если приложение не было прокси-сервером, этот путь идентичен xxx_ALE_APP_ID.
FWPS_FIELD_Xxx_PACKAGE_ID
Идентификатор пакета — это идентификатор безопасности (SID), который идентифицирует связанный процесс AppContainer.
Перенаправление подключений
Драйвер выноски вызывает функцию FwpsRedirectHandleCreate0 , чтобы создать дескриптор, который можно использовать для перенаправления TCP-подключений.
Этот раздел содержит следующие подразделы:
Использование дескриптора перенаправления
Запрос состояния перенаправления
Использование дескриптора перенаправления
Прежде чем выноска перенаправления подключения ALE сможет перенаправлять подключения к локальному процессу, она должна получить дескриптор перенаправления с функцией FwpsRedirectHandleCreate0 и поместить дескриптор в структуру FWPS_CONNECT_REQUEST0 . Выноска изменяет структуру в classifyFn для уровней перенаправления подключения ALE.
Структура FWPS_CONNECT_REQUEST0 содержит следующие элементы для перенаправления:
Термин | Описание |
---|---|
localRedirectHandle |
Дескриптор перенаправления, созданный драйвером выноски путем вызова функции FwpsRedirectHandleCreate0 . |
localRedirectContext |
Область контекста драйвера выноски, выделенная драйвером выноски путем вызова функции ExAllocatePoolWithTag . |
localRedirectContextSize |
Размер (в байтах) области контекста, предоставленной выноской. |
После того как драйвер выноски завершит использование дескриптора перенаправления, он должен вызвать функцию FwpsRedirectHandleDeки0 , чтобы уничтожить дескриптор.
Запрос состояния перенаправления
Драйвер выноски вызывает функцию FwpsQueryConnectionRedirectState0 , чтобы получить состояние перенаправления подключения. Перечисление FWPS_CONNECTION_REDIRECT_STATE является типом возвращаемого значения для вызова функции FwpsQueryConnectionRedirectState0 .
Если состояние перенаправления FWPS_CONNECTION_NOT_REDIRECTED, ALE_CONNECT_REDIRECT выноска может перейти к прокси-серверу подключения.
Если состояние перенаправления — FWPS_CONNECTION_REDIRECTED_BY_SELF, выноска ALE_CONNECT_REDIRECT должна возвращать FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE.
Если состояние перенаправления FWPS_CONNECTION_REDIRECTED_BY_OTHER, выноска ALE_CONNECT_REDIRECT может перейти к прокси-серверу подключения, если она не доверяет результату другого инспектора.
Если состояние перенаправления FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF, выноска ALE_CONNECT_REDIRECT не должна выполнять перенаправление, даже если результаты других инспекторов недопустимы. В этом случае необходимо разрешить или заблокировать подключение (на уровне ALE_AUTH_CONNECT).