筛选仲裁

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

筛选仲裁行为

以下行为特征是筛选器仲裁系统:

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

筛选模型

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

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

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

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

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

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

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

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

sample sub-layer configuration

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

可配置替代策略

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

基本策略如下所示。

  • 操作按从最高优先级到最低优先级的子层的优先级顺序进行评估。
  • “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 描述
允许 可以在另一个子层阻止流量。 这称为软许可证。
允许 流量只能被标注 “Veto”阻止在另一个子层。 这称为硬许可。
阻止 可以在另一个子层允许流量。 这称为软块。
阻止 不能在另一个子层允许流量。 这称为硬块。

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

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

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

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

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

  • 流量被阻止。

  • 生成审核事件。

  • 生成通知。

    注意

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

    注意

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

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

注意

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

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

筛选器权重分配