用例:通过使用 ICAP 进行远程恶意软件检测来确保企业网络安全
Citrix Secure Web Gateway™ (SWG) 设备充当代理,拦截所有客户端流量。该设备使用策略评估流量,并将客户端请求转发到资源所在的源服务器。设备解密来自源服务器的响应,并将纯文本内容转发到 ICAP 服务器进行反恶意软件检查。ICAP 服务器会响应一条消息,指示“无需调整”、错误或已修改的请求。根据 ICAP 服务器的响应,所请求的内容要么转发给客户端,要么发送相应的消息。
对于此用例,您必须在 Citrix® SWG 设备上执行一些常规配置、代理和 SSL 拦截相关配置以及 ICAP 配置。
常规配置
配置以下实体:
- NSIP 地址
- 子网 IP (SNIP) 地址
- DNS 名称服务器
- 用于签署服务器证书以进行 SSL 拦截的 CA 证书-密钥对
代理服务器和 SSL 拦截配置
配置以下实体:
- 显式模式下的代理服务器,用于拦截所有出站 HTTP 和 HTTPS 流量。
- SSL 配置文件,用于定义连接的 SSL 设置,例如密码和参数。
- SSL 策略,用于定义拦截流量的规则。设置为 true 以拦截所有客户端请求。
有关更多详细信息,请参阅以下主题:
在以下示例配置中,反恶意软件检测服务位于 www.example.com。
常规配置示例:
add ns ip 192.0.2.5 255.255.255.0
add ns ip 198.51.100.5 255.255.255.0 -type SNIP
add dns nameServer 203.0.113.2
add ssl certKey ns-swg-ca-certkey -cert ns_swg_ca.crt -key ns_swg_ca.key
<!--NeedCopy-->
代理服务器和 SSL 拦截配置示例:
add cs vserver explicitswg PROXY 192.0.2.100 80 –Authn401 ENABLED –authnVsName explicit-auth-vs
set ssl parameter -defaultProfile ENABLED
add ssl profile swg_profile -sslInterception ENABLED
bind ssl profile swg_profile -ssliCACertkey ns-swg-ca-certkey
set ssl vserver explicitswg -sslProfile swg_profile
add ssl policy ssli-pol_ssli -rule true -action INTERCEPT
bind ssl vserver explicitswg -policyName ssli-pol_ssli -priority 100 -type INTERCEPT_REQ
<!--NeedCopy-->
ICAP 配置示例:
add service icap_svc 203.0.113.225 TCP 1344
enable ns feature contentinspection
add icapprofile icapprofile1 -uri /example.com -Mode RESMOD
add contentInspection action CiRemoteAction -type ICAP -serverName icap_svc -icapProfileName icapprofile1
add contentInspection policy CiPolicy -rule "HTTP.REQ.METHOD.NE(\"CONNECT\")" -action CiRemoteAction
bind cs vserver explicitswg -policyName CiPolicy -priority 200 -type response
<!--NeedCopy-->
配置 SNIP 地址和 DNS 名称服务器
-
在 Web 浏览器中,键入 NSIP 地址。例如,
http://192.0.2.5。 -
在“用户名”和“密码”中,键入管理员凭据。将显示以下屏幕。如果未显示以下屏幕,请跳到代理设置部分。

-
单击“子网 IP 地址”部分内,并输入 IP 地址。

-
单击“完成”,然后单击“继续”。
-
单击“主机名、DNS IP 地址和时区”部分内,并输入这些字段的值。

-
单击“完成”,然后单击“继续”。
配置代理设置
-
导航到“Secure Web Gateway” > “Secure Web Gateway Wizard”。
-
单击“开始”,然后单击“继续”。
-
在“代理设置”对话框中,输入显式代理服务器的名称。
-
对于“捕获模式”,选择“显式”。
-
输入 IP 地址和端口号。

-
单击“继续”。
配置 SSL 拦截设置
-
选择“启用 SSL 拦截”。

