远程标识授权

远程标识授权 IPsec 策略方案要求入站连接来自一组特定的远程安全主体,这些主体在 Windows 安全描述符 (SD) 访问控制列表 (ACL) 中指定的。 如果由 IPsec) 确定的远程标识 (与允许的标识集不匹配,则将删除连接。 必须结合其中一个传输模式策略选项指定此策略。

如果启用了 AuthIP,则可以指定两个安全描述符,一个对应于 AuthIP main模式,另一个对应于 AuthIP 扩展模式。

可能的协商发现传输模式方案的一个示例是“使用 IPsec 传输模式保护除 ICMP 之外的所有单播数据流量,启用协商发现,并限制根据安全描述符 SD1 (对应于 IKE/AuthIP main模式) 和安全描述符 SD2 (对应于 AuthIP 扩展模式) 的远程标识的入站访问, 对应于 TCP 本地端口 5555 的所有单播流量。”

若要以编程方式实现此示例,请使用以下 WFP 配置。

在 FWPM_LAYER_IKEEXT_V{4|6} 设置 MM 协商策略

  1. 添加以下一个或两个 MM 策略提供程序上下文。

    • 对于 IKE, FWPM_IPSEC_IKE_MM_CONTEXT 类型的策略提供程序上下文。
    • 对于 AuthIP, FWPM_IPSEC_AUTHIP_MM_CONTEXT 类型的策略提供程序上下文。

    注意

    将协商通用密钥模块,并应用相应的 MM 策略。 如果同时支持 IKE 和 AuthIP,则 AuthIP 是首选密钥模块。

  2. 对于步骤 1 中添加的每个上下文,请添加具有以下属性的筛选器。

    Filter 属性
    筛选条件 空白。 所有流量都将与筛选器匹配。
    providerContextKey 步骤 1 中添加的 MM 提供程序上下文的 GUID。

在 FWPM_LAYER_IPSEC_V{4|6} 设置 QM 和 EM 协商策略

  1. 添加以下一个或两个 QM 传输模式策略提供程序上下文,并设置 IPSEC_POLICY_FLAG_ND_SECURE 标志。

    • 对于 IKE, FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT 类型的策略提供程序上下文。
    • 对于 AuthIP,是 FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT 类型的策略提供程序上下文,其中包含 AuthIP 扩展模式 (EM) 协商策略。

    注意

    将协商通用密钥模块,并应用相应的 QM 策略。 如果同时支持 IKE 和 AuthIP,则 AuthIP 是首选密钥模块。

  2. 对于步骤 1 中添加的每个上下文,请添加具有以下属性的筛选器。

    Filter 属性
    筛选条件 空白。 所有流量都将与筛选器匹配。
    providerContextKey 步骤 1 中添加的 QM 提供程序上下文的 GUID。

FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} 设置每个数据包的入站筛选规则

  1. 添加具有以下属性的筛选器。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V{4|6}
    rawContext FWPM_CONTEXT_IPSEC_INBOUND_PERSIST_CONNECTION_SECURITY
  2. 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL 筛选条件 **IPPROTO_ICMP{V6}**这些常量在 winsock2.h 中定义。
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6} 设置出站每数据包筛选规则

  1. 添加具有以下属性的筛选器。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V{4|6}
    rawContext FWPM_CONTEXT_IPSEC_OUTBOUND_NEGOTIATE_DISCOVER
  2. 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL 筛选条件 IPPROTO_ICMP{V6}这些常量在 winsock2.h 中定义。
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} 设置每个连接的入站筛选规则

  1. 添加具有以下属性的筛选器。 仅当入站连接尝试受 IPsec 保护时,此筛选器才允许这些尝试。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_INITIATE_SECURE_V{4|6}
  2. 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL 筛选条件 **IPPROTO_ICMP{V6}**这些常量在 winsock2.h 中定义。
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS
  3. 添加具有以下属性的筛选器。 如果 SD1 和 SD2 都允许相应的远程标识,则此筛选器将允许与 TCP 端口 5555 的入站连接。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL 筛选条件 IPPROTO_TCP此常量在 winsock2.h 中定义。
    FWPM_CONDITION_IP_LOCAL_PORT 筛选条件 5555
    FWPM_CONDITION_ALE_REMOTE_MACHINE_ID SD1
    FWPM_CONDITION_ALE_REMOTE_USER_ID SD2
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_INITIATE_SECURE_V{4|6}
  4. 添加具有以下属性的筛选器。 此筛选器将阻止与 TCP 端口 5555 不匹配的任何其他入站连接。

    Filter 属性
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL 筛选条件 IPPROTO_TCP此常量在 winsock2.h 中定义。
    FWPM_CONDITION_IP_LOCAL_PORT 筛选条件 5555
    action.type FWP_ACTION_BLOCK

示例代码:使用传输模式

ALE 层

内置标注标识符

筛选条件

筛选层标识符

FWPM_ACTION0

FWPM_PROVIDER_CONTEXT_TYPE