创建和配置 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
save ns config
示例
下面的示例添加了一个名为 pl-blog 的策略,其中包含拦截主机 blog.example.com 的所有流量的规则,并将该策略与配置文件 pr-blog 相关联。这是保护以特定主机名称托管的博客的合适策略。
添加appfw策略pl-blog "HTTP.REQ.HOSTNAME.DOMAIN.EQ("blog.example.com")" pr-blog
使用 GUI 创建和配置策略
导航到安全>Web App Firewall>策略。
在详细信息窗格中,执行以下操作之一:
- 要创建防火墙策略,请单击添加。将显示 “创建 Web App Firewall 策略”。
- 要编辑现有防火墙策略,请选择该策略,然后单击编辑。
将显示创建 Web App Firewall 策略或配置 Web App Firewall 策略。
如果要创建防火墙策略,请在 “创建 Web App Firewall 策略” 对话框的 “策略名称” 文本框中,键入新策略的名称。
名称可以以字母、数字或下划线符号开头,可以由 1 至 128 个字母、数字和连字符 (-)、句点 (.) 磅 (#)、空格 ()、在 (@)、等号 (=)、冒号 (:) 和下划线 (_) 符号组成。
如果要配置现有防火墙策略,则此字段为只读字段。你不能修改它。
从配置文件下拉列表中选择要与此策略关联的配置文件。您可以通过单击 “新建” 创建与策略关联的配置文件,也可以通过单击 “修改” 修改现有配置文件。
在表达式文本区域中,为策略创建规则。
- 您可以直接在文本区域中键入规则。
- 您可以单击前缀为规则选择第一个术语,然后按照提示进行操作。
- 您可以单击 “添加” 打开 “添加表达式” 对话框,然后使用它来构建规则。
单击Create(创建)或OK(确定),然后单击Close(关闭)。
创建或配置 Web App Firewall 规则(表达式)
策略规则也称为表达式,定义 Web App Firewall 使用与策略关联的配置文件过滤的 Web 流量。与其他 Citrix ADC 策略规则(或表达式)一样,Web App Firewall 规则使用 Citrix ADC 表达式语法。这种语法功能强大、灵活且可扩展。在这组说明中完全描述太复杂了。您可以使用以下过程创建简单的防火墙策略规则,也可以将其作为策略创建过程的概述来阅读。
如果尚未执行此操作,请导航到Web App Firewall向导或 Citrix ADC GUI 中的相应位置以创建策略规则:
- 如果要在Web App Firewall向导中配置策略,请在导航窗格中单击Web App Firewall,然后在详细信息窗格中单击Web App Firewall 向导,然后导航到指定规则屏幕。
- 如果要手动配置策略,请在导航窗格中,依次展开Web App Firewall、策略和防火墙。在详细信息窗格中,要创建策略,请单击添加。要修改现有策略,请选择该策略,然后单击打开。
在 “指定规则” 屏幕、“创建 Web App Firewall 配置文件” 对话框或 “配置 Web App Firewall 配置文件” 对话框中,单击 “前缀”,然后从下拉列表中选择表达式的前缀。选项包括:
- HTTP。如果要检查与协议有关的请求的某些方面,请选择 HTTP 协议。
- 系统。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
- 客户端。选择发送请求的客户端。如果要检查请求发件人的某些方面,请选择此选项。
- 服务器。选择向其发送请求的客户端,以及是否要检查请求收件人的某个方面。
选择前缀后,Web App Firewall 将显示一个由两部分组成的提示窗口,在顶部显示可能的下一个选项,并在底部简要说明所选选择的含义。
选择你的下一个学期。
如果您选择 HTTP 协议作为前缀,则唯一的选择是 REQ,它指定了请求/响应对。(Web App Firewall 将请求和响应作为一个单元而不是单独运行。)如果你选择了另一个前缀,你的选择会更加多样化。有关特定选择的帮助,请单击该选项一次以在下方的提示窗口中显示有关该选项的信息。
当你决定想要哪个术语后,双击它将其插入到 “表达式” 窗口中。
在刚刚选择的期限之后键入一个期间。然后,系统会提示您选择下一个术语,如上一步所述。当术语要求您键入值时,请填写适当的值。例如,如果选择 HTTP.REQ.HEADER (“”),请在引号之间键入标题名称。
继续从提示中选择术语并填写所需的任何值,直到表达式完成。
以下是用于特定目的的表达式的一些示例。
特定的网络主机。要匹配来自特定 Web 主机的流量:
HTTP.REQ.HEADER("Host").EQ("shopping.example.com")
对于
shopping.example.com
,请替换要匹配的 Web 主机的名称。特定的 Web 文件夹或目录。要匹配来自 Web 主机上特定文件夹或目录的流量:
HTTP.REQ.URL.STARTSWITH("https//www.example.com/folder")
对于 www.example.com,请替换网络主机的名称。对于文件夹,请将文件夹或路径替换为要匹配的内容。例如,如果您的购物车位于名为 /解决方案/订单的文件夹中,则可以将该字符串替换文件夹。
特定类型的内容: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 表达式语言的用户构建与他们想要过滤的流量匹配的策略。
- 如果尚未执行此操作,请导航到Web App Firewall向导或 Citrix ADC GUI 中的相应位置:
- 如果要在Web App Firewall向导中配置策略,请在导航窗格中单击Web App Firewall,然后在详细信息窗格中单击Web App Firewall 向导,然后导航到指定规则屏幕。
- 如果要手动配置策略,请在导航窗格中,依次展开Web App Firewall、策略和防火墙。在详细信息窗格中,要创建策略,请单击添加。要修改现有策略,请选择该策略,然后单击打开。
- 在指定规则屏幕、创建 Web App Firewall 配置文件对话框或配置 Web App Firewall 配置文件对话框中,单击添加。
- 在 “添加表达式” 对话框的“构造表达式” 区域的第一个列表框中,选择以下前缀之一:
- HTTP。如果要检查与 HTTP 协议有关的请求的某些方面,请选择 HTTP 协议。默认选择。
- 系统。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
- 客户端。如果要检查请求发件人的某些方面,请选择发送请求的计算机。
- 服务器。选择将请求发送到的计算机,然后检查请求收件人的某些方面。
- 在第二个列表框中,选择下一个学期。根据您在上一步中所做的选择,可用术语的不同,因为对话框会自动调整列表,以便仅包含对上下文有效的术语。例如,如果您在上一个列表框中选择了 HTTP,则对于请求,唯一的选择是 REQ。由于 Web App Firewall 将请求和关联的响应视为单个单元并对其进行过滤,因此您无需单独进行特定响应。选择第二个学期后,第二个学期的右侧将显示第三个列表框。“帮助” 窗口显示第二个术语的说明,预览表达式窗口将显示您的表达式。
- 在第三个列表框中,选择下一个术语。右侧将显示一个新的列表框,“帮助” 窗口将发生变化以显示新术语的描述。“预览表达式” 窗口将更新以按照您指定的表达式显示该表达式。
- 继续选择术语,并在系统提示填写参数时,直到表达式完成。如果你犯了错误或想在选择术语后更改表达式,你可以简单地选择另一个术语。表达式将被修改,您在修改的术语之后添加的任何参数或更多术语都将被清除。
- 构建完表达式后,单击确定关闭添加表达式对话框。您的表达式将插入到“表达式”文本区域。