Citrix ADC

用于远程内容检查的ICAP

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

Citrix ADC设备上的ICAP

在Citrix ADC设置中,该设备充当与第三方ICAP服务器(如反恶意软件和数据丢失保护(DLP))进行互操作的ICAP客户端。当设备接收到传入的web流量时,设备拦截该流量并使用内容检查策略来评估HTTP请求是否需要ICAP处理。如果是,则设备解密消息并将其作为纯文本发送到ICAP服务器。ICAP服务器在请求消息上运行内容转换服务,并向设备发回响应。经过调整的消息可以是HTTP请求,也可以是HTTP响应。如果设备与多个ICAP服务器互操作,则设备执行ICAP服务器的负载平衡。当一个ICAP服务器不足以处理所有流量负载时,就会出现这种情况。一旦ICAP服务器返回修改后的消息,设备就会将修改后的消息转发到后端源服务器。

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

ICAP请求修改(REQMOD)如何工作

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

  1. 发送回请求的修改版本,设备依次将修改后的请求发送到后端源服务器,或者将修改后的请求通过管道发送到另一个ICAP服务器。
  2. 响应一条消息,表明不需要进行调整。
  3. 返回一个错误,设备依次将错误消息发送回用户。

ICAP响应修改(RESPMOD)如何工作

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

  1. 发送响应的修改版本,设备依次将响应发送给用户或通过管道将响应发送给另一个ICAP服务器。
  2. 响应一条消息,表明不需要进行调整。
  3. 返回一个错误,设备依次将错误消息发送给用户。

毅联汇业许可证

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

为内容转换服务配置ICAP

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

启用内容检查

如果希望Citrix ADC设备充当ICAP客户端,则必须首先启用Content Inspection和负载平衡特性。

在命令提示符下,输入:

启用ns feature contentInspection LoadBalancing 

添加ICAP配置文件

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

为了动态地向ICAP服务器生成ICAP请求,在ICAP配置文件中添加了一个新参数“insertHTTPRequest”。如果配置了此参数,则设备将配置的值作为策略表达式,并对该表达式进行计算,并将结果作为封装的HTTP请求或响应包含在其中,然后将其发送到ICAP服务器。此外,一个新的参数“insertICAPHeaders”是可配置的,用于动态计算和包含ICAP头。

当设备发送ICAP请求而没有收到ICAP服务器的响应时,连接将变得无响应。它一直持续到ICAP服务器发送响应或会话被释放。可以通过配置ICAP响应超时选项来处理该行为。当ICAP响应延迟时,可以设置请求超时参数。如果Citrix ADC设备在配置的请求超时内没有收到响应,则执行请求超时操作。

ReqTimeoutAction:取值包括BYPASS、RESET、DROP。BYPASS:忽略远程ICAP服务器的响应,将请求/响应发送给客户端/服务器。RESET(默认):通过关闭客户端连接来重置客户端连接。DROP:删除请求而不向用户发送响应

为了评估ICAP响应,一个新的策略表达式毅联汇业。RES在内容检查标注返回表达式中使用。该表达式计算ICAP响应,类似于HTTP。RESa中的表达式HTTP_CALLOUT

例如,当Citrix ADC设备接收到针对托管在Citrix ADC虚拟IP地址后面的服务的HTTP请求时,该设备可能必须使用外部服务器检查客户机的身份验证并采取操作。

在命令提示符下,输入:

add ns icapProfile [-preview (ENABLED | DISABLED)][-previewLength ] -uri [- hosttheader ][-userAgent ] -Mode (REQMOD | RESPMOD)[-queryParams ][-connectionKeepAlive (ENABLED | DISABLED)][-allow204 (ENABLED | DISABLED)][-insertICAPHeaders ][-insertHTTPRequest ][-reqTimeoutAction ] [-logAction ]

例子:

add icapprofile reqmod-profile -mode RESPMOD -uri " /req_scan " -hostHeader " Webroot。“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。方法+ " " + HTTP.REQ.URL +“HTTP / 1.1 \ r \ n”+“主持人:”+ HTTP.REQ.HOSTNAME + " \ r \ n \ r \ n "}

