Citrix ADC

有关配置文件的补充信息

以下是有关 Web App Firewall 配置文件特定方面的补充信息。此信息介绍了如何在安全检查规则或放宽中包含特殊字符,以及如何在配置配置文件时使用变量。

配置变量支持

要配置 Web App Firewall 的安全检查和设置,现在可以使用标准 Citrix ADC 命名变量,而不是使用静态值。通过创建变量,您可以更轻松地将配置导出并导入新的 Citrix ADC 设备,或者从一组配置文件中更新现有 Citrix ADC 设备。当您使用测试台设置开发针对本地网络和服务器进行调谐的复杂 Web App Firewall 配置,然后将该配置传输到生产 Citrix ADC 设备时,这可简化更新。

创建 Web App Firewall 配置变量的方式与执行任何其他 Citrix ADC 命名变量相同,遵循标准 Citrix ADC 约定。要使用 GUI 创建命名表达式变量,请使用“添加表达式对话框”框。要使用 Citrix ADC 命令行创建命名表达式变量,请使用添加表达式命令后跟相应的参数。

可以使用变量而不是静态值来配置以下 URL 和表达式:

  • 开始 URL (-starturl)
  • 拒绝 URL ( -denyurl)
  • 表单字段一致性检查表单操作 URL (-fieldconsistency)
  • XML SQL 注入检查操作 URL (-xmlSQLInjection)
  • XML 跨站点脚本检查操作 URL (-xmlXSS)
  • HTML SQL 注入检查表单操作 URL (-sqlInjection)
  • 字段格式检查表单操作 URL (-fieldFormat)
  • 跨站点请求伪造 (CSRF) 检查表单源 URL表单操作 URL (-csrfTag)
  • HTML 跨站脚本检查表单操作 URL (-crossSiteScripting)
  • 安全对象 (-safeObject)
  • XML 拒绝服务 (XDoS) 检查操作 URL (-XMLDoS)
  • Web 服务互操作性检查URL (-XMLWSIURL)
  • <XML 验证检查URL (-XMLValidationURL)
  • XML 附件检查URL (-XMLAttachmentURL)

有关详细信息,请参阅策略和表达式

要在配置中使用变量,请将变量名称包括在两个 (@) 符号之间,然后完全像使用它替换的静态值一样使用它。例如,如果要使用 GUI 配置拒绝 URL 校验,并希望将命名表达式变量 myDenyURL 添加到配置中,则可在“添加拒绝 URL”对话框“拒绝 URL”文本区域中键入 @myDenyURL@。要使用 Citrix ADC 命令行执行相同的任务,您可以键入 add appfw profile <name> -denyURLAction @myDenyURL@。

PCRE 字符编码格式

Citrix ADC 操作系统仅支持直接 输入可打印 ASCII 字符集中的字符,即十六进制代码介于十六进制 20 (ASCII 32) 和十六进制 7E (ASCII 127) 之间的字符。要在 Web App Firewall 配置中包含超出该范围的代码的字符,必须输入其 UTF-8 十六进制代码作为 PCRE 正则表达式。

如果将许多字符类型作为 URL、表单字段名称或安全对象表达式包含在 Web App Firewall 配置中,则需要使用 PCRE 正则表达式进行编码。这些措施包括:

  • 上 ASCII 字符。带有从十六进制 7F (ASCII 128) 到十六进制 FF (ASCII 255) 编码的字符。根据所使用的字符映射,这些编码可以引用控制代码、带重音或其他修改的 ASCII 字符、非拉丁字母字符以及基本 ASCII 集中未包含的符号。这些字符可以显示在 URL、表单字段名称和安全对象表达式中。

  • 双字节字符。带有使用两个 8 字节单词的编码的字符。双字节字符主要用于表示电子格式中文、日文和韩文文本。这些字符可以显示在 URL、表单字段名称和安全对象表达式中。

  • ASCII 控制字符。用于向打印机发送命令的不可打印字符。所有十六进制代码小于十六进制 20 (ASCII 32) 的 ASCII 字符都属于此类别。但是,这些字符绝不应出现在 URL 或表单字段名称中,并且如果曾经出现在安全对象表达式中,则很少出现这些字符。

