用于远程内容检测的会计师协会

Internet Content Adaptation Protocol (ICAP) 是一种简单的轻量级协议,用于在 HTTP 消息上执行增值转换服务。在典型情况下,ICAP 客户端将 HTTP 请求和响应转发到一个或多个 ICAP 服务器进行处理。ICAP 服务器对请求执行内容转换,并发送回响应,并对请求或响应采取适当的操作。

在 Citrix ADC 设备上的会计师协会

在 Citrix ADC 设置中,设备充当与第三方 ICAP 服务器(如反恶意软件和数据泄漏防护 (DLP))互动的 ICAP 客户端。当设备接收到传入 Web 流量时,设备会拦截流量,并使用内容检查策略评估 HTTP 请求是否需要 ICAP 处理。如果是,设备将解密并以纯文本形式将消息发送到 ICAP 服务器。ICAP 服务器对请求消息执行内容转换服务,并将响应发回到设备。调整后的消息可以是 HTTP 请求或 HTTP 响应。如果设备与多个 ICAP 服务器互操作,则设备将执行 ICAP 服务器的负载平衡。这种情况发生在一个 ICAP 服务器不足以处理所有流量负载的情况下。一旦 ICAP 服务器返回修改后的消息,设备将修改后的消息转发到后端源服务器。

如果传入流量是 HTTPS 类型,Citrix ADC 设备还提供安全的 ICAP 服务。设备使用基于 SSL 的 TCP 服务在设备和 ICAP 服务器之间建立安全连接。

会计师协会请求修改(REQMOD)的工作原理

在请求修改 (REQMOD) 模式下,Citrix ADC 设备将从客户端接收到的 HTTP 请求转发到 ICAP 服务器。然后,ICAP 服务器执行以下操作之一:

  1. 发回已修改的请求版本,然后设备将修改的请求发送到后端源服务器,或者将修改的请求管道到另一个 ICAP 服务器。
  2. 回复时会显示一条消息,指示不需要进行任何调整。
  3. 返回错误,然后设备将错误消息发送回用户。

会计师协会响应修改(RESPMOD)的工作原理

在响应修改 (RESPMOD) 模式下,Citrix ADC 设备向 ICAP 服务器发送 HTTP 响应(设备发送的响应通常是源服务器发送的响应)。然后,ICAP 服务器执行以下操作之一:

  1. 发回响应的修改版本,然后设备将修改后的响应发送给用户,或将修改后的响应管道发送到另一个 ICAP 服务器。
  2. 回复时会显示一条消息,指示不需要进行任何调整。
  3. 返回错误,设备依次向用户发送错误消息。

会计师协会许可证

ICAP 功能适用于 Citrix ADC 高级或高级许可版本的 Citrix ADC 独立或高可用性设置。

为内容转换服务配置 ICAP

要将 ICAP 用于内容转换服务,您必须首先启用内容检查和负载平衡功能。启用这些功能后,您可以完成以下任务

启用内容检查

如果希望 Citrix ADC 设备充当 ICAP 客户端并向第三方 ICAP 服务器发送请求或响应,则必须首先启用内容检查和负载平衡功能。

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

enable ns feature contentInspection LoadBalancing

添加会计师协会个人资料

Citrix ADC 设备的 ICAP 配置是在名为 ICAP 配置文件的实体中指定的。配置文件包含一系列会计师协会设置。这些设置包括动态生成 ICAP 请求、接收 ICAP 响应和日志内容检查数据的参数。

若要动态生成到 ICAP 服务器的 ICAP 请求,在 ICAP 配置文件中添加了一个新的参数“InserthttpreQuest”。如果配置了此参数,则设备将配置的值作为策略表达式并评估该表达式,并将结果包含为封装的 http 请求或响应,然后将其发送到 ICAP 服务器。此外,一个新的参数“Inserticapheader”可配置为动态评估和包含 ICAP 标头。

当设备发送 ICAP 请求并且未收到 ICAP 服务器响应时,连接变得无响应。会发生这种情况,直到 ICAP 服务器发送响应或释放会话。该行为可以通过配置 ICAP 响应超时选项来处理。您可以为 ICAP 设置请求超时参数,以便在有延迟的 ICAP 响应时执行操作。如果 Citrix ADC 设备未在配置的请求超时范围内收到响应,则会执行请求超时操作。

Reqtime 超出:可能的值是旁路,重置,下降。 绕过: 这将忽略远程 ICAP 服务器的响应,并将请求/响应发送到客户端/服务器。 RESET(默认):通过关闭客户端连接来 重置客户端连接。 DRO P:删除请求而不向用户发送响应