记录ICAP内容检测动作

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

在命令提示符下,输入:

add audit messageaction icap_log_expr INFORMATIONAL icap.res.full_header

设置icapProfile reqmode-profile -logAction messageaction

将ICAP服务添加为TCP或SSL_TCP服务

启用Content Inspection功能后,必须为ICAP服务器添加ICAP服务,该服务将成为负载平衡设置的一部分。您添加的服务提供Citrix ADC设备和负载平衡虚拟服务器之间的ICAP连接。

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

在命令提示符下,输入以下命令:

添加服务    

例子:

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服务并绑定到Content Inspection操作。

在命令提示符下,输入以下命令:

添加lb vserver    

例子:

添加lb vserver vicap SSL_TCP 0.0.0.0 -persistenceType NONE -cltTimeout 9000——NeedCopy >

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

创建ICAP服务和虚拟服务器后,需要将ICAP服务与虚拟服务器绑定。

在命令提示符下,输入以下命令:

绑定lb vserver   

例子:

绑定lb vserver vicap icapsv1 

添加内容检查操作

启用内容检测特性后,必须添加ICAP操作来处理ICAP请求信息。ICAP配置文件和创建的服务或负载均衡虚拟服务器绑定到ICAP动作。当ICAP服务器故障时,可以配置ifserverdown参数,以便设备执行以下任何一个操作。

CONTINUE:如果用户希望在远程服务器关闭时绕过内容检查,可以选择“CONTINUE”动作,默认为“CONTINUE”。RESET(默认):该动作通过关闭与RST的连接来响应客户端。DROP:该动作静默丢弃报文,不向用户发送响应。

在命令提示符下,输入以下命令:

add contentInspection action  -type ICAP - servername  - icapprofilename  - name> -type ICAP -serverip  - serverport  - icapprofilename  

注意:

如果您可以配置ICAP服务而不是负载均衡虚拟服务器,则可以在配置文件中提到服务名称\ < -serverip >选择。添加Content Inspection动作时,会自动为给定的IP地址创建TCP服务,该服务的端口为1344,用于ICAP通信。

例子:

add ContentInspection动作ci_act_lb -type ICAP - servername vicap - icapprofilename icap_reqmod add ContentInspection动作ci_act_svc -type ICAP - servername icapsv1 - icapprofilename icap_reqmod add ContentInspection动作ci_act_svc -type ICAP -serverip 1.1.1.1 - serverport 1344 - icapprofilename icap_reqmod 

添加内容检查策略

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

在命令提示符下,输入以下命令:

添加contentInspection policy  -rule  -action  

例子:

添加内容检查策略ci_pol_basic -rule true -action ci_act_svc添加内容检查策略ci_pol_HTTP -rule HTTP.REQ.URL.CONTAINS(" html ") -action ci_act_svc 

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

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

注意:

应用虚拟服务器类型必须为“- 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服务或负载均衡虚拟服务器绑定到Content Inspection动作。

为负载均衡虚拟服务器添加基于ssl的TCP服务

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

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

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

将基于ssl的TCP服务或负载均衡虚拟服务器绑定到Content Inspection动作

为负载均衡虚拟服务器添加基于ssl的TCP服务

启用Content Inspection功能后,必须添加一个安全的ICAP服务,该服务将成为负载平衡设置的一部分。您添加的服务在Citrix ADC设备和负载平衡虚拟服务器之间提供安全的ICAP连接。

在命令提示符下,输入以下命令:

添加服务    

例子:

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 

绑定基于ssl的TCP服务到SSL_TCP或TCP负载均衡虚拟服务器

安全ICAP服务创建完成后,需要将安全ICAP服务绑定到负载均衡虚拟服务器。如果您正在使用负载平衡虚拟服务器来对ICAP服务器进行负载平衡,则需要此配置。

在命令提示符下,输入以下命令:

绑定lb vserver   

例子:

绑定lb vserver vicap icapsv2 

