可以为监控的每个服务器、全局地为所有服务器或者为服务器列表设置服务器级别选项。此外,可以使用预定义的服务器配置文件来设置这些选项,也可以单独设置它们来满足环境需求。可以使用这些选项或设置这些选项的其中一个默认配置文件来指定要规范化其流量的 HTTP
服务器端口、要规范化的服务器响应负载数量以及要规范化的编码的类型。
如果在以下描述中未提及任何预处理器规则,则此选项未与预处理器规则关联。
网络 (Networks)
使用此选项可指定一个或多个服务器的 IP 地址。可以指定单个 IP 地址或地址块,也可以指定由单个地址和/或地址块组成并以逗号分隔的列表。
除总共最多 255 个配置文件(包括默认配置文件)的限制以外,还可以在 HTTP 服务器列表中包含最多 496 个字符(或大约 26 个条目),并为所有服务器配置文件指定总共最多 256 个地址条目。
请注意,默认策略中的 default
设置指定受监控网段上其他基于目标的策略未涵盖的所有 IP 地址。因此,不能且不需要为默认策略指定 IP 地址或 CIDR 块/前缀长度,并且不能在其他策略中将此设置留空或使用地址记法来表示 any
(例如,0.0.0.0/0 或 ::/0)。
端口
预处理器引擎会对其 HTTP 流量进行规范化的端口。使用逗号分隔多个端口号。
过大的目录长度 (Oversize Dir Length)
检测长度超过指定值的 URL 目录。
当预处理器检测到长于指定长度的 URL 请求时,您可以启用规则 119:15 来生成事件并在内联部署中丢弃攻击性数据包。
客户端流量深度 (Client Flow Depth)
为要在端口 (Ports) 中定义的客户端 HTTP 流量中的原始 HTTP 数据包(包括报头和负载数据)中检查的规则指定字节数。如果规则中的 HTTP 内容规则选项检查请求消息的特定部分,客户端流量深度不适用。
可指定以下任意值:
-
正值,检查第一个数据包中的指定字节数。如果第一个数据包包含的字节数小于指定值,则检查整个数据包。请注意,指定值适用于分段和重组的数据包。
另请注意,值 300 通常表示许多客户端请求报头末尾出现的大尺寸 HTTP Cookie 无需检查。
-
0 将会检查所有客户端流量,包括会话中的多个数据包,在必要时可超出字节上限。请注意,此值可能会影响性能。
-
-1 将会忽略所有客户端流量。
服务器流量深度 (Server Flow Depth)
为要在端口 (Ports) 中指定的服务器端 HTTP 流量中的原始 HTTP 数据包中检查的规则指定字节数。Inspect HTTP Responses 处于禁用状态时,会检查原始报头和负载;Inspect HTTP Response 处于启用状态时,仅检查原始响应正文。
服务器流量深度为要在端口 (Ports) 中定义的服务器端 HTTP 流量中检查的规则指定会话中原始服务器响应数据的字节数。可以使用此选项来平衡 HTTP 服务器响应数据的性能和检查级别。如果规则中的 HTTP 内容规则选项检查响应消息的特定部分,服务器流量深度不适用。
不同于客户端流量深度,服务器流量深度为要检查的规则指定每个 HTTP 响应而非每个 HTTP 请求数据包的字节数。
可以指定以下任何内容:
-
正值:
当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,仅检查原始 HTTP 响应正文,不会检查非原始 HTTP 报头;当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,还会同时检查解压缩数据。
当检查 HTTP 响应 (Inspect HTTP Responses) 处于禁用状态时,会检查原始数据包报头和负载。
如果会话包含的响应字节数小于指定值,规则将会根据需要在多个数据包中彻底检查给定会话中的所有响应数据包。如果会话包含的响应字节数大于指定值,规则将会根据需要在多个数据包中仅检查该会话中的指定字节数。
请注意,流量深度值小可能会导致针对端口 (Ports) 中定义的服务器端流量的规则出现漏报。大多数这些规则针对的是,可能处于非报头数据的大约前 100 字节中的 HTTP 报头或内容。报头长度通常少于 300 字节,但报头大小可以不同。
另请注意,指定值适用于分段和重组的数据包。
-
0 将会为端口 (Ports) 中定义的所有 HTTP 服务器端流量检查整个数据包(包括超过 65535 字节的会话中的响应数据)。
请注意,此值可能会影响性能。
-
-1:
当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,仅检查原始 HTTP 响应正文,不会检查原始 HTTP 响应正文。
当检查 HTTP 响应 (Inspect HTTP Responses) 处于禁用状态时,会忽略在端口 (Ports) 中定义的所有服务器端流量。
最大报头长度 (Maximum Header Length)
检测 HTTP 请求中长度超过指定最大字节数的报头字段;如果启用了检查 HTTP 响应 (Inspect HTTP Responses),还会对 HTTP 响应执行此项检查。值为 0 将会禁用此选项。指定正值可启用此选项。
您可以启用规则 119:19 生成事件并在内联部署中丢弃此选项的攻击性数据包。请参阅设置入侵规则状态。。
最大报头数 (Maximum Number of Headers)
检测 HTTP 请求中的报头数量超过此设置的情况。值为 0 将会禁用此选项。指定正值可启用此选项。
您可以启用规则 119:20 生成事件并在内联部署中丢弃此选项的攻击性数据包。请参阅设置入侵规则状态。。
最大空格数 (Maximum Number of Spaces)
检测 HTTP 请求的折线中的空格数量等于或超过此设置的情况。值为 0 将会禁用此选项。指定正值可启用此选项。
您可以启用规则 119:26 生成事件并在内联部署中丢弃此选项的攻击性数据包。请参阅设置入侵规则状态。。
HTTP 客户端正文提取深度 (HTTP Client Body Extraction Depth)
指定从 HTTP 客户端请求的消息正文提取的字节数。通过选择 content
或 protected_content
关键字 HTTP Client Body 选项,可以使用入侵规则检查提取的数据。
指定 -1 将会忽略客户端正文。指定 0 将会提取整个客户端正文。请注意,确定要提取的特定字节数可提高系统性能。另请注意,要使 HTTP 客户端正文 (HTTP Client Body) 选项在入侵规则中起作用,必须为此选项指定一个大于或等于 0 的值。
小数据块大小 (Small Chunk Size)
指定被认为是小数据块的数据块可包含的最大字节数。指定一个正值。值 0 将会禁用对异常连续小分片的检测。有关详细信息,请参阅连续小数据块 (Consecutive Small Chunks) 选项。
连续小数据块 (Consecutive Small Chunks)
指定在使用分块传输编码的客户端流量或服务器流量中,代表异常大数量的连续小数据块的数量。小数据块大小 (Small Chunk Size) 选项指定小数据块的最大大小。
例如,将小数据块大小 (Small Chunk Size) 设置为 10 并将连续小数据块 (Consecutive Small Chunks) 设置为 5,可检测包含 10 个或更少字节的 5 个连续数据块。
对于客户端流量和服务器流量,可分别启用预处理器规则 119:27 和 120:7 针对过多小数据块进行生成事件并在内联部署中丢弃攻击性数据包。如果 Small Chunk Size 已启用且此选项设置为 0 或 1,启用这些规则将会对每个指定大小或更小的数据块触发事件。
HTTP 方法 (HTTP Methods)
指定除预期系统会在流量中遇到的 GET 和 POST 以外的 HTTP 请求方法。使用逗号隔开多个值。
入侵规则将 content
或 protected_content
关键字与 HTTP Method 参数配合使用来搜索 HTTP 方法中的内容。如果在流量中遇到 GET、POST 或为此选项配置的方法以外的方法,您可以启用规则 119:31 来生成事件并在内联部署中丢弃攻击性数据包。请参阅设置入侵规则状态。
无警报 (No Alerts)
当随附的预处理器规则处于启用状态时禁用入侵事件。
注
|
此选项不会禁用 HTTP 标准文本规则和共享对象规则。
|
规范化 HTTP 报头 (Normalize HTTP Headers)
当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,启用请求和响应报头中非 cookie 数据的规范化。如果未启用检查 HTTP 响应 (Inspect HTTP Responses),则启用请求和响应报头中整个 HTTP 报头(包括 cookie)的规范化。
检查 HTTP Cookie (Inspect HTTP Cookies)
允许从 HTTP 请求报头中提取 cookie。当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,还允许从响应报头提取 set-cookie 数据。当不需要提取 cookie 时,禁用此选项可提高性能。
请注意,Cookie:
和 Set-Cookie:
报头名称、报头行中的前导空格以及终止报头行的 CRLF
将作为报头的一部分而非 cookie 的一部分进行检查。
HTTP 报头中的规范化 Cookie (Normalize Cookies in HTTP headers)
启用 HTTP 请求报头中 cookie 的规范化。当检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,还会启用响应报头中 set-cookie 数据的规范化。必须选择检查 HTTP Cookie (Inspect HTTP Cookies) 之后才能选择此选项。
允许 HTTP 代理使用 (Allow HTTP Proxy Use)
允许将受监控的 Web 服务器用作 HTTP 代理。此选项仅用于检查 HTTP 请求。
仅检查 URI (Inspect URI Only)
仅检查规范化 HTTP 请求数据包的 URI 部分。
检查 HTTP 响应 (Inspect HTTP Responses)
启用对 HTTP 响应的延展检查,从而使预处理器不仅会对 HTTP 请求消息进行解码和规范化,还会提取响应字段以供规则引擎进行检查。启用此选项后,系统会提取响应报头、正文、状态代码等;如果还启用了检查 HTTP Cookie (Inspect HTTP Cookies),系统还会提取 set-cookie 数据。
您可以启用规则 120:2 和 120:3 来生成事件并在内联部署中丢弃攻击性数据包,如下所述:
表 6. 检查 HTTP 响应规则
规则
|
遇到以下情况时触发...
|
120:2
|
出现无效的 HTTP 响应状态代码。
|
120:3
|
HTTP 响应不包括内容长度或传输编码。
|
将 UTF 编码规范化为 UTF-8 (Normalize UTF Encodings to UTF-8)
如果启用了检查 HTTP 响应 (Inspect HTTP Responses),此选项检测 HTTP 响应中的 UTF-16LE、UTF-16BE、UTF-32LE 和 UTF32-BE 编码,并将其规范化为 UTF-8。
当 UTF 规范化失败时,您可以启用规则 120:4 来生成事件并在内联部署中丢弃攻击性数据包。
检查压缩数据 (Inspect Compressed Data)
当检查 HTTP 响应 (Inspect HTTP Responses) 已启用时,此选项启用 HTTP 响应正文中的 gzip 和兼容 deflate 的压缩数据的解压,以及对规范化解压缩数据的检查。系统将检查分块和非分块 HTTP 响应数据。系统会根据需要逐一检查多个数据包中的解压缩数据;也就是说,系统不会将来自不同数据包的解压缩数据合并来进行检查。当达到最大压缩数据深度 (Maximum Compressed Data Depth) 或最大解压缩数据深度 (Maximum Decompressed Data Depth) 中指定的值,或者达到压缩数据末尾时,解压缩将会结束。当达到服务器流量深度 (Server Flow Depth) 中指定的值时,对解压缩数据的检查将会结束,除非还选择了无限制解压缩 (Unlimited Decompression)。您可以使用 file_data
规则关键字来检查解压缩数据。
您可以启用规则 120:6 和 120:24 来生成事件并在内联部署中丢弃攻击性数据包,如下所述:
表 7. 检查压缩 HTTP 响应规则
规则
|
遇到以下情况时触发...
|
120:6
|
压缩 HTTP 响应的解压缩失败。
|
120:24
|
压缩 HTTP 响应的部分解压缩失败。
|
无限解压
当启用检查压缩数据 (Inspect Compressed Data)(或者 解压缩 SWF 文件 (LZMA) [Decompress SWF File (LZMA)]、解压缩 SWF 文件 (Deflate) [Decompress SWF File (Deflate)] 或解压缩 PDF 文件 (Deflate) [Decompress PDF File (Deflate)])时,会跨多个数据包覆盖最大压缩数据深度 (Maximum Compressed Data Depth);也就是说,此选项支持跨多个数据包无限制解压缩。请注意,启用此选项不会影响单个数据包中的最大压缩数据深度 (Maximum Compressed Data Depth) 或最大解压缩数据深度 (Maximum Decompressed Data Depth)。另请注意,如果启用此选项,确认修改时最大压缩数据深度 (Maximum Compressed Data Depth) 和最大解压缩数据深度 (Maximum Decompressed Data Depth) 将会设置为 65535。
规范化 Javascript (Normalize Javascript)
当检查 HTTP 响应 (Inspect HTTP Responses) 已启用时,此选项启用对 HTTP 响应正文中 Javascript 的检测和规范化。预处理器会对模糊 JavaScript 数据(例如,unescape 函数、decodeURI 函数和 String.fromCharCode 方法)进行规范化。预处理器会对
unescape、decodeURI 和 decodeURIComponent 函数中的以下编码进行规范化:
-
%XX
-
%uXXXX
-
0xXX
-
\xXX
-
\uXXXX
预处理器检测连续空格,并将其规范化为一个空格。此选项处于启用状态时,配置字段允许您指定模糊 Javascript 数据中允许的最大连续空格数量。可输入 1 到 65535 之间的值。值 0 将会禁止生成事件,不管与该字段相关的预处理器规则 (120:10)
是否启用。
预处理器还会对 Javascript 加号 (+) 运算符进行规范化,并使用该运算符连接字符串。
您可以使用 file_data
入侵规则关键字使入侵规则指向规范化的 Javascript 数据。
您可以启用规则 120:9、120:10 和 120:11 以生成事件并在内联部署中丢弃攻击性数据包,如下所示:
表 8. 规范化 Javascript 选项规则
规则
|
遇到以下情况时触发...
|
120:9
|
预处理器内的模糊级别大于或等于 2。
|
120:10
|
Javascript 模糊数据中的连续空格数量大于或等于为允许的最大连续空格数量配置的值。
|
120:11
|
经转义或编码的数据包含多种类型的编码。
|
“解压缩 SWF 文件 (LZMA)” (Decompress SWF File [LZMA]) 和“解压缩 SWF 文件 (Deflate)”(Decompress SWF File [Deflate])
启用 HTTP Inspect Responses 后,这些选项解压缩位于 HTTP 请求的 HTTP 响应主体中文件的压缩部分。.
注
|
您只能解压缩在 HTTP GET 响应中找到的文件的压缩部分。
|
当达到最大压缩数据深度 (Maximum Compressed Data Depth) 或最大解压缩数据深度 (Maximum Decompressed Data Depth) 中指定的值,或者达到压缩数据末尾时,解压缩将会结束。当达到服务器流量深度 (Server Flow Depth) 中指定的值时,对解压缩数据的检查将会结束,除非还选择了无限制解压缩 (Unlimited Decompression)。您可以使用 file_data
入侵规则关键字来检查解压缩数据。
您可以启用规则 120:12 和 120:13 以生成事件并在内联部署中丢弃攻击性数据包,如下所示:
表 9. 解压缩 SWF 文件选项规则
规则
|
遇到以下情况时触发...
|
120:12
|
deflate 文件解压缩失败。
|
120:13
|
LZMA 文件解压缩失败。
|
Decompress PDF File (Deflate)
检查 HTTP 响应 (Inspect HTTP Responses) 处于启用状态时,解压缩 SWF 文件 (Deflate) (Decompress PDF File [Deflate]) 会解压缩位于 HTTP 请求的 HTTP 响应主体中可移植文档格式 (.pdf
) 文件的 deflate 兼容压缩部分。系统只能使用 /FlateDecode
数据流过滤器解压缩 PDF 文件。不支持其他数据流过滤器(包括 /FlateDecode /FlateDecode
)。
注
|
您只能解压缩在 HTTP GET 响应中找到的文件的压缩部分。
|
当达到最大压缩数据深度 (Maximum Compressed Data Depth) 或最大解压缩数据深度 (Maximum Decompressed Data Depth) 中指定的值,或者达到压缩数据末尾时,解压缩将会结束。当达到服务器流量深度 (Server Flow Depth) 中指定的值时,对解压缩数据的检查将会结束,除非还选择了无限制解压缩 (Unlimited Decompression)。您可以使用 file_data
入侵规则关键字来检查解压缩数据。
您可以启用规则 120:14、120:15、120:16 和 120:17 以生成事件并在内联部署中丢弃攻击性数据包,如下所示:
表 10. 解压缩 PDF 文件 (Deflate) 选项规则
规则
|
遇到以下情况时触发...
|
120:14
|
文件解压缩失败。
|
120:15
|
由于压缩类型不受支持,文件解压缩失败。
|
120:16
|
由于 PDF 数据流过滤器不受支持,文件解压缩失败。
|
120:17
|
文件解析失败。
|
提取原始客户端 IP 地址 (Extract Original Client IP Address)
在入侵检查过程中启用原始客户端 IP 地址的检查。系统从您在 XFF 报头优先级 (XFF Header Priority) 选项中定义的 X-Forwarded-For (XFF)、True-Client-IP 或自定义 HTTP 报头提取原始客户端 IP 地址。您可以在入侵事件表中查看提取的原始客户端 IP 地址。
您可以启用规则 119:23、119:29 和 119:30 生成事件并在内联部署中丢弃此选项的攻击性数据包。请参阅设置入侵规则状态。。
XFF 报头优先级 (XFF Header Priority)
指定当 HTTP 请求中存在多个报头时,系统处理原始客户端 IP 报头的顺序。默认情况下,系统会检查 X-Forwarded-For (XFF) 报头,然后检查 True-Client-IP 报头。使用每种报头类型旁边的向上和向下箭头图标调整其优先级。
此选项还允许您指定除 XFF 或 True-Client-IP 以外的原始客户端 IP 报头来进行提取和评估。点击添加 (Add) 以将自定义报头名称添加到优先级列表中。系统仅支持与 XFF 或 True-Client-IP 报头使用相同语法的自定义报头。
配置此选项时请记住以下几点:
-
在评估原始客户端 IP 地址报头时,系统同时对访问控制和入侵检查使用此优先顺序。
-
如果存在多个原始客户端 IP 报头,则系统仅处理优先级最高的报头。
-
XFF 报头包含 IP 地址列表,表示请求所通过的代理服务器。为防止欺骗,系统使用列表中的最后一个 IP 地址(即受信任代理附加的地址)作为原始客户端 IP 地址。
日志 URI (Log URI)
允许从 HTTP 请求数据包提取原始 URI(如果有),并将该 URI 与为会话生成的所有入侵事件相关联。
启用此选项后,可以在入侵事件表视图的“HTTP URI”列中显示提取的 URI 的前 50 个字符。可以在数据包视图中显示完整的 URI(最多 2048 字节)。
日志主机名 (Log Hostname)
允许从 HTTP 请求主机报头中提取主机名(如果有),并将该主机名与为会话生成的所有入侵事件相关联。如果存在多个主机报头,系统将会从第一个报头中提取主机名。
启用此选项后,可以在入侵事件表视图的“HTTP 主机名”(HTTP Hostname) 列中显示提取的主机名的前 50 个字符。可以在数据包视图中显示完整的主机名(最多 256 字节)。
您可以启用规则 119:25 生成事件并在内联部署中丢弃此选项的攻击性数据包。请参阅设置入侵规则状态。
请注意,如果启用了规则 119:24,它将在于 HTTP 请求中检测到多个主机报头时触发,而不管该选项的设置为何。
配置文件
指定为 HTTP 流量规范化的编码的类型。系统提供了一个适用于大多数服务器的默认配置文件、适用于 Apache 服务器和 IIS 服务器的若干默认配置文件以及自定义默认设置,您可以对这些设置进行自定义,以满足受监控流量的需求:
-
选择 All 将会使用适用于所有服务器的标准默认配置文件。
-
选择 IIS 将会使用系统提供的 IIS 配置文件。
-
选择 Apache 将会使用系统提供的 Apache 配置文件。
-
选择自定义 (Custom) 将会创建您自己的服务器配置文件。