要评估 ICAP 响应,在内容检查标注返回表达式ICAP.RES 中使用新的策略表达式。此表达式评估与中的HTTP.RES 表达式类似的 ICAP 响应HTTP_CALLOUT

例如,当 Citrix ADC 设备收到对 Citrix ADC 虚拟 IP 地址后面托管的服务的 HTTP 请求时,该设备可能需要检查客户端与外部服务器的身份验证并执行操作。

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

add icapProfile <ICAP Profile Name> -mode <ICAP Mode> -insertHTTPRequest <Expression> -logAction icap_log_expr -Mode REQMOD -reqtimeout <positive_integer> -reqTimeoutAction <reqTimeoutAction>

示例:

add icapProfile reqmode-profile -mode REQMOD -insertHTTPRequest q{HTTP.REQ.METHOD + " " + HTTP.REQ.URL + " HTTP/1.1\r\n" + "Host: " + HTTP.REQ.HOSTNAME + "\r\n\r\n"}

add icapProfile respmode-profile -mode RESPMOD –insertHTTPResponse q{HTTP.RESP.METHOD + " " + HTTP.RESP.URL + " HTTP/1.1\r\n" + "Host: " + HTTP.RESP.HOSTNAME + "\r\n\r\n"}

add ns icapProfile icap_prof1 -uri "/example" -Mode REQMOD -reqtimeout 4 -reqtimeoutaction BYPASS

记录 ICAP 内容检查操作

要动态生成内容检查日志流记录或 SYSLOG 日志,可以在 ICAP 响应上使用基于 ICAP.RES 的策略表达式。此参数可在 ICAP 配置文件中配置,以配置策略表达式以生成动态日志记录。

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

add audit messageaction icap_log_expr INFORMATIONAL icap.res.full_header

set icapProfile reqmode-profile -logAction messageaction

将会计师协会服务添加为 TCP 或 SSL_TCP 服务

启用内容检查功能后,必须为将作为负载平衡设置的一部分的 ICAP 服务器添加一个 ICAP 服务。添加的服务提供 Citrix ADC 设备和负载平衡虚拟服务器之间的 ICAP 连接。

注意:作为管理员,您可以在“内容检查”操作中添加 ICAP 服务并直接配置 ICAP 服务器 IP 地址。

在命令提示窗口中,键入以下内容:

add service <name> <IP> <serviceType> <port>

示例:

add service icapsv1 10.102.29.200 TCP 80 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB NO –CMP NO

add service icapsv2 10.102.29.200 SSL_TCP 11344 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB NO –CMP NO

添加基于 TCP 或 SSL_TCP 的负载平衡虚拟服务器

创建一个 ICAP 服务后,您必须创建一个虚拟服务器以接受 ICAP 流量并对 ICAP 服务器进行负载平衡。

注意

您还可以通过安全通道使用基于 SSL 的 TCP 服务。若要执行此操作,您必须使用 SSL_TCP 服务并绑定到内容检查操作。

在命令提示窗口中,键入以下内容:

add lb vserver <name> <serviceType> <port>

示例:

add lb vserver vicap TCP 0.0.0.0.0 –persistenceType NONE -cltTimeout 9000

add lb vserver vicap SSL_TCP 0.0.0.0 0 –persistenceType NONE -cltTimeout 9000

将 ICAP 服务绑定到负载平衡虚拟服务器

创建一个 ICAP 服务和虚拟服务器后,必须将该 ICAP 服务绑定到虚拟服务器。

在命令提示窗口中,键入以下内容:

bind lb vserver <name> <serviceName>

示例:

bind lb vserver vicap icapsv1

添加内容检查操作

启用内容检查功能后,您必须添加用于处理 ICAP 请求信息的 ICAP 操作。创建的 ICAP 配置文件和服务或负载平衡虚拟服务器绑定到 ICAP 操作。如果 ICAP 服务器关闭,则可以为设备配置 ifserverdown 参数以触发以下任一操作。

继续:如果用户想要在远程服务器关闭时绕过 Conetntinspection,则可以选择此操作,并且它是默认操作。 RESET(默认):此操作通过关闭与 RST 的连接来响应客户端。 DROP:此操作以静默方式删除数据包,而不向用户发送响应。

在命令提示窗口中,键入以下内容:

add contentInspection action <name> -type ICAP -serverName <string> -icapProfileName <string>

add ContentInspection action <name> -type ICAP -serverip <ip> - serverport <port> -icapProfileName <string>