-
在“SSL 配置文件”中,选择现有配置文件或单击“+”添加新的前端 SSL 配置文件。在此配置文件中启用“SSL 会话拦截”。如果选择现有配置文件,请跳过下一步。

-
单击“确定”,然后单击“完成”。
-
在“选择 SSL 拦截 CA 证书-密钥对”中,选择现有证书或单击“+”安装用于 SSL 拦截的 CA 证书-密钥对。如果选择现有证书,请跳过下一步。

-
单击“安装”,然后单击“关闭”。
-
添加策略以拦截所有流量。单击“绑定”。单击“添加”以添加新策略或选择现有策略。如果选择现有策略,请单击“插入”,并跳过接下来的三个步骤。

-
输入策略名称,并选择“高级”。在表达式编辑器中,输入 true。
-
对于“操作”,选择“INTERCEPT”。

-
单击“创建”。
-
单击四次“继续”,然后单击“完成”。
配置 ICAP 设置
-
导航到“负载平衡” > “服务”,并单击“添加”。

-
键入名称和 IP 地址。在“协议”中,选择“TCP”。在“端口”中,键入 1344。单击“确定”。

-
导航到“Secure Web Gateway” > “代理虚拟服务器”。添加代理虚拟服务器或选择虚拟服务器,然后单击“编辑”。输入详细信息后,单击“确定”。

再次单击“确定”。

-
在“高级设置”中,单击“策略”。

-
在“选择策略”中,选择“内容检查”。单击“继续”。

-
在“选择策略”中,单击“+”号添加策略。

-
输入策略名称。在“操作”中,单击“+”号添加操作。

-
键入操作名称。在“服务器名称”中,键入之前创建的 TCP 服务的名称。在“ICAP 配置文件”中,单击“+”号添加 ICAP 配置文件。

-
键入配置文件名称、URI。在“模式”中,选择“REQMOD”。

-
单击“创建”。

-
在“创建 ICAP 操作”页面中,单击“创建”。

-
在“创建 ICAP 策略”页面中,在“表达式编辑器”中输入 true。然后,单击“创建”。

-
单击“绑定”。

-
如果提示启用内容检查功能,请选择“是”。

-
单击“完成”。

Citrix SWG 设备与 ICAP 服务器之间在 RESPMOD 中的 ICAP 事务示例
从 Citrix SWG 设备到 ICAP 服务器的请求:
RESPMOD icap://10.106.137.15:1344/resp ICAP/1.0
Host: 10.106.137.15
Connection: Keep-Alive
Encapsulated: res-hdr=0, res-body=282
HTTP/1.1 200 OK
Date: Fri, 01 Dec 2017 11:55:18 GMT
Server: Apache/2.2.21 (Fedora)
Last-Modified: Fri, 01 Dec 2017 11:16:16 GMT
ETag: "20169-45-55f457f42aee4"
Accept-Ranges: bytes
Content-Length: 69
Keep-Alive: timeout=15, max=100
Content-Type: text/plain; charset=UTF-8
X5O\!P%@AP\[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE\!$H+H\*
<!--NeedCopy-->
从 ICAP 服务器到 Citrix SWG 设备的响应:
ICAP/1.0 200 OK
Connection: keep-alive
Date: Fri, 01 Dec, 2017 11:40:42 GMT
Encapsulated: res-hdr=0, res-body=224
Server: IWSVA 6.5-SP1\_Build\_Linux\_1080 $Date: 04/09/2015 01:19:26 AM$
ISTag: "9.8-13.815.00-3.100.1027-1.0"
X-Virus-ID: Eicar\_test\_file
X-Infection-Found: Type=0; Resolution=2; Threat=Eicar\_test\_file;
HTTP/1.1 403 Forbidden
Date: Fri, 01 Dec, 2017 11:40:42 GMT
Cache-Control: no-cache
Content-Type: text/html; charset=UTF-8
Server: IWSVA 6.5-SP1\_Build\_Linux\_1080 $Date: 04/09/2015 01:19:26 AM$
Content-Length: 5688
\<html\>\<head\>\<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/\>
…
…
\</body\>\</html\>
<!--NeedCopy-->