ADC

ICAP 用于远程内容检查

互联网内容适应协议 (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 客户端,则必须首先启用内容检查和负载平衡功能。

在命令提示符下,键入:

enable ns feature contentInspection LoadBalancing
<!--NeedCopy-->

添加会计师协会个人资料

Citrix ADC 设备的 ICAP 配置在称为 ICAP 配置文件的实体中指定。该配置文件包含 ICAP 设置的集合。这些设置包括动态生成 ICAP 请求、接收 ICAP 响应和记录内容检查数据的参数。

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

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

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

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

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

在命令提示符下,键入:

add ns icapProfile <name> [-preview ( ENABLED | DISABLED )][-previewLength <positive_integer>] -uri <string> [-hostHeader <string>] [-userAgent <string>] -Mode ( REQMOD | RESPMOD )[-queryParams <string>] [-connectionKeepAlive ( ENABLED | DISABLED )][-allow204 ( ENABLED | DISABLED )] [-insertICAPHeaders <string>][-insertHTTPRequest <string>] [-reqTimeout <positive_integer>][-reqTimeoutAction <reqTimeoutAction>] [-logAction <string>]

示例:

add icapprofile reqmod-profile -mode RESPMOD -uri “/req_scan” -hostHeader “Webroot.reqsca” -useragent “NS_SWG-Proxy”

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

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

记录 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>
<!--NeedCopy-->

示例:

add service icapsv1 10.10.10.10 SSL_TCP 1345

add service icapsv2 10.10.10.11 SSL_TCP 1345

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

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

注意 : 您还可以通过安全通道使用基于 SSL 的 TCP 服务。您使用 SSL_TCP 服务并绑定到 “内容检查” 操作。

在命令提示符下,键入以下内容:

add lb vserver <name> <serviceType> <port>
<!--NeedCopy-->

示例:

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
<!--NeedCopy-->

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

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

在命令提示符下,键入以下内容:

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

示例:

bind lb vserver vicap icapsv1
<!--NeedCopy-->

添加内容检查操作

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

继续:如果用户想在远程服务器关闭时绕过内容检查,则可以选择默认的 “继续” 操作。 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>
<!--NeedCopy-->

注意 : 如果可以配置 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 1.1.1.1 - serverport 1344 -icapProfileName icap_reqmod
<!--NeedCopy-->

添加内容检查策略

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

在命令提示符下,键入以下内容:

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

示例:

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
<!--NeedCopy-->

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

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

注意 : 应用程序虚拟服务器的类型必须是 HTTP/SSL/CS-PROXY。

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

配置安全的 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>
<!--NeedCopy-->

示例:

add service icapsv2 10.102.29.200 SSL_TCP 1344 –gslb NONE –maxclient 0 –maxReq 0 –cip DISABLED –usip NO –useproxport YES –sp ON –cltTimeout 9000 –svrTimeout 9000 –CKA NO –TCPB  NO –CMP NO
<!--NeedCopy-->

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

创建安全的 ICAP 服务后,必须将该服务绑定到负载平衡虚拟服务器。如果您使用负载平衡虚拟服务器对 ICAP 服务器进行负载均衡,则必须执行此操作。

在命令提示符下,键入以下内容:

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

示例:

bind lb vserver vicap icapsv2
<!--NeedCopy-->

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

您可以添加 ICAP 操作来处理 ICAP 请求信息,还将基于 SSL 的 TCP 服务绑定到该操作。

在命令提示符下,键入以下内容:

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

示例:

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
<!--NeedCopy-->

通过使用 GUI 配置 ICAP 协议

  1. 导航至“负载平衡”>“服务”,然后单击“添加”。
  2. 在“服务”页面中,输入服务详细信息。
  3. 导航到“负载平衡”>“虚拟服务器”。添加 HTTP/SSL 类型的负载平衡虚拟服务器。或者,您可以选择虚拟服务器并单击“编辑”。
  4. 输入服务器基本详细信息后,单击 继续
  5. 在“高级设置”部分中,单击“策略”。
  6. 转到策略部分,然后单击铅笔图标以配置内容检查策略。
  7. 选择策略页面上,选择内容检查。单击继续
  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. 导航到“负载平衡”>“虚拟服务器”。添加 HTTP/SSL 类型的虚拟服务器。或者,您可以选择虚拟服务器并单击“编辑”。
  4. 输入服务器基本详细信息后,单击 继续
  5. 在“高级设置”部分中,单击“策略”。
  6. 转到策略部分,然后单击铅笔图标以配置内容检查策略。
  7. 选择策略页面上,选择内容检查。单击继续
  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>
<!--NeedCopy-->

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

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
<!--NeedCopy-->

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

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
<!--NeedCopy-->