注意:

如果可以配置 ICAP 服务而不是负载平衡虚拟服务器,则可以在 <-serverip> 选项中提及服务名称。添加内容检查操作时,会自动为带有端口 1344 的给定 IP 地址创建 TCP 服务,并将其用于 ICAP 通信。

示例:

add ContentInspection action ci_act_lb -type ICAP -serverName vicap -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverName icapsv1 -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverip <ip> - serverport <port> -icapProfileName icap_reqmod

添加内容检查策略

创建内容检查操作后,必须创建内容检查策略来评估 ICAP 处理和审核日志记录的请求。策略基于由一个或多个表达式组成的规则。规则与内容检查操作相关联,如果请求与规则匹配,则该操作相关联。

在命令提示窗口中,键入以下内容:

add contentInspection policy <name> -rule <expression> -action <string>

示例:

add ContentInspection policy ci_pol_basic –rule true –action ci_act_svc

add ContentInspection policy ci_pol_HTTP –rule HTTP.REQ.URL.CONTAINS(“html”) –action ci_act_svc

将内容检查策略绑定到内容交换或负载平衡虚拟服务器

要使 ICAP 策略生效,您必须将其全局绑定,或者将其绑定到内容交换或负载平衡虚拟服务器(前置应用程序)。绑定策略时,必须为其分配优先级。优先级决定了您定义的策略的评估顺序。

有关配置负载平衡设置以在内容转换后将流量转发到后端源服务器的信息,请参阅负载平衡

配置安全的 ICAP 服务

要在 Citrix ADC 设备和 ICAP Web 服务器之间建立安全连接,该设备使用绑定到 ICAP 操作的基于 SSL 的 TCP 服务或负载平衡虚拟服务器。

要建立安全的 ICAP 连接,请完成以下任务:

  1. 添加基于 SSL 的 TCP 服务。
  2. 绑定基于 SSL 的 TCP 服务以负载平衡 TCP 或 SSL_TCP 类型的虚拟服务器。
  3. 将基于 SSL 的 TCP 服务或负载平衡虚拟服务器绑定到内容检查操作。

添加基于 SSL 的 TCP 服务以负载平衡虚拟服务器

要在 Citrix ADC 设备和 ICAP Web 服务器之间建立安全连接,该设备使用绑定到 ICAP 操作的基于 SSL 的 TCP 服务或负载平衡虚拟服务器。

要建立安全的 ICAP 连接,请完成以下任务:

  1. 添加基于 SSL 的 TCP 服务。
  2. 绑定基于 SSL 的 TCP 服务以负载平衡 TCP 或 SSL_TCP 类型的虚拟服务器。

将基于 SSL 的 TCP 服务或负载平衡虚拟服务器绑定到内容检查操作

添加基于 SSL 的 TCP 服务以负载平衡虚拟服务器

启用内容检查功能后,您必须添加将作为负载平衡设置的一部分的受保护的 ICAP 服务。添加的服务提供 Citrix ADC 设备和负载平衡虚拟服务器之间的安全 ICAP 连接。

在命令提示窗口中,键入以下内容:

add service <name> <IP> <serviceType> <port>

示例:

add service icapsv2 10.102.29.200 SSL_TCP 11344 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB  NO –CMP NO

将基于 SSL 的 TCP 服务绑定到 SSL_TCP 或 TCP 负载平衡虚拟服务器

创建安全的 ICAP 服务后,必须将服务绑定到负载平衡虚拟服务器(如果使用负载平衡虚拟服务器来平衡 ICAP 服务器)。

在命令提示窗口中,键入以下内容:

bind lb vserver <name> <serviceName>

示例:

bind lb vserver vicap icapsv2

将基于 SSL 的 TCP 服务或负载平衡虚拟服务器绑定到内容检查操作

您必须添加用于处理 ICAP 请求信息的 ICAP 操作,并且还将基于 SSL 的 TCP 服务绑定到该操作。

在命令提示窗口中,键入以下内容:

add contentInspection action <name> -type ICAP -serverName <string> -icapProfileName <string>

示例:

add ContentInspection action ci_act_svc -type ICAP -serverName icapsv2 -icapProfileName icap_reqmod

add ContentInspection action ci_act_svc -type ICAP -serverName vicap -icapProfileName icap_reqmod

