添加签名规则模式
您可以添加模式或修改现有模式,以指定字符串或表达式,如果签名匹配,则该字符串或表达式可以描述攻击的特征。要检测攻击表现出的模式,可以检查 Web 服务器上的日志。您可以使用工具实时观察连接数据,也可以从有关攻击的第三方报告中获取字符串或表达式。
重要
信息:您添加到签名规则的新模式与现有模式处于 AND 关系。如果您不希望潜在攻击必须匹配所有模式才能匹配签名,则不要向现有签名规则添加模式。
每种模式可以由简单的字符串、PCRE 格式的正则表达式或内置的 SQL 注入或跨站点脚本模式组成。在尝试添加基于正则表达式的模式之前,必须确保了解 PCRE 格式的正则表达式。PCRE 表达式复杂而强大。如果您不了解它们是如何工作的,您可能会无意中创建一种与您不想要的东西( 误报)或不匹配您想要的东西( 假阴性)的模式。
非默认内容类型的自定义签名模式
NetScaler Web App Firewall (WAF) 现在支持使用新位置来检查规范化内容。默认情况下,WAF 不会屏蔽非默认内容类型的编码有效负载。当这些内容类型被列入白名单且未应用任何配置的操作时,SQL 和跨站点脚本保护检查不会过滤编码负载中的 SQL 或跨站点脚本攻击。要解决此问题,用户可以使用这个新位置 (HTTP_CANON_POST_BODY) 创建自定义签名规则,用于检查非默认内容类型的编码负载,如果存在任何 SQL 或跨站脚本攻击,则会在帖子正文规范化后阻止流量。
注意:
该支持仅适用于 HTTP 请求。
如果您还不熟悉 PCRE 格式的正则表达式,您可以使用以下资源来学习基础知识,或者寻求一些特定问题的帮助:
- 《掌握正则表达式》,第三版。版权所有 (c) 2006 由杰弗里·弗里德尔提供。O’Reilly Media,ISBN:9780596528126。
- “正则表达式食谱”。版权所有 (c) 2009 由 Jan Goyvaerts 和 Steven Levithan 提供。O’Reilly Media,ISBN:9780596520687
- PCRE 手册页/规范
- PCRE 手册页/规格
- 维基百科 PCRE 条目
- PCRE 邮件列表
如果您需要在 PCRE 格式的正则表达式中对非 ASCII 字符进行编码,NetScaler 平台支持对十六进制 UTF-8 代码进行编码。有关更多信息,请参阅 PCRE 字符编码格式。
配置签名规则模式
编辑签名时,可以添加或编辑规则模式。要添加或修改签名规则,请参阅 编辑签名以添加或修改规则。
-
类型 -选择模式要匹配的连接类型。
- 请求 -它与请求元素或功能相匹配,例如注入的 SQL 代码、对 Web 表单的攻击、跨站点脚本或不恰当的 URL。
- 响应 -它与响应元素或功能(例如信用卡号或安全对象)相匹配。
-
位置 -使用此模式选择要检查的 区域 。该区域描述了针对这种模式需要检查 HTTP 请求或响应的哪些元素。根据所选图案类型,选项显示在 区域 列表中。取决于所选的图案类型。
对于 请求 模式类型,将显示与 HTTP 请求相关的项目。
- HTTP_ANY。HTTP 连接的所有部分。
-
HTTP_COOKIE 执行任何 cookie 转换后,HTTP 请求标头中的所有 cookie 都已完成。
注意
不搜索 HTTP 响应“Set-Cookie:”标头。
-
HTTP_FORM_FIELD。在 URL 解码、百分比解码和删除多余的空格之后,表单字段及其内容。您可以使用
<Location>
标签进一步限制要搜索的表单字段名称列表。 - HTTP_HEADER。任何跨站脚本或 URL 解码转换后的 HTTP 标头的值部分。
- HTTP_METHOD。HTTP 请求方法。
- HTTP_URL。转换为 UTF-* 字符集、URL 解码、去除空格并将相对 URL 转换为绝对值后,HTTP 标头中 URL 的值部分,不包括任何查询或片段端口。不包括 HTML 实体解码。
- HTTP_ORIGIN_URL。网络表单的来源 URL。
- HTTP_POST_BODY。HTTP 帖子正文及其包含的 Web 表单数据。
- HTTP_RAW_COOKIE。所有 HTTP 请求 cookie,包括“Cookie:”名称部分。 注意:不搜索 HTTP 响应“Set-Cookie:”标头。
- HTTP_RAW_HEADER。整个 HTTP 标头,各个标头由换行符 (\ n) 或回车符/换行字符串 (\ r\ n) 分隔。
对于 响应 类型,将显示与 HTTP 响应相关的项目。
- HTTP_RAW_RESP_HEADER。整个响应标头,包括 URL 转换完成后响应标头的名称和值部分以及完整的响应状态。与 HTTP_RAW_HEADER 一样,各个标题由换行符 (\ n) 或回车符/换行字符串 (\ r\ n) 分隔。
-
HTTP_RAW_SET_COOKIE。执行任何 URL 转换后的整个 Set-Cookie 标头
注意:
URL 转换可以更改 Set-Cookie 标头的域和路径部分。
- HTTP_RAW_URL。执行任何 URL 转换之前的完整请求 URL,包括任何查询或片段部分。
- HTTP_RESP_HEADER。执行任何 URL 转换后的完整响应标头的值部分。
- HTTP_RESP_BODY。HTTP 响应正文
- HTTP_SET_COOKIE。HTTP 响应标头中的所有“Set-Cookie”标头。
- HTTP_STATUS_CODE。HTTP 状态码。
- HTTP_STATUS_MESSAGE。HTTP 状态消息。
当您从“区域”列表中选择一个选项时,它会动态更改所选区域的选项。
- 任何。检查字段名称或 URL。
- 文字。检查包含文字字符串的字段名或 URL。选择“文字”后,将显示一个文本框。在文本框中键入所需的文字字符串。
- PCRE。检查与 PCRE 格式正则表达式匹配的字段名称或 URL。选择此选项后,将显示正则表达式窗口。在窗口中键入正则表达式。您可以使用正则 表达式标记 在光标处插入常用的正则表达式元素,也可以单击 Regex 编辑器以显示“正则表达式编辑器”对话框,该对话框为构造所需的正则表达式提供了更多帮助。
- 表达式。检查与 NetScaler 默认表达式相匹配的字段名称或 URL。
-
模式 -模式 是文字字符串或 PCRE 格式的正则表达式,用于定义要匹配的模式。从列表中选择 匹配 类型。
- 文字。一个字面字符串。
-
PCRE。PCRE 格式的正则表达式。
注意
选择 PCRE 时,模式窗口下方的正则表达式工具将启用。这些工具对大多数其他类型的模式没有用。
-
表达式。NetScaler 默认表达式语言中的表达式与在 NetScaler 设备上创建 Web App Firewall 策略的表达式语言相同。尽管 NetScaler 表达式语言最初是为策略规则开发的,但它是一种高度灵活的通用语言,也可用于定义签名模式。
选择表达式时,NetScaler 表达式编辑器将显示在模式窗口下方。有关表达式编辑器的详细信息以及有关如何使用它的说明,请参阅使用添加表达式对话框添加防火墙规则(表达式)
-
SQL 注入。指示 Web App Firewall 在指定位置查找注入的 SQL。
-
CrossSiteScripting。指示 Web App Firewall 在指定位置查找跨站点脚本。
-
CommandInjection。指示 NetScaler Web App Firewall 在指定位置查找任何注入的恶意命令。
-
SQLInjectionGrammar。指示 NetScaler Web App Firewall 在指定位置查找注入的 SQL 语法。尤其是在 HTTP 请求中使用诸如
Select
和From
之类的常用词时。 - CommandInjectionGrammar。指示 NetScaler Web App Firewall 在指定位置查找注入的恶意命令语法。尤其是在HTTP请求中使用诸如“Exit”之类的常用词时。
如果要配置更多设置,请指定以下内容:
- 抵消。在此模式上开始匹配之前要跳过的字符数。您可以使用此字段在第一个字符以外的某个时刻开始检查字符串。
- 深度。从起点开始要检查多少个字符是否匹配。您可以使用此字段将大型字符串的搜索限制为特定数量的字符。
- 最小长度。要搜索的字符串长度必须至少为指定的字节数。较短的字符串不匹配。
- 最大长度。要搜索的字符串长度不得超过指定的字节数。较长的字符串不匹配。
-
搜索方法。标记为
fastmatch
的复选框。您fastmatch
只能为文字模式启用以提高性能。
注意
在“签名规则模式”窗格中单击“确定”之前,不会保存您的更改。除非要放弃所做的更改,否则请勿在未单 击“确定”的情况下关闭其中任何一个对话框。