Операция МПП
Платформа фильтрации Windows (МПП) выполняет свои задачи путем интеграции следующих базовых сущностей: слои, фильтры, оболочки и выноски.
Слои
Слой — это контейнер, управляемый подсистемой фильтров, функция которого заключается в упорядочении фильтров в наборы. Слой не является модулем в сетевом стеке. Каждый слой имеет схему, определяющую тип фильтров, которые можно добавить в него. Дополнительные сведения см. в разделе Условия фильтрации, доступные на каждом уровне фильтрации .
Слои могут содержать подслои для управления конфликтующими требованиями фильтра, такими как "Блокировать TCP-порты выше 1024" и "Открытый порт 1080". Правила управления конфликтами фильтрации определяются арбитражем фильтров.
МПП содержит набор встроенных подслоек. Каждый слой наследует все встроенные подслои. Пользователи также могут добавлять собственные подслои.
Список слоев подсистемы фильтрации приведен в справочном разделе Фильтрация идентификаторов слоев.
Фильтры
Фильтр — это правило, которое сопоставляется с входящими или исходящими пакетами. Правило сообщает механизму фильтрации, что делать с пакетом, включая вызов модуля выноски для глубокой проверки пакетов или потоков. Например, фильтр может указать "Блокировать трафик с TCP-портом больше 1024" или "Call out to IDS for all traffic that not secured".
Фильтр во время загрузки — это фильтр, который применяется во время загрузки сразу после запуска драйвера стека TCP/IP (tcpip.sys). Фильтр времени загрузки отключается при запуске BFE. Фильтр помечается как время загрузки, устанавливая флаг FWPM_FILTER_FLAG_BOOTTIME при вызове FwpmFilterAdd0 .
Фильтр времени выполнения — это фильтр, который применяется после запуска BFE. Фильтр времени выполнения может быть статическим, динамическим или постоянным в зависимости от способа его создания. Дополнительные сведения о различных типах фильтров времени выполнения и их времени существования см. в разделе Управление объектами .
Оболочек совместимости
Оболочка — это компонент режима ядра, который принимает решения о фильтрации путем классификации по уровням подсистемы фильтрации. Каждая оболочка классифицирует по одному или нескольким слоям. Например, оболочка модуля транспортного уровня классифицирует по уровню входящего транспорта, уровню исходящего транспорта и уровню ALE Connect и Receive-Accept для первого пакета потока.
Так как пакеты, потоки и события проходят через сетевой стек, оболочки анализируют их для извлечения классификируемых условий и значений, а затем вызывают подсистему фильтров для их оценки по фильтрам в заданном слое. Подсистема фильтров может вызывать одну или несколько выносок в рамках классификации. Оболочки выполняют фактическое удаление пакетов, потоков и событий на основе результата классификации, выполняемой подсистемой фильтрации.
Выноски
Выноска — это набор функций, предоставляемых драйвером и используемых для специализированной фильтрации. Они используются для анализа пакетов и управления ими, таких как проверка на наличие вирусов, проверка родительского контроля на наличие неуместного содержимого, анализ данных пакетов для средств мониторинга. Некоторые выноски, например драйвер преобразования сетевых адресов (NAT), встроены в операционную систему. Другие, такие как выноска родительского контроля HTTP или выноска системы обнаружения вторжений (IDS), могут предоставляться независимыми поставщиками программного обеспечения. Функции выноски вызываются подсистемой фильтров, когда соответствующий фильтр выносок сопоставляется на заданном уровне.
Выноски можно зарегистрировать на любом из уровней ПППП в режиме ядра. Выноски могут возвращать действие ("Блокировать", "Разрешить", а при выполнении проверки потока "Отложить", "Требуется больше данных", "Удалить подключение"), а также могут изменять и защищать входящий и исходящий сетевой трафик.
После регистрации выноски в подсистеме фильтров она может получать сетевой трафик для обработки. Трафик может быть пакетами, потоками или событиями в зависимости от уровня. Приложение или агент брандмауэра вызывает передачу трафика в выноску путем добавления фильтра с действием "Выноска" и идентификатором выноски является идентификатор этой выноски. Выноски могут указать подсистеме фильтров возвращать оболочке "Блокировать" или "Разрешить". Выноски также могут возвращать "Продолжить", чтобы разрешить другим фильтрам обрабатывать пакет.
Один драйвер выносок может предоставить несколько выносок.
Перед использованием выноски необходимо добавить (с помощью FwpmCalloutAdd0) и зарегистрировать (с помощью FwpsCalloutRegister). Перед созданием фильтров, ссылающихся на выноску, требуется вызов FwpmCalloutAdd0 . Вызов FwpsCalloutRegister требуется, прежде чем МПП сможет вызвать выноску при сопоставлении фильтров выносок. По умолчанию фильтры, ссылающиеся на выноски, которые были добавлены, но еще не зарегистрированы в подсистеме фильтров, обрабатываются как фильтры "Block". Порядок вызовов FwpmCalloutAdd0 и FwpsCalloutRegister не имеет значения. Постоянную выноску необходимо добавить только один раз и регистрировать при каждом запуске драйвера, реализующего выноску (например, после перезагрузки).
Классификация
Классификация — это процесс применения фильтров к сетевому трафику (пакету, потоку или событию), чтобы определить результат "Разрешить" или "Блокировать" для этого трафика. Для одного пакета, потока или события существует один вызов классификации для каждого слоя.
Во время классификации свойства (например, исходный адрес) пакета, потока или события сравниваются с условиями фильтра, заданными для фильтров на уровне, где вызывается классификация. При обнаружении совпадений для определения результата процесса классификации используется алгоритм арбитража фильтра .
Запрос классификации активируется оболочкой .
Действия классификации могут быть следующими:
- Разрешение
- Блокировать
- Выноска
- Разрешение
- Блокировать
- Продолжить
- отложить;
- Требуется больше данных
- Удаление подключения
Операция МПП
Во время загрузки, как только запускается драйвер стека TCP/IP (tcpip.sys), подсистема фильтрации в режиме ядра применяет политику безопасности системы с помощью фильтров времени загрузки.
После запуска базовой подсистемы фильтрации (BFE) в пользовательском режиме на платформу добавляются постоянные фильтры, отключаются фильтры времени загрузки и отправляются уведомления тем драйверам выносок, которые подписаны с помощью FwpmBfeStateSubscribeChanges0. Уведомления отправляются сразу после завершения инициализации BFE. Теперь платформа готова к регистрации выносок и добавлению объектов среды выполнения.
Переход от времени загрузки к постоянным фильтрам может составлять несколько секунд или даже дольше на медленном компьютере. Он является атомарным, поэтому если у поставщика есть и время загрузки, и постоянный фильтр, окно никогда не будет, когда ни один из этих фильтров не действует.
После запуска BFE фильтры времени выполнения могут добавляться агентами брандмауэра или пользовательскими решениями брандмауэра. BFE обрабатывает эти фильтры и отправляет их на соответствующий уровень обработчика фильтров для принудительного применения. BFE также принимает параметры проверки подлинности и отправляет эти параметры в модули ключей IPsec (IKE/AuthIP). Дополнительные сведения см. в разделе Конфигурация IPsec .
В любое время фильтры и параметры проверки подлинности можно добавить, удалить или изменить в системе с помощью интерфейса RPC, предоставляемого BFE. Вложенные слои и модули выносок также можно добавлять или удалять.
Поток данных:
- Пакет входит в сетевой стек.
- Сетевой стек находит и вызывает оболочку.
- Оболочка вызывает процесс классификации на определенном уровне.
- Во время классификации фильтры сопоставляются и выполняется результирующий действие. (См . раздел Арбитраж фильтров.)
- Если в процессе классификации сопоставляются какие-либо фильтры выносок, вызываются соответствующие выноски.
- Оболочка действует на окончательное решение о фильтрации (например, удаление пакета).
Поток исходящих данных соответствует аналогичной схеме.
В следующих разделах также описывается деятельность МПП.
Связанные темы