通过使用 GUI 配置 ICAP 协议

  1. 导航至“负载平衡”>“服务”,然后单击“添加”。
  2. 在“服务”页面中,输入服务详细信息。
  3. 导航至 负载平衡 > 服务器 。添加 TCP 类型的虚拟服务器。或者,您可以选择虚拟服务器并单击“编辑”。
  4. 输入服务器详细信息后,单 击确定 ,然后再次 确定
  5. 在“高级设置”部分中,单击“策略”。
  6. 转到“ 略”部分,然后单击“铅笔”图标以配置内容检查策略。
  7. 在“选择策略”页面上,选择“内容检查”。单击 Continue(继续)。
  8. 策略绑定 部分中,单击 + 以 添加内容检查策略。
  9. 在“创建 ICAP 策略”页面中,输入策略的名称。
  10. 作字段中,单击“+”符号以添加会计师协会操作。
  11. 在“创建 ICAP 操 作”页面中,输入操作的名称。
  12. 输入操作的名称。
  13. 在“服务 器名称”字段中,输入已创建的 TCP 服务的名称。
  14. 在会 计师协会配置文件 字段中,单击“+”符号以添加会计师协会配置文件。
  15. 在“创建 ICAP 配置文件”页面中,输入配置文件名称、URI 和模式。
  16. 单击创建
  17. 创建 ICAP 操作页面上,单击创建
  18. 创建 ICAP 策略 页面中,在 表达式编辑器 中输入“true”,然后单击 创建
  19. 单击 Bind(绑定)。
  20. 当提示启用内容检查功能时,单击
  21. 单击 完成

有关用于在内容转换后平衡负载并将流量转发到后端源服务器的 Citrix ADC GUI 配置的信息,请参阅负载平衡

使用 GUI 配置安全的 ICAP 协议

  1. 导航至“负载平衡”>“服务”,然后单击“添加”。
  2. 在“服务”页面中,输入服务详细信息。
  3. 导航至 负载平衡 > 服务器 。添加 TCP_SSL 类型的虚拟服务器。或者,您可以选择 TCP_SSL 类型的虚拟服务器,然后单击 编辑
  4. 输入服务器详细信息后,单 击确定 ,然后再次 确定
  5. 在“高级设置”部分中,单击“策略”。
  6. 转到“ 略”部分,然后单击“铅笔”图标以配置内容检查策略。
  7. 在“选择策略”页面上,选择“内容检查”。单击 Continue(继续)。
  8. 策略绑定 部分中,单击 + 以 添加内容检查策略。
  9. 在“创建 ICAP 策略”页面中,输入策略的名称。
  10. 作字段中,单击“+”符号以添加会计师协会操作。
  11. 在“创建 ICAP 操 作”页面中,输入操作的名称。
  12. 输入操作的名称。
  13. 在“服务 器名称”字段中,输入已创建的 TCP_SSL 服务的名称。
  14. 在会 计师协会配置文件 字段中,单击“+”符号以添加会计师协会配置文件。
  15. 在“创建 ICAP 配置文件”页面中,输入配置文件名称、URI 和模式。
  16. 单击创建
  17. 创建 ICAP 操作页面上,单击创建
  18. 创建 ICAP 策略 页面中,在 表达式编辑器 中输入“true”,然后单击 创建
  19. 单击 Bind(绑定)。
  20. 当提示启用内容检查功能时,单击
  21. 单击 完成

用于远程内容检查的审核日志支持

如果检查了传入请求或传出响应的内容,Citrix ADC 设备会记录 ICAP 详细信息。设备将详细信息作为日志消息存储在 ns.log 文件中。

每条日志消息通常包含以下详细信息:

<Source IP> <Destination IP> <Domain> <ICAP server IP><ICAP Mode> <Service URI> <ICAP response> <Policy action>

检查的内容请求日志消息示例:

Apr 18 14:45:41 <local0.info> 10.106.97.104 04/18/2018:14:45:41 GMT 0-PPE-0 : default CI ICAP_LOG 788 0 : Source 10.102.1.98:39048 - Destination 10.106.97.89:8011 - Domain 10.106.97.89 - Content-Type application/x-www-form-urlencoded - ICAP Server 10.106.97.99:1344 - Mode REQMOD - Service /example - Response 204 - Action FORWARD

检查的内容响应日志消息示例:

Apr 18 12:34:08 <local0.info> 10.106.97.104 04/18/2018:12:34:08 GMT 0-PPE-0 : default CI ICAP_LOG 71 0 : Source 10.106.97.105:18552 - Destination 10.106.97.99:80 - Domain NA - Content-Type NA - ICAP Server 10.106.97.99:1344 - Mode RESPMOD - Service /example - Response 400 - Action Internal Error