Citrix ADC 设备不支持整个 UTF-8 字符集,但仅支持以下八个字符集中找到的字符:

  • 美国英文(国际标准化组织-8859-1。虽然标签显示为“美国英语”,但 Web App Firewall 支持 ISO-8859-1 字符集(也称为 Latin-1 字符集)中的所有字符。这个字符集完全代表了大多数现代西欧语言,并代表了除少数不寻常的字符之外的所有其他字符。

  • 繁体中文 (Big5)。Web App Firewall 支持 BIG5 字符集中的所有字符,其中包括在香港、澳门、台湾以及许多居住在中国大陆以外的中国人常用的现代汉语口语和书写的所有繁体中文字符。

  • 简体中文 (GB2312)。Web App Firewall 支持 GB2312 字符集中的所有字符,其中包括所有在中国大陆常用的现代中文简体字符(构图)。

  • 日语 (SJIS)。Web App Firewall 支持 SHIFT-JIS (SJIS) 字符集中的所有字符,其中包括现代日语中常用的大多数字符(表象符)。

  • 日语 (欧盟-太平洋联盟)。Web App Firewall 支持 EUC-JP 字符集中的所有字符,其中包括现代日语中常用的所有字符(理想字符)。

  • 朝鲜语 (欧洲联盟-克罗地亚)。Web App Firewall 支持 EUC-KR 字符集中的所有字符,其中包括在现代韩语中常用的所有字符(表象符)。

  • 土耳其语 (国际标准化组织-8859-9)。Web App Firewall 支持 ISO-8859-9 字符集中的所有字符,其中包括现代土耳其语中使用的所有字母。

  • 统一码 (UTF-8)。Web App Firewall 支持 UTF-8 字符集中的某些附加字符,包括在现代俄语中使用的字符。

配置 Web App Firewall 时,您可以使用 UTF-8 规范中分配给该字符的十六进制代码将所有非 ASCII 字符作为 PCRE 格式正则表达式输入。常规 ASCII 字符集中的符号和字符(在该字符集中分配了单两位数字代码)将在 UTF-8 字符集中分配相同的代码。例如,感叹号 (!) 在 ASCII 字符集中分配的十六进制代码 21,在 UTF-8 字符集中也是十六进制 21。来自另一个受支持的字符集的符号和字符在 UTF-8 字符集中有一组分配给它们的十六进制代码。例如,具有尖锐重音 (á) 的字母 a 被分配为 UTF-8 代码 C3 A1。

在 Web App Firewall 配置中用于表示这些 UTF-8 代码的语法为 ASCII 字符“xNN”;“\xNN\xNN”表示英语、俄语和土耳其语中使用的非 ASCII 字符;“\xNN\xNN\xNN”表示中文、日语和韩语中使用的字符。例如,如果您想表示一个! 在 Web App Firewall 正则表达式中作为 UTF-8 字符键入\ x21。如果您想包含一个 á,您可以键入 \xC3\xA1。

注意:

通常情况下,您不需要以 UTF-8 格式表示 ASCII 字符,但是当这些字符可能会混淆 Web 浏览器或底层操作系统时,您可以使用字符的 UTF-8 表示来避免这种混淆。例如,如果 URL 包含空格,则可能需要将空格编码为 x20,以避免混淆某些浏览器和 Web 服务器软件。

以下是 URL、表单字段名称和安全对象表达式的示例,其中包含非 ASCII 字符,这些字符必须作为 PCRE 格式正则表达式输入,才能包含在 Web App Firewall 配置中。每个示例首先显示实际的 URL、字段名称或表达式字符串,后跟一个 PCRE 格式的正则表达式。

  • 包含扩展 ASCII 字符的 URL。

    实际网址:http://www.josénuñez.com

    编码的 URL:^http://www\[.\]jos\xC3\xA9nu\xC3\xB1ez\[.\]com$

  • 包含扩展 ASCII 字符的另一个 URL。

    实际网址:http://www.example.de/trömso.html

    编码的 URL:^http://www[.]example\[.]de/tr\xC3\xB6mso[.]html$

  • 包含扩展 ASCII 字符的表单字段名称。

    Actual Name: nome_do_usuário

    编码名称:^nome_do_usu\xC3\xA1rio$

  • 包含扩展 ASCII 字符的安全对象表达式。

    未编码的表达式 [升序]{3,6}¥[1-9][0-9]{6,6}

    编码的表达式:[升序]{3,6}\xC2\xA5[1-9][0-9]{6,6}

您可以在 Internet 上找到许多包含整个 Unicode 字符集和匹配 UTF-8 编码的表。包含此信息的有用网站位于以下 URL:

http://www.utf8-chartable.de/unicode-utf8-table.pl

要使本网站表格中的字符正确显示,您必须在计算机上安装适当的 Unicode 字体。如果不这样做,则角色的可视显示可能出现错误。但是,即使您没有安装适当的字体来显示字符,这组网页上的描述以及 UTF-8 和 UTF-16 代码将是正确的。

倒置 PCRE 表达式

除了匹配包含模式的内容之外,您还可以使用倒置 PCRE 表达式匹配不包含模式的内容。要反转表达式,您只需包含一个感叹号 (!) 后跟空格作为表达式中的第一个字符。

注意: 如果一个表达式只包含一个感叹号,但没有后面的内容,则感叹号将被视为一个文字字符,而不是指示反转表达式的语法。

以下 Web App Firewall 命令支持倒置 PCRE 表达式:

  • 开始 URL (URL)
  • 拒绝 URL (URL)
  • 表单字段一致性(表单操作 URL)
  • Cookie 一致性(表单操作 URL)
  • 跨站请求伪造 (CSRF)(表单操作 URL)
  • HTML 跨站点脚本(表单操作 URL)
  • 字段格式(表单操作 URL)
  • 字段类型(类型)
  • 机密字段 (URL)

注意:如果安全检查包含 IsRegex 标志或复选框,则必须将其设置为 YES 或选中以在字段中启用正则表达式。否则,该字段的内容将被视为文字,并且不会解析任何正则表达式(倒置或否)。

Web App Firewall 配置文件的禁用名称

以下名称分配给 Citrix ADC 设备上的内置操作和配置文件,不能用作用户创建的 Web App Firewall 配置文件的名称。

  • AGRESSIVE
  • ALLOW
  • BASIC
  • CLIENTAUTH
  • COMPRESS
  • CSSMINIFY
  • DEFLATE
  • DENY
  • DNS-NOP
  • DROP
  • GZIP
  • HTMLMINIFY
  • IMGOPTIMIZE
  • JSMINIFY
  • MODERATE
  • NOCLIENTAUTH
  • NOCOMPRESS
  • 努普
  • NOREWRITE
  • RESET
  • SETASLEARNNSLOG_ACT
  • SETNSLOGPARAMS_ACT
  • SETSYSLOGPARAMS_ACT
  • SETTMSESSPARAMS_ACT
  • SETVPNPARAMS_ACT
  • SET_PREAUTHPARAMS_ACT
  • default_DNS64_action
  • dns_default_act_Cachebypass
  • dns_default_act_Drop
  • nshttp_default_profile
  • nshttp_default_strict_validation
  • nstcp_default_Mobile_profile
  • nstcp_default_XA_XD_profile
  • nstcp_default_profile
  • nstcp_default_tcp_interactive_stream
  • nstcp_default_tcp_lan
  • nstcp_default_tcp_lan_thin_stream
  • nstcp_default_tcp_lfp
  • nstcp_default_tcp_lfp_thin_stream
  • nstcp_default_tcp_lnp
  • nstcp_default_tcp_lnp_thin_stream
  • nstcp_internal_apps

有关配置文件的补充信息