将基于ssl的TCP服务或负载均衡虚拟服务器绑定到Content Inspection动作

添加一个ICAP操作来处理ICAP请求信息,并将基于ssl的TCP服务绑定到该操作。

在命令提示符下,输入以下命令:

add contentInspection action  -type ICAP -serverName  -icapProfileName  

例子:

add ContentInspection动作ci_act_svc -type ICAP -serverName icapsv2 -icapProfileName icap_reqmod add ContentInspection动作ci_act_svc -type ICAP -serverName vicap -icapProfileName icap_reqmod 

通过图形化界面配置ICAP协议

  1. 导航到负载平衡>服务并点击添加
  2. 服务页面,输入服务详细信息。
  3. 导航到负载平衡>虚拟服务器.添加HTTP/SSL类型的负载均衡虚拟服务器。也可以选择虚拟服务器,单击编辑
  4. 输入服务器的基本信息后,单击继续
  5. 高级设置部分中,点击政策
  6. 政策节,然后单击铅笔图标,配置内容检查策略。
  7. 选择政策页面,选择内容检查.点击继续
  8. 政策约束力部分中,点击+添加Content Inspection策略。
  9. 创建ICAP策略页,输入策略的名称。
  10. 行动字段,单击“+”号添加ICAP操作。
  11. 创建ICAP操作页,输入操作的名称。
  12. 输入操作的名称。
  13. 服务器名称字段中,输入已创建的TCP服务的名称。
  14. ICAP概要字段,单击“+”号添加ICAP配置文件。
  15. 创建ICAP配置文件页面,输入配置文件名称、URI和MODE。
  16. 点击创建
  17. 创建ICAP操作页面,点击创建
  18. 创建ICAP策略页,在表达式编辑器然后点击创建
  19. 点击绑定
  20. 当提示启用内容检查功能时,单击是的
  21. 点击完成

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

通过GUI配置安全ICAP协议

  1. 导航到负载平衡>服务并点击添加
  2. 服务页面,输入服务详细信息。
  3. 导航到负载平衡>虚拟服务器.添加HTTP/SSL类型的虚拟服务器。也可以选择虚拟服务器,单击编辑
  4. 输入服务器的基本信息后,单击继续
  5. 高级设置部分中,点击政策
  6. 政策节,然后单击铅笔图标,配置内容检查策略。
  7. 选择政策页面,选择内容检查.点击继续
  8. 政策约束力部分中,点击+添加Content Inspection策略。
  9. 创建ICAP策略页,输入策略的名称。
  10. 行动字段,单击“+”号添加ICAP操作。
  11. 创建ICAP操作页,输入操作的名称。
  12. 输入操作的名称。
  13. 服务器名称字段中,输入已创建的TCP_SSL服务的名称。
  14. ICAP概要字段,单击“+”号添加ICAP配置文件。
  15. 创建ICAP配置文件页面,输入配置文件名称、URI和MODE。
  16. 点击创建
  17. 创建ICAP操作页面,点击创建
  18. 创建ICAP策略页,在表达式编辑器然后点击创建
  19. 点击绑定
  20. 当提示启用内容检查功能时,单击是的
  21. 点击完成

支持远程内容检查的审计日志

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

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

<源IP><目的IP><域><服务URI> <策略动作>< !——NeedCopy >

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

Apr 18 14:45:41  10.106.97.104 04/18/2018:14:45:41 GMT 0- pep -0: default CI ICAP_LOG 788 0:源10.102.1.98:39048 -目的10.106.97.89:8011 -域10.106.97.89 - Content-Type application/x-网址-form-urlencoded - ICAP Server 10.106.97.99:1344 - Mode REQMOD - Service /example - Response 204 - Action FORWARD 

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

04/18/2018:12:34:08 GMT 0- ppe -0: default CI ICAP_LOG 71 0:源10.106.97.105:18552 -目的10.106.97.99:80 -域NA -内容类型NA - ICAP服务器10.106.97.99:1344 -模式RESPMOD -服务/示例-响应400 -动作内部错误