Citrix ADC

创建和配置 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 Classic 和 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
<!--NeedCopy-->

使用 GUI 创建和配置策略

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

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

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

    将显示 创建 Web App Firewall 策略配置 Web App Firewall 策略

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

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

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

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

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

    • 您可以直接在文本区域中键入规则。
    • 您可以单击前缀为规则选择第一个术语,然后按照提示进行操作。
    • 您可以单击 “添加” 打开 “添加表达式” 对话框,然后使用它来构建规则。
  6. 单击 Create(创建)或 OK(确定),然后单击 Close(关闭)。

创建或配置 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 协议。
    • 系统。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
    • 客户端。选择发送请求的客户端。如果要检查请求发件人的某些方面,请选择此选项。
    • 服务器。选择向其发送请求的客户端,以及是否要检查请求收件人的某个方面。

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

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

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

    当你决定想要哪个术语后,双击它将其插入到 “ 表达式 ” 窗口中。

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

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

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

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

       HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
       <!--NeedCopy-->
      

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

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

       HTTP.REQ.URL.STARTSWITH("https//www.example.com/folder")
       <!--NeedCopy-->
      

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

    • 特定类型的内容:GIF 图片。要匹配 GIF 格式的图像:

       HTTP.REQ.URL.ENDSWITH(".gif")
       <!--NeedCopy-->
      

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

    • 特定类型的内容:脚本。要匹配位于 CGI-BIN 目录中的所有 CGI 脚本:

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

      要将所有 JavaScript 与 .js 扩展名匹配:

       HTTP.REQ.URL.ENDSWITH(".js")
       <!--NeedCopy-->
      

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

    注意:

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

    HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
    <!--NeedCopy-->
    

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

    HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
    <!--NeedCopy-->
    

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

添加表达 式” 对话框(也称为表达式编辑器)可帮助不熟悉 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 协议。默认选择。
    • 系统。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
    • 客户端。如果要检查请求发件人的某些方面,请选择发送请求的计算机。
    • 服务器。选择将请求发送到的计算机,然后检查请求收件人的某些方面。
  4. 在第二个列表框中,选择下一个学期。根据您在上一步中所做的选择,可用术语的不同,因为对话框会自动调整列表,以便仅包含对上下文有效的术语。例如,如果您在上一个列表框中选择了 HTTP,则对于请求,唯一的选择是 REQ。由于 Web App Firewall 将请求和关联的响应视为单个单元并对其进行过滤,因此您无需单独进行特定响应。选择第二个学期后,第二个学期的右侧将显示第三个列表框。“帮助” 窗口显示第二个术语的说明, 预览表达式 窗口将显示您的表达式。
  5. 在第三个列表框中,选择下一个术语。右侧将显示一个新的列表框,“帮助” 窗口将发生变化以显示新术语的描述。“ 预览表达式 ” 窗口将更新以按照您指定的表达式显示该表达式。
  6. 继续选择术语,并在系统提示填写参数时,直到表达式完成。如果你犯了错误或想在选择术语后更改表达式,你可以简单地选择另一个术语。表达式将被修改,您在修改的术语之后添加的任何参数或更多术语都将被清除。
  7. 构建完表达式后,单击 确定 关闭 添加表达式 对话框。您的表达式将插入到“表 达式”文本区域。
创建和配置 Web App Firewall 策略