创建和配置 Web App Firewall 策略
防火墙策略由两个元素组成: 规则和关联的 配置文件。该规则选择与您设置的条件匹配的 HTTP 流量,然后将该流量发送到 Web App Firewall 进行筛选。配置文件包含 Web App Firewall 使用的过滤条件。
策略规则由 NetScaler 表达式语言中的一个或多个表达式组成。NetScaler 表达式语法是一种强大的面向对象的编程语言,它使您能够使用特定配置文件精确指定要处理的流量。对于不熟悉 NetScaler 表达式语言语法或喜欢使用基于 Web 的界面配置 NetScaler 设备的用户,GUI 提供了两个工具: 前缀 菜单和 添加 表达式对话框。两者都有助于编写精确选择要处理的流量的表达式。完全熟悉语法的有经验的用户可能更喜欢使用 NetScaler 命令行来配置他们的 NetScaler 设备。
注意:
除了默认表达式语法外,为了向后兼容,NetScaler 操作系统还支持 NetScaler Classic 和 nCore 设备及虚拟设备上的 NetScaler 经典表达式语法。NetScaler 群集设备和虚拟设备不支持传统表达式。想要将现有配置迁移到 NetScaler 群集的当前 NetScaler 用户必须将包含经典表达式的任何策略迁移到默认表达式语法。
有关 NetScaler 表达式语言的详细信息,请参阅 策略和表达式。
您可以使用 GUI 或 NetScaler 命令行创建防火墙策略。
使用命令行界面创建和配置策略
在命令提示符下,键入以下命令:
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 创建和配置策略
-
导航到 安全 > Web App Firewall > 策略。
-
在详细信息窗格中,执行以下操作之一:
- 要创建防火墙策略,请单击 添加。将显示“创建 Web App Firewall 策略”。
- 要编辑现有防火墙策略,请选择该策略,然后单击 编辑。
将显示 创建 Web App Firewall 策略 或 配置 Web App Firewall 策略 。
-
如果要创建防火墙策略,请在“创建 Web App Firewall 策略”对话框的“策略名称”文本框中,键入新策略的名称。
名称可以以字母、数字或下划线符号开头,可以由一到 128 个字母、数字以及连字符 (-)、句点 (.)、英镑 (#)、空格 ()、at (@)、等于 (=)、冒号 (:) 和下划线 (_) 符号组成。
如果要配置现有防火墙策略,则此字段为只读字段。您不能修改它。
-
从配置文件下拉列表中选择要与此策略关联的配置文件。您可以通过单击“新建”创建与策略关联的配置文件,也可以通过单击“修改”修改现有配置文件。
-
在表达式文本区域中,为策略创建规则。
- 您可以直接在文本区域中键入规则。
- 您可以单击前缀为规则选择第一个术语,然后按照提示进行操作。
- 您可以单击“添加”打开“添加表达式”对话框,然后使用它来构建规则。
-
单击 Create(创建)或 OK(确定),然后单击 Close(关闭)。
创建或配置 Web App Firewall 规则(表达式)
策略规则也称为表 达式,定义 Web App Firewall 使用与策略关联的配置文件过滤的 Web 流量。与其他 NetScaler 策略规则(或 表达式)一样,Web App Firewall 规则使用 NetScaler 表达式语法。这种语法功能强大、灵活且可扩展。在这组说明中完全描述太复杂了。您可以使用以下过程创建简单的防火墙策略规则,也可以将其作为策略创建过程的概述来阅读。
-
如果您尚未这样做,请导航到 Web App Firewall 向导或 NetScaler GUI 中的相应位置以创建您的策略规则:
- 如果要在 Web App Firewall 向导中配置策略,请在导航窗格中单击 Web App Firewall,然后在详细信息窗格中单击 Web App Firewall 向导,然后导航到 指定规则 屏幕。
- 如果要手动配置策略,请在导航窗格中,依次展开 Web App Firewall、策略和防火墙。在详细信息窗格中,要创建策略,请单击 添加。要修改现有策略,请选择该策略,然后单击 打开。
-
在“指定规则”屏幕、“创建 Web App Firewall 配置文件”对话框或“配置 Web App Firewall 配置文件”对话框中,单击“前缀”,然后从下拉列表中选择表达式的前缀。选项包括:
- HTTP。如果要检查与协议有关的请求的某些方面,请选择 HTTP 协议。
- SYS。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
- 客户端。选择发送请求的客户端。如果要检查请求发件人的某些方面,请选择此选项。
- 服务器。选择向其发送请求的客户端,以及是否要检查请求收件人的某个方面。
选择前缀后,Web App Firewall 将显示一个由两部分组成的提示窗口,在顶部显示可能的下一个选项,并在底部简要说明所选选择的含义。
-
选择您的下一个学期。
如果您选择 HTTP 协议作为前缀,则唯一的选择是 REQ,它指定了请求/响应对。(Web App Firewall 将请求和响应作为一个单元而不是单独运行。)如果您选择了另一个前缀,您的选择会更加多样化。有关特定选择的帮助,请单击该选项一次以在下方的提示窗口中显示有关该选项的信息。
当您决定想要哪个术语后,双击它将其插入到“表达式”窗口中。
-
在刚刚选择的期限之后键入一个期间。然后,系统会提示您选择下一个术语,如上一步所述。当术语要求您键入值时,请填写适当的值。例如,如果选择 HTTP.REQ.HEADER (“”),请在引号之间键入标题名称。
-
继续从提示中选择术语并填写所需的任何值,直到表达式完成。
以下是用于特定目的的表达式的一些示例。
-
特定的网络主机。要匹配来自特定 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-->
有关创建策略表达式的详细信息,请参阅 策略和表达式。
注意:
如果您使用命令行配置策略,请记住避开 NetScaler 表达式中的任何双引号。例如,如果在 GUI 中输入以下表达式是正确的:
HTTP.REQ.HEADER("Host").EQ("shopping.example.com") <!--NeedCopy-->
但是,如果在命令行中输入,则必须键入以下命令:
HTTP.REQ.HEADER("Host").EQ("shopping.example.com") <!--NeedCopy-->
-
使用添加表达式对话框添加防火墙规则(表达式)
添加表达式 对话框(也称为表达式编辑器)可帮助不熟悉 NetScaler 表达式语言的用户构建与他们想要筛选的流量相匹配的策略。
- 如果您尚未这样做,请导航到 Web App Firewall 向导或 NetScaler GUI 中的相应位置:
- 如果要在 Web App Firewall 向导中配置策略,请在导航窗格中单击 Web App Firewall,然后在详细信息窗格中单击 Web App Firewall 向导,然后导航到 指定规则 屏幕。
- 如果要手动配置策略,请在导航窗格中,依次展开 Web App Firewall、策略和防火墙。在详细信息窗格中,要创建策略,请单击 添加。要修改现有策略,请选择该策略,然后单击 打开。
- 在 指定规则 屏幕、 创建 Web App Firewall 配置文件 对话框或 配置 Web App Firewall 配置文件 对话框中,单击 添加。
- 在“添加表达式”对话 框的“构造表达式”区域的第一个列表框中,选择以下前缀之一:
- HTTP。如果要检查与 HTTP 协议有关的请求的某些方面,请选择 HTTP 协议。默认选择。
- SYS。如果要检查与请求收件人有关的请求的某些方面,请选择受保护的网站。
- 客户端。如果要检查请求发件人的某些方面,请选择发送请求的计算机。
- 服务器。选择将请求发送到的计算机,然后检查请求收件人的某些方面。
- 在第二个列表框中,选择下一个学期。根据您在上一步中所做的选择,可用术语的不同,因为对话框会自动调整列表,以便仅包含对上下文有效的术语。例如,如果您在上一个列表框中选择了 HTTP,则对于请求,唯一的选择是 REQ。由于 Web App Firewall 将请求和关联的响应视为单个单元并对其进行过滤,因此您无需单独进行特定响应。选择第二个学期后,第二个学期的右侧将显示第三个列表框。“帮助”窗口显示第二个术语的说明, 预览表达式 窗口将显示您的表达式。
- 在第三个列表框中,选择下一个术语。右侧将显示一个新的列表框,“帮助”窗口将发生变化以显示新术语的描述。“预览表达式”窗口将更新以按照您指定的表达式显示该表达式。
- 继续选择术语,并在系统提示填写参数时,直到表达式完成。如果您犯了错误或想在选择术语后更改表达式,您可以简单地选择另一个术语。表达式将被修改,您在修改的术语之后添加的任何参数或更多术语都将被清除。
- 构建完表达式后,单击“确定”关 闭“添加表达式”对话框。您的表达式将插入到 表达式 文本区域。