筛选仲裁

筛选器仲裁是 Windows 筛选平台(WFP)中内置的逻辑,用于确定筛选器在做出网络流量筛选决策时如何相互交互。

筛选仲裁行为

以下行为描述了筛选器仲裁系统的特征:

  • 可以检查所有流量。 没有流量可以绕过给定层的筛选器。
  • 即使优先级较高的筛选器允许流量,也可以通过 Veto 标注筛选器阻止流量。
  • 多个提供程序可以检查同一层的流量。 例如,防火墙后跟入侵检测系统(IDS)筛选器,或 IPsec 后跟服务质量(QoS)筛选器可能会检查同一层的流量。

筛选模型

每个筛选器层划分为按优先级排序的子层(也称为权重)。 网络流量将子层从最高优先级遍历到最低优先级。 子层由开发人员使用 WFP API 创建和管理。

在每个子层中,按权重对筛选器进行排序。 网络流量指示匹配从最高权重到最低权重的筛选器。

筛选器仲裁算法应用于层中的所有子层,并在评估所有子层后做出最终筛选决策。 这提供了多个匹配功能。

在子层中,按如下所示执行筛选器仲裁:

  • 计算按权重从高到低排序的匹配筛选器列表。
  • 按顺序评估匹配的筛选器,直到返回“允许”或“阻止”(筛选器也可以返回“继续”),或直到列表用尽为止。
  • 跳过剩余的筛选器,并从最后一个评估的筛选器中返回作。

在层中,按如下方式执行筛选器仲裁:

  • 按从最高优先级到最低优先级在每个子层执行筛选器仲裁。
  • 评估所有子层,即使优先级较高的子层已决定阻止流量。
  • 根据以下部分所述的策略规则返回生成的作。

下图演示了一个示例子层配置。 外部框表示层。 内部框表示包含筛选器的子层。 筛选器中的通配符 \ 表示所有流量都与筛选器匹配。

示例子层配置

要绕过筛选器的唯一方法是,如果更高的权重筛选器允许或阻止同一子层内的流量。 相反,确保筛选器始终看到层中的所有流量的一种方法是添加包含与所有流量匹配的单个筛选器的子层。

可配置替代策略

下面介绍的规则控制层内的仲裁决定。 筛选器引擎使用这些规则来确定哪些子层作应用于网络流量。

基本策略如下所示。

  • 作按从最高优先级到最低优先级的子层的优先级顺序进行评估。
  • “Block”重写“Permit”。
  • “Block”是最终的(无法重写)并停止评估。 数据包将被丢弃。

基本策略不支持防火墙未重写的异常方案。 此类方案的典型示例包括:

  • 即使在存在第三方防火墙的情况下,也需要打开远程管理端口。
  • 需要打开端口才能正常运行的组件(例如通用即插即用 UPnP)。 如果管理员已显式启用组件,防火墙不应以无提示方式阻止流量。

为了支持上述方案,必须通过管理作替代权限,使筛选决策比另一个筛选决策更难替代。 此权限作为 FWPS_RIGHT_ACTION_WRITE 标志实现,并按筛选器设置。

评估算法将维护当前作(“Permit”或“Block”)以及 FWPS_RIGHT_ACTION_WRITE 标志。 该标志控制是否允许较低优先级的子层替代作。 通过在 FWPS_CLASSIFY_OUT0 结构中设置或重置 FWPS_RIGHT_ACTION_WRITE 标志,提供程序控制作的替代方式。 如果设置了标志,则表示可以重写该作。 如果该标志不存在,则无法重写该作。

行动 允许替代(已设置FWPS_RIGHT_ACTION_WRITE) 描述
许可证 是的 可以在另一个子层阻止流量。 这称为软许可证。
许可证 只有标注 否决才能阻止另一个子层的流量。 这称为硬许可。
是的 可以在另一个子层允许流量。 这称为软块。
不能在另一个子层允许流量。 这称为硬块。

可以通过将结构 FWPM_ACTION0 中的 类型 成员设置为 FWP_ACTION_BLOCKFWP_ACTION_PERMIT来设置筛选器作。 除了作类型外,筛选器还会公开标志 FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT。 如果清除了此标志,则作类型是硬的,并且不能被重写,除非 Veto 重写硬许可,如稍后所述,否则它是软的,可以通过高优先级作重写。

下表列出了筛选和标注作的默认行为。

行动 默认行为
筛选器许可证 软许可
标注许可证 软许可
筛选器块 硬块
标注块 软块

Veto 是筛选器在调用筛选器之前重置 FWPS_RIGHT_ACTION_WRITE 标志时返回的“阻止”作。 否决 将阻止使用硬许可允许的流量。

发出 否决 时,表示配置中存在冲突。 将采取以下作来缓解冲突。

  • 流量被阻止。

  • 生成审核事件。

  • 生成通知。

    注意

    通知由已订阅通知的所有实体接收。 这通常包括防火墙(为了检测错误配置)或应用程序(为了检测其特定筛选器是否已重写)。

    注意

    重写“硬许可”筛选器时,没有强制用户界面(UI)。 替代通知将发送到注册以接收它们的任何提供程序,允许防火墙或创建“允许”筛选器的应用程序显示要求用户作的 UI。 对于这些替代事件,没有一个平台 UI 通知的值,因为不想以无提示方式阻止的防火墙 ISV 可以通过在 WFP 中的不同位置注册,或者(不太首选)在标注驱动程序中处理其所有逻辑。 认为提示用户的 ISV 是个好主意,希望拥有用户体验并创建自己的 UI。

上述缓解行为可确保“硬允许”筛选器不会以无提示方式被“阻止”筛选器重写,并涵盖防火墙不允许阻止远程管理端口的方案。 为了以无提示方式替代“硬许可”筛选器,防火墙必须将其筛选器添加到优先级更高的子层中。

注意

由于没有跨层仲裁,因此允许使用“硬许可”的流量仍可能在另一层被阻止。 策略作者有责任确保在必要时允许每个层的流量。

请求打开端口的用户应用程序会将可重写筛选器添加到低优先级子层。 防火墙可以订阅筛选器添加通知事件,并在用户(或策略)验证后添加匹配的筛选器。

筛选器权重分配