Citrix ADC

配置经典表达式

经典表达式由以下表达式元素组成,按层次顺序列出:

  • 流量类型。指定连接是传入还是传出。流量类型是传入连接的 REQ,传出连接的 REQ。
  • 协议。指定协议,其中的选项包括 HTTP、SSL、TCP 和 IP。
  • 限定符。协议属性,取决于所选协议。
  • 运算符。要对连接数据执行的测试类型。您选择的运算符取决于您正在测试的连接信息。如果要测试的连接信息是文本,则可以使用文本运算符。如果是数字,则可以使用标准数字运算符。
  • 价值。用于测试连接数据元素(由流类型、协议和限定符定义)的字符串或数字。该值可以是文字或表达式。文字或表达式必须与连接数据元素的数据类型匹配。

在策略中,可以组合经典表达式以使用布尔运算符和比较运算符创建更复杂的表达式。

表达式元素从左到右解析。最左边的元素是 REQ 或 RES,分别指定请求或响应。连续术语定义特定连接类型和该连接类型的特定属性。每个术语与任何前一个术语或后一个术语按一段时间分开。参数出现在括号中,并在传递它们的表达式元素后面。

以下经典表达式片段返回传入连接的客户端源 IP。

REQ.IP.SOURCEIP

该示例标识请求中的 IP 地址。表达式元素 SOURCEIP 指定源 IP 地址。此表达式片段本身可能没有用处。您可以使用附加表达式元素(运算符)来确定返回值是否满足特定条件。以下表达式测试客户端 IP 是否位于子网 200.0.0.0/8 中,并返回布尔值 TRUE 或 FALSE:

REQ.IP.SOURCEIP == 200.0.0.0 -netmask 255.0.0.0

使用 CLI 创建经典策略表达式

在命令提示窗口中,键入以下命令来设置参数并验证配置:

-  set appfw policy <name> -rule <expression> -action <action>

-  show appfw policy <name>

示例

> set appfw policy GenericApplicationSSL_ 'HTTP.REQ.METHOD.EQ("get")' APPFW_DROP
 Done
> show appfw policy GenericApplicationSSL_
        Name: GenericApplicationSSL_    Rule: HTTP.REQ.METHOD.EQ("get")
        Profile: APPFW_DROP     Hits: 0
        Undef Hits: 0
        Policy is bound to following entities
        1) REQ VSERVER app_u_GenericApplicationSSLPortalPages   PRIORITY : 100
 Done

通过使用 GUI 为经典策略添加表达式

此过程记录“添加表达式”对话框。根据要配置策略的功能,到达此对话框的路由可能会有所不同,具体取决于您要为其配置策略的功能。

  1. 执行“使用 GUI 创建具有经典表达式的策略”中的步骤 1-4。
  2. 添加表达式对话框的“表达式类型”中,单击要创建的表达式的类型。
  3. 流量类型下,单击向下箭头并选择流量类型。

流量类型通常是 REQ 或 RES。REQ 选项指定策略应用于所有传入连接或请求。RES 选项将策略应用于所有传出连接或响应。

对于应用程序防火墙策略,应将表达式类型设置为常规表达式,并将流类型设置为 REQ。应用程序防火墙将每个请求和响应视为单个配对实体,因此所有应用程序防火墙策略都以 REQ 开头。

  1. 在“协议”下,单击向下箭头,然后为策略表达式选择所需的协议。选项包括:

    • HTTP。评估发送到 Web 服务器的 HTTP 请求。对于经典表达式,HTTP 包括 HTTPS 请求。
    • SSL。评估与当前连接关联的 SSL 数据。
    • TCP。评估与当前连接关联的 TCP 数据。
    • IP。评估与当前连接关联的 IP 地址。
  2. 在“限定符”下,单击向下箭头,然后为您的策略选择一个限定符。 限定符定义要评估的数据类型。显示的限定符列表取决于您在步骤 4 中选择的协议。 HTTP 协议将显示以下选项:

    • 方法。筛选使用特定 HTTP 方法的 HTTP 请求。
    • URL。筛选特定网页的 HTTP 请求。
    • URLQUERY。筛选包含特定查询字符串的 HTTP 请求。
    • 版本。根据指定的 HTTP 协议版本筛选 HTTP 请求。
    • 标头。基于特定 HTTP 标头进行筛选。
    • URLLEN。根据 URL 的长度进行筛选。
    • URLQUERY。根据 URL 的查询部分进行筛选。
    • 库尔克林。仅基于 URL 的查询部分的长度进行筛选。
  3. 在“运算符”下,单击向下箭头,然后为您的策略表达式选择运算符。一些常见的运算符是:

接线员 说明
== 完全匹配指定值或完全等于指定值。
!= 与指定值不匹配。
> 大于指定值。
< 小于指定值。
>= 大于或等于指定值。
<= 小于或等于指定值。
CONTAINS 包含指定的值。
CONTENTS 返回指定标头、URL 或 URL 查询的内容。
存在 指定的标头或查询存在。
NOTCONTAINS 不包含指定的值。
NOTEXISTS 指定的标头或查询不存在。
  1. 如果显示“值”文本框,请根据需要键入字符串或数值。例如,选择 REQ 作为流类型,选择 HTTP 作为协议,选择标头作为限定符,然后在“值”字段中键入标头字符串的值,并在“标头名称”文本框中键入要匹配的字符串的标头类型。

  2. 单击确定

  3. 要创建复合表达式,请单击“添加”。请注意,完成的复合类型取决于创建策略对话框中的以下选项:

    • 匹配任何表达式。表达式处于逻辑 OR 关系中。
    • 匹配所有表达式。表达式处于逻辑 AND 关系中。
    • 格表达式。单击“AND”、“OR”和“括号”按钮以控制评估。
    • 高级自由格式。直接在“表达式”字段中输入表达式组件,然后单击 AND、OR 和括号按钮以控制评估。

配置经典表达式