Слои ALE
Применение прикладного уровня (ALE) состоит из нескольких слоев фильтрации и множества соответствующих отбрасываемых слоев. Все уровни подсистемы фильтрации платформы фильтрации Windows (МПП), включая ALE, описаны в разделе Идентификаторы слоев фильтрации. Этот раздел содержит более подробное описание слоев фильтрации, которые являются частью ALE.
Фильтр на уровне FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V{4|6} сопоставляется для операций привязки сети, явных или неявных.
Если фильтр на этом уровне соответствует для авторизации необработанного создания сокета, будет установлен флаг FWP_CONDITION_FLAG_IS_RAW_ENDPOINT .
Если фильтр на этом уровне сопоставляется для авторизации получения неразборчивого режима, для поля FWP_CONDITION_ALE_PROMISCUOUS_MODE будет задано значение SIO_RCVALL. Описание SIO_RCVALL см. в разделе WSAIoctl.
Примечание
Это единственный слой, в котором можно фильтровать неразборчивый режим.
Если во время bind() не указан ни один порт, то есть порт имеет значение 0 (ноль), стек TCP/IP выберет порт из динамического диапазона портов (19152–65535). Выбранный порт будет классифицирован на этом уровне вместе с флагом FWP_CONDITION_FLAG_IS_WILDCARD_BIND .
Если локальный адрес не указан в вызове bind(), в поле локального адреса устанавливается значение FWP_EMPTY.
Фильтр на уровне FWPM_LAYER_ALE_AUTH_LISTEN_V{4|6} сопоставляется для вызовов прослушивания TCP.
Фильтр на уровне FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} сопоставляется для вызовов TCP accept() для первых пакетов UDP (одноадресной рассылки) из уникального кортежа удаленного адреса или порта, а также для первых входящих сообщений ICMP без ошибок (одноадресная рассылка) с уникальным типом, кодом и идентификатором ICMP.
Примечание
Протоколы, которые не являются TCP или ICMP, обрабатываются как UDP.
Tcp-пакеты, полученные необработанными сокетами, обрабатываются аналогично трафику UDP. То есть фильтруются только первая tcp send() и первая tcp recv() через необработанные сокеты.
Фильтр на уровне FWPM_LAYER_ALE_AUTH_CONNECT_V{4|6} сопоставляется для вызовов TCP connect(), для первых пакетов UDP, отправленных на уникальный удаленный адрес и кортеж портов, а также для первых исходящих сообщений ICMP без ошибок с уникальным типом, кодом и идентификатором ICMP.
Примечание
Протоколы, которые не являются TCP или ICMP, обрабатываются как UDP.
Tcp-пакеты, отправленные необработанными сокетами, обрабатываются аналогично трафику UDP. То есть фильтруются только первая tcp send() и первая tcp recv() через необработанные сокеты.
Фильтр на уровне FWPM_LAYER_ALE_FLOW_ESTABLISHED_V{4|6} сопоставляется после успешного завершения трехстороннего подтверждения TCP. Для трафика, отличного от TCP, фильтр сопоставляется сразу после сопоставления фильтров из AUTH_RECV_ACCEPT или AUTH_CONNECT слоев.
Фильтр на этом уровне не должен возвращать значение Block или Permit.
Этот уровень используется драйверами выносок для отслеживания состояния подключения, подробно описанного в документации по комплекту драйверов Windows .
Фильтр на уровне FWPM_LAYER_ALE_RESOURCE_RELEASE_V{4|6} сопоставляется после освобождения ресурсов, выделенных через RESOURCE_ASSIGNMENT .
Фильтр на уровне FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V{4|6} сопоставляется при закрытии подключенного потока TCP или конечной точки сокетов UDP.
Фильтр на уровне FWPM_LAYER_ALE_CONNECT_REDIRECT_V{4|6} позволяет изменять удаленные адреса и порты. Исходящее подключение будет перенаправляться на протяжении всего этого подключения.
Фильтр на уровне FWPM_LAYER_ALE_BIND_REDIRECT_V{4|6} позволяет изменять локальный адрес и порты базового сокета. Локальный сокет будет перенаправлен на время существования сокета.
Для каждого из описанных выше уровней ALE подсистема фильтрации содержит соответствующий слой сброса. Уровни отмены ALE используются выносками для ведения журнала. Пакеты и признаки, отброшенные на одном из уровней фильтрации ALE, указываются на соответствующий уровень сброса ALE.