内容检查标注

当 Citrix ADC 设备发送 ICAP 请求时,ICAP 服务器会使用状态代码指定响应状态和要由 ICAP 客户端(Citrix ADC 设备)执行的操作。例如,如果对于 REQMOD ICAP 请求,ICAP 响应中的状态代码为 200 OK,并且如果设置了 res-hdr,那么 ICAP 客户端可以将收到的响应从 ICAP 服务器发送给用户。但是,如果没有设置 res-hdr,则会计师客户端(Citrix ADC 设备)可以将原始请求或调整请求转发到原始后端服务器。

但在某些情况下,ICAP 服务器无法做出最终决定。相反,它只向设备提供请求的信息,设备可以根据策略评估进行决定。在这种情况下,ICAP 客户端不能仅依赖于 ICAP 响应状态代码,而是查看接收到的 ICAP 标头并评估标头上的策略表达式并应用相关操作。

以下是一些需要 ICAP 内容检查标注的用例:

  • 在收到 SSH 握手请求后,ICAP 客户端(Citrix ADC 设备)可能会对访问的域进行分类,并决定是继续还是删除握手。
  • 收到服务的 HTTP 请求后,设备可能会根据用户的租户 ID 检查外部服务器的访问权限,并采取相应的操作。

在这两种情况下,ICAP 服务器都不知道基于可用信息已配置的策略,而只是将请求的信息发送回设备。然后,设备对接收到的响应信息应用策略并应用相关操作。 将 ICAP 内容检查标注添加到 ICAP 框架中,以返回来自外部 ICAP 服务器的请求信息。此标注的功能与 HTTP 标注的工作方式非常相似。任何策略表达式(例如,响应程序或 AppFirewall)都可以触发对已配置的 ICAP 服务器的 ICAP 请求。请求的信息,通过 Return NexPR 配置,然后从 ICAP 响应中提取并传递到请求的模块

将 ICAP 内容检查标注添加到 ICAP 框架中,以返回来自外部 ICAP 服务器的请求信息。此标注的功能与 HTTP 标注的工作方式非常相似。ICAP 模块可以使用现有的高级策略表达式来触发已配置的 ICAP 服务器的 ICAP 标注

内容检查标注策略表达式

以下内容检查策略表达式用作 ICAP 标注中的返回表达式。此内容检查标注表达式的语法类似于 HTTP 标注表达式。

SYS.CI_CALLOUT(<ContentInspection callout name>).Operator

其中, <ContentInspection callout name> 是 ICAP 类型的内容检查标注,该标注定义了 ICAP 服务器的属性和用于发送和接收请求的 ICAP 配置文件的属性。 来自 ICAP 标注代理的响应的返回类型决定了您可以在响应上使用的运算符集。如果要分析的响应部分是文本,则可以使用文本运算符来分析响应。例如,您可以使用CONTAINS(<string>) 运算符检查响应的指定部分是否包含特定字符串。

示例:

SYS.CI_ 标注(CI-标注)。包含(“要检查的值”)

配置 ICAP 内容检查标注

请完成以下步骤以在设备上配置 ICAP 内容检查标注。

  1. 添加会计师协会个人资料
  2. 添加内容检查标注
  3. 设置内容检查标注表达式
  4. 调用内容检查标注

添加会计师协会个人资料

添加内容检查标注

“内容检查”命令指定 ICAP 服务器信息和返回表达式及其类型。

在命令提示窗口中,键入:

add contentInspection callout <name> -type ICAP [-profileName <string>] (-serverName <string> | (-serverip <ip_addr|ipv6_addr> [-serverport <positive_integer>])) [-returnType <returnType>] [-resultExpr <string>] [-comment <string>]

其中,

<profileName> -会计师协会简介的名称 <returnType> -(BOL) | 数 | 文本) <resultExpr> -接收国际会计师协会的答复进行评估的表达,必须从国际会计师协会开始。

示例:

若要提取 X URL 类别的 ICAP 响应标头的值,可以指定 ResultPR,如下所示。

add contentInspection callout cic –type ICAP –profileName profile1 –resultExpr “ICAP.RES.HEADER("X-URL-Category")”

上述表达式返回 X-URL-检查返回值并应用关联的操作。

使用内容检查标注和功能操作的功能策略

当 Citrix ADC 功能需要使用 ICAP 与外部服务交互时,该功能可以使用内容检查标注 CI_CALOUT。在此模式下,该功能使用功能策略表达式中的 CI_CALOUT 来触发向外部 ICAP 服务器的 ICAP 请求。在接收响应时,该功能可以在内容检查操作中指定 ResultExtract,以便从 ICAP 响应中提取所需信息。结果可以是布尔值、数字值或文本。然后,要素可以根据提取的结果执行相关操作。让我们来看看功能策略如何使用 CI 标注执行功能操作的用例。

用例 1:使用视频优化检测策略提取 SNI,并在域为“社交媒体”时放弃握手

请完成以下步骤来配置用例:

  1. 添加会计师协会个人资料

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. 添加表示 ICAP 服务器的内容检查标注和结果表达式以从 ICAP 响应中提取类别信息。

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")" –resultType [same as callout resultType]

  3. 添加视频检测策略和表达式来获取接收域的 URL 类别信息,如果类别为“社交媒体”,则删除请求。

    add videooptimization detectionpolicy policy_urlcat -rule " SYS.CI_CALLOUT(cic).EQ(\"Social Media\")" -action DROP

用例 2: 从 ICAP 服务器检索 URL 类别并使用模式集阻止它

请完成以下步骤来配置用例:

  1. 添加定义模式和 HTTP 请求的 ICAP 配置文件。

    add icapProfile ICAPProfileName –mode REQMOD -insertHTTPRequest q{ "GET / HTTP/1.1\r\nHost: " + CLIENT.SSL.DETECTED_DOMAIN + "\r\n\r\n"}

  2. 添加内容检查标注以获取类别信息。

    add contentInspection callout cic -type ICAP -serverName icap-server-name -icapProfile ICAPProfileName -resultExpr "ICAP.res.header("X-URL-Category")"

  3. 添加一个模式集并将被阻止的类别模式绑定到它。

    add policy patset blocked-category bind policy patset blocked-category “gambling” –index 1 bind policy patset blocked-category “social media” –index 2 bind policy patset blocked-category “games” –index 3

  4. 添加视频优化检测策略以调用 ICAP 标注并采取措施。

    add videooptimization detectionpolicy policy_urlcat –rule SYS.CI_CALLOUT(cic).CONTAINS_ANY("blocked-category")" -action DROP