创建和配置 Web App Firewall 策略

防火墙策略由两个元素组成: 规则和关联的 配置文件。该规则选择与您设置的条件匹配的 HTTP 流量,并将该流量发送到 Web App Firewall 进行筛选。配置文件包含 Web App Firewall 使用的筛选条件。

策略规则由 Citrix ADC 表达式语言中的一个或多个表达式组成。Citrix ADC 表达式语法是一种功能强大的面向对象的编程语言,使您能够精确地指定要使用特定配置文件处理的流量。对于不完全熟悉 Citrix ADC 表达式语言语法或希望使用基于 Web 的界面配置 Citrix ADC 设备的用户,GUI 提供了两种工具:“前缀”菜单和“添加表达式”对话框。两者都可以帮助您编写精确选择要处理的流量的表达式。完全熟悉该语法的经验丰富的用户可能希望使用 Citrix ADC 命令行配置其 Citrix ADC 设备。

注意:除了默认表达式语法之外,为了向后兼容,Citrix ADC 操作系统支持 Citrix ADC 经典和 nCore 设备和虚拟设备上的 Citrix ADC 经典表达式语法。Citrix ADC 群集设备和虚拟设备不支持经典表达式。想要将现有配置迁移到 Citrix ADC 群集的当前 Citrix ADC 用户必须将包含经典表达式的任何策略迁移到默认表达式语法。

有关 Citrix ADC 表达式语言的详细信息,请参阅策略和表达式

您可以使用 GUI 或 Citrix ADC 命令行创建防火墙策略。

使用命令行界面创建和配置策略

在命令提示符下,键入以下命令:

  • add appfw policy <name><rule> <profileName>
  • save ns config

示例

以下示例添加了一个名为 pl-blog 的策略,其中包含一个规则,该规则可拦截进入或从主机 blog.example.com 的所有流量,并将该策略与配置文件 pr-blog 相关联。这是保护特定主机名上托管的博客的适当策略。

add appfw policy pl-blog "HTTP.REQ.HOSTNAME.DOMAIN.EQ("blog.example.com")" pr-blog

