用于 SSL 截获的 SSL 策略基础结构
策略的作用类似于对传入流量进行筛选。Citrix Secure Web Gateway (SWG) 设备上的策略有助于定义如何管理代理连接和请求。处理基于为该策略配置的操作。也就是说,将连接请求中的数据与策略中指定的规则进行比较,并将操作应用于匹配规则(表达式)的连接。定义策略的操作并创建策略后,将其绑定到代理服务器,以便它应用于流经该代理服务器的流量。
SSL 截获 SSL 策略会评估传入流量,并对与规则(表达式)匹配的请求应用预定义的操作。截取、绕过或重置连接的决定是根据定义的 SSL 策略做出的。您可以为策略配置三个操作之一-拦截、绕过或重置。在创建策略时指定操作。要使策略生效,您必须将其绑定到设备上的代理服务器。要指定策略专用于 SSL 截获,在将策略绑定到代理服务器时,必须将类型(绑定点)指定为 INTERCEPT_REQ。取消绑定策略时,必须将类型指定为 TACT_REQ。
注意:
只有在指定策略时,代理服务器才能决定拦截。
流量拦截可以基于任何 SSL 握手属性。最常用的是 SSL 域。SSL 域通常由 SSL 握手的属性表示。它可以是从 SSL 客户端 Hello 消息中提取的服务器名称指示器值(如果存在),也可以是从源服务器证书中提取的服务器备用名称 (SAN) 值。Citrix SWG 上的 SSLI 策略提供了名为 DETECTED_DOMAIN 的特殊属性,这使客户可以更轻松地根据源服务器证书中的 SSL 域制作拦截策略。客户可以将域名与字符串、URL 列表(URL 集或patset
)或从域派生的 URL 类别进行匹配。
使用 Citrix SWG CLI 创建 SSL 策略
在命令提示符下,键入:
add ssl policy <name> -rule <expression> -action <string>
<!--NeedCopy-->
示例:
以下示例适用于具有使用detected_domain
属性检查域名的表达式的策略。
不要拦截到金融机构(如 XYZBank)的流量
add ssl policy pol1 -rule client.ssl.detected_domain.contains("XYZBANK") -action BYPASS
<!--NeedCopy-->
不允许用户从公司网络连接到 YouTube。
add ssl policy pol2 -rule client.ssl.client.ssl.detected_domain.url_categorize(0,0).category.eq ("YouTube") -action RESET
<!--NeedCopy-->
拦截所有用户流量。
add ssl policy pol3 –rule true –action INTERCEPT
<!--NeedCopy-->
如果客户不想使用已检测的 _domain,他们可以使用任何 SSL 握手属性来提取和推断域。
例如,在客户端 hello 消息的 SNI 扩展中找不到域名。域名必须取自源服务器证书。以下示例适用于具有在源服务器证书的使用者名称中检查域名的表达式的策略。
拦截到任何 Yahoo 域的所有用户流量。
add ssl policy pol4 -rule client.ssl.origin_server_cert.subject.contains("yahoo") –action INTERCEPT
<!--NeedCopy-->
截获 “购物/零售” 类别的所有用户流量。
add ssl policy pol_url_category -rule client.ssl.origin_server_cert.subject.URL_CATEGORIZE(0,0).CATEGORY.eq("Shopping/Retail") -action INTERCEPT
<!--NeedCopy-->
拦截未分类 URL 的所有用户流量。
add ssl policy pol_url_category -rule client.ssl.origin_server_cert.subject.url_categorize(0,0).category.eq("Uncategorized") -action INTERCEPT
<!--NeedCopy-->
以下示例适用于将域与 URL 集中的条目匹配的策略。
如果 SNI 中的域名与 URL 集 “top100” 中的条目匹配,则拦截所有用户流量。
add ssl policy pol_url_set -rule client.ssl.client_hello.SNI.URLSET_MATCHES_ANY("top100") -action INTERCEPT
<!--NeedCopy-->
如果源服务器证书与 URL 集 “top100” 中的条目匹配,则拦截域名的所有用户流量。
add ssl policy pol_url_set -rule client.ssl.origin_server_cert.subject.URLSET_MATCHES_ANY("top100") -action INTERCEPT
<!--NeedCopy-->
使用 SWG GUI 为代理服务器创建 SSL 策略
- 导航到 Secure Web Gateway > SSL > 策略。
- 在“SSL 策略”选项卡上,单击“添加”并指定以下参数:
- 策略名称
- 策略操作 — 从拦截、绕过或重置中选择。
- 表达式
- 单击创建。
使用 SWG CLI 将 SSL 策略绑定到代理服务器
在命令提示符下,键入:
bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type INTERCEPT_REQ
<!--NeedCopy-->
示例:
bind ssl vserver <name> -policyName pol1 -priority 10 -type INTERCEPT_REQ
<!--NeedCopy-->
使用 Citrix SWG GUI 将 SSL 策略绑定到代理服务器
- 导航到 Secure Web Gateway > 代理虚拟服务器。
- 选择虚拟服务器,然后单击 Edit(编辑)。
- 在 高级设置中,单击 SSL 策略。
- 在 SSL 策略 框中单击。
- 在“选择策略”中,选择要绑定的策略。
- 在 类型中,选择 拦截 _REQ。
- 单击 绑定 ,然后单击 确 定。
使用命令行取消将 SSL 策略绑定到代理服务器
在命令提示符下,键入:
unbind ssl vserver <vServerName> -policyName <string> -type INTERCEPT_REQ
<!--NeedCopy-->
SWG 的 SSL 策略中使用的 SSL 表达式
表达式 | 说明 |
---|---|
CLIENT.SSL.CLIENT_HELLO.SNI.* |
以字符串格式返回 SNI 扩展名。评估字符串以查看它是否包含指定的文本。示例:client.ssl.client_hello.sni.contains("xyz.com" ) |
CLIENT.SSL.ORIGIN_SERVER_CERT.* |
返回从后端服务器接收的字符串格式的证书。评估字符串以查看它是否包含指定的文本。示例:client.ssl.origin_server_cert.subject.contains("xyz.com" ) |
CLIENT.SSL.DETECTED_DOMAIN.* |
从 SNI 扩展或源服务器证书返回字符串格式的域。评估字符串以查看它是否包含指定的文本。示例:client.ssl.detected_domain.contains("xyz.com" ) |