用于 SSL 拦截的 SSL 策略基础结构
策略就像传入流量的过滤器。Citrix Secure Web Gateway™ (SWG) 设备上的策略有助于定义如何管理代理连接和请求。处理过程基于为该策略配置的操作。也就是说,连接请求中的数据会与策略中指定的规则进行比较,然后将操作应用于与该规则(表达式)匹配的连接。在为策略定义操作并创建策略后,将其绑定到代理服务器,以便它应用于流经该代理服务器的流量。
用于 SSL 拦截的 SSL 策略会评估传入流量,并将预定义的操作应用于与规则(表达式)匹配的请求。拦截、绕过或重置连接的决定是根据定义的 SSL 策略做出的。您可以为策略配置三种操作之一:INTERCEPT、BYPASS 或 RESET。创建策略时指定一个操作。要使策略生效,您必须将其绑定到设备上的代理服务器。要指定策略用于 SSL 拦截,在将策略绑定到代理服务器时,必须将类型(绑定点)指定为 INTERCEPT_REQ。解除策略绑定时,必须将类型指定为 INTERCEPT_REQ。
注意:
仅当您指定策略时,代理服务器才能决定是否拦截。
流量拦截可以基于任何 SSL 握手属性。最常用的是 SSL 域。SSL 域通常由 SSL 握手的属性指示。它可以是(如果存在)从 SSL 客户端 Hello 消息中提取的服务器名称指示 (SNI) 值,也可以是从源服务器证书中提取的服务器备用名称 (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-->
如果客户不想使用 detected_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 > 代理虚拟服务器。
- 选择一个虚拟服务器,然后单击“编辑”。
- 在“高级设置”中,单击“SSL 策略”。
- 单击“SSL 策略”框内。
- 在“选择策略”中,选择要绑定的策略。
- 在“类型”中,选择 INTERCEPT_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") |