使用 GUI 创建和配置策略

  1. 导航到“安全”>“Web App Firewall”>“策略”。

  2. 在详细信息窗格中,执行以下操作之一:

    • 要创建新的防火墙策略,请单击“添加”。此时将显示“创建 Web App Firewall 策略”。
    • 要编辑现有防火墙策略,请选择该策略,然后单击“编辑”。

    将显示“创建 Web App Firewall 策略”或“配置 Web App Firewall 策略”。

  3. 如果要创建新的防火墙策略,请在“创建 Web App Firewall 策略”对话框的“策略名称”文本框中键入新策略的名称。

    名称可以以字母、数字或下划线符号开头,并且可以由一到 128 个字母、数字和连字符 (-)、句点 (.) 磅 (#)、空格 ()、位于 (@)、等于 (=)、冒号 (:) 和下划线 (_) 符号组成。

    如果要配置现有防火墙策略,则此字段为只读字段。您无法修改它。

  4. 从配置文件下拉列表中选择要与此策略关联的配置文件。您可以通过单击“新建”创建新配置文件以与策略关联,您可以通过单击“修改”来修改现有配置文件。

  5. 在“表达式”文本区域中,为策略创建规则。

    • 您可以直接在文本区域中键入规则。
    • 您可以单击“前缀”以选择规则的第一个术语,然后按照提示操作。请参阅[To Create an Web App Firewall Rule (Expression)]`(/en-us/netscaler/ns-gen-Citrix ADC11-wrapper-con/ns-gen-appsec-wrapper-10-con/appfw-wrapper-con-10/appfw-policies-con/appfw-policies-firewall-tsk/appfw-policies-firewall-configuring-tsk.html),获取此过程的完整说明。
    • 您可以单击“添加”打开“添加表达式”对话框,然后使用它构建规则。有[The Add Expression Dialog Box](/en-us/netscaler/ns-gen-Citrix ADC11-wrapper-con/ns-gen-appsec-wrapper-10-con/appfw-wrapper-con-10/appfw-policies-con/appfw-policies-firewall-tsk/appfw-policies-firewall-configuring-tsk.html 关此过程的完整描述,请参阅。
  6. 单击 创建确定 ,然后单击 关闭

创建或配置 Web App Firewall 规则(表达式)

策略规则(也称为表 达式)定义 Web App Firewall 使用与策略关联的配置文件筛选的 Web 流量。与其他 Citrix ADC 策略规则(或 表达式)一样,Web App Firewall 规则使用 Citrix ADC 表达式语法。此语法强大、灵活且可扩展。在这套指令中完全描述太复杂了。您可以使用以下过程创建简单的防火墙策略规则,也可以将其视为策略创建过程的概述。

  1. 如果尚未执行此操作,请导航到 Web App Firewall 向导或 Citrix ADC GUI 中的相应位置以创建策略规则:

    • 如果要在 Web App Firewall 向导中配置策略,则在导航窗格中单击 Web App Firewall ,然后在详细信息窗格中单击 Web App Firewall 向导 ,然后导航到“指定规则”屏幕。
    • 如果要手动配置策略,请在导航窗格中展开“Web App Firewall”、“略”和“防火墙”。在详细信息窗格中,要创建新策略,请单击“添加”。若要修改现有策略,请选择该策略,然后单击“打开”。
  2. 在“指定规则”屏幕上,“创建 Web App Firewall 配置文件”对话框或“配置 Web App Firewall 配置文件”对话框上,单击“前缀”,然后从下拉列表中为表达式选择前缀。选项包括:

    • HTTP。HTTP 协议。如果要检查与 HTTP 协议相关的请求的某些方面,请选择此选项。
    • SYS. 受保护的网站。如果要检查与请求收件人有关的请求的某些方面,请选择此选项。
    • CLIENT。发送请求的计算机。如果您想检查请求发件人的某些方面,请选择此选项。
    • SERVER. 向其发送请求的计算机。如果要检查请求收件人的某些方面,请选择此选项。

    选择前缀后,Web App Firewall 会显示一个由两部分组成的提示窗口,其中显示顶部可能的下一个选项,并在底部简要说明所选选项的含义。

  3. 选择您的下一个学期。

    如果您选择 HTTP 作为前缀,则唯一的选择是 REQ,它指定了请求/响应对。(Web App Firewall 作为一个单元对请求和响应进行操作,而不是单独对每个单元进行操作。) 如果您选择了另一个前缀,则您的选择会更加多样。有关特定选项的帮助,请单击该选项一次,以在下部提示窗口中显示有关该选项的信息。

    确定所需的术语后,双击该术语将其插入到“表达式”窗口中。

  4. 在您刚刚选择的术语之后键入一个时间段。然后,系统会提示您选择下一个术语,如上一步中所述。当术语要求您键入值时,请填写相应的值。例如,如果您选择 HTTP.REQ.HEET (“”),请在引号之间键入标头名称。

  5. 继续从提示中选择术语并填写所需的任何值,直到表达式完成。

    以下是一些用于特定目的的表达式示例。

    • 特定的网络主机。要匹配来自特定 Web 主机的流量:

       HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
      

      对于购物 .example.com,请替换要匹配的 Web 主机的名称。

    • 特定的 Web 文件夹或目录。要匹配来自 Web 主机上特定文件夹或目录的流量:

       HTTP.REQ.URL.STARTSWITH("https//www.example.com/folder")
      

      替换网站主机的名称。对于文件夹,替换要匹配的内容的文件夹或路径。例如,如果您的购物车位于名为/解决方案/订单的文件夹中,您将该字符串替换为文件夹。

    • 特定内容类型:GIF 图像。要匹配 GIF 格式图像,请执行以下操作:

       HTTP.REQ.URL.ENDSWITH(".gif")
      

      要匹配其他格式的图像,请替换另一个字符串代替 .gif。

    • 特定类型的内容:脚本。要匹配 CGI-BIN 目录中的所有 CGI 脚本,请执行以下操作:

       HTTP.REQ.URL.STARTSWITH("https//www.example.com/CGI-BIN")
      

      要将所有 JavaScript 与 .js 扩展名匹配,请执行以下操作:

       HTTP.REQ.URL.ENDSWITH(".js")
      

      有关创建策略表达式的更多信息,请参阅策略和表达式

    注意:如果使用命令行配置策略,请记住转义 Citrix ADC 表达式中的任何双引号。例如,如果在 GUI 中输入以下表达式是正确的:

    HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
    

    但是,如果在命令行中输入,则必须键入以下内容:

    HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
    

使用“添加表达式”对话框添加防火墙规则(表达式)

“添加表达式”对话框(也称为“表达式编辑器”)可帮助不熟悉 Citrix ADC 表达式语言的用户构建与其要筛选的流量匹配的策略。

  1. 如果尚未执行此操作,请导航到 Web App Firewall 向导或 Citrix ADC GUI 中的相应位置:
    • 如果要在 Web App Firewall 向导中配置策略,则在导航窗格中单击 Web App Firewall ,然后在详细信息窗格中单击 Web App Firewall 向导 ,然后导航到“指定规则”屏幕。
    • 如果要手动配置策略,请在导航窗格中展开“Web App Firewall”、“略”和“防火墙”。在详细信息窗格中,要创建新策略,请单击“添加”。若要修改现有策略,请选择该策略,然后单击“打开”。
  2. 在“指定规则”屏幕上的“创建 Web App Firewall 配置文件”对话框或“配置 Web App Firewall 配置文件”对话框中,单击“添加”。
  3. 添加表达式对话框框的“构造表达式”区域的第一个列表框中,选择以下前缀之一:
    • HTTP。HTTP 协议。如果要检查与 HTTP 协议相关的请求的某些方面,请选择此选项。默认选择。
    • SYS. 受保护的网站。如果要检查与请求收件人有关的请求的某些方面,请选择此选项。
    • CLIENT。发送请求的计算机。如果您想检查请求发件人的某些方面,请选择此选项。
    • SERVER. 向其发送请求的计算机。如果要检查请求收件人的某些方面,请选择此选项。
  4. 在第二个列表框中,选择您的下一个术语。可用术语根据您在上一步中所做的选择而有所不同,因为对话框会自动调整列表以仅包含对上下文有效的术语。例如,如果您在上一列表框中选择了 HTTP,则唯一的选择是 REQ,用于请求。由于 Web App Firewall 将请求和关联响应视为单个单元并筛选这两个单元,因此您无需单独处理特定响应。选择第二个术语后,第二个术语的右侧会出现第三个列表框。“帮助”窗口显示第二个术语的描述,“预览表达式”窗口显示您的表达式。
  5. 在第三个列表框中,选择下一个术语。右侧会出现一个新的列表框,“帮助”窗口将更改以显示新术语的描述。“预览表达式”窗口将进行更新,以显示已指定的表达式到该点时的表达式。
  6. 继续选择术语,并在提示填写参数时,直到表达式完成。如果您在选择一个术语后犯了错误或想要更改表达式,您可以简单地选择另一个术语。该表达式将被修改,并且清除您在修改的术语之后添加的所有参数或其他术语。
  7. 完成构建表达式后,单击确定以关闭添加表达式对话框。您的表达式将插入到“表 达式”文本区域。