HTTP 检查器

HTTP 检查检查器概述

类型

检查器(服务)

使用方式

检测

实例类型

多实例

所需其他检查器

stream_tcp

已启用

true

超文本传输协议 (HTTP) 是支持在客户端和服务器之间交换超媒体(音频、视频、图像和文本)的应用层协议。HTTP 是无状态协议,需要进行可靠的消息传输。客户端与服务器之间的通信采用 HTTP 请求和响应的形式。

HTTP/1.1 服务器通常使用 TCP/IP 上的端口 80。安全版本的 HTTP(HTTP/TLS 或 HTTPS)使用端口 443。HTTP 定义了协议中的访问控制和身份验证机制。

HTTP/2 包含一些改进,以提高速度和推送比客户端请求更多的信息,但运行的端口和协议与 HTTP/1.1 相同。HTTP/2 特定规则使用 service:http2进行配置。

HTTP/3 是无连接协议,使用 QUIC(快速 UDP 互联网连接)协议而不是 TCP,并且可以支持具有更好丢失恢复功能的更多活动流。HTTP/3 使用的消息传递与 HTTP 的早期版本相同。HTTP/3 特定规则使用 service:http3进行配置。

HTTP 检查器以相同的方式支持 HTTP 的所有三个版本。

http_inspect 检查器检测并分析 HTTP 消息的协议数据单元 (PDU)。 http_inspect 从 TCP 数据流接收 TCP 负载,并检查封装的 HTTP 消息。

HTTP 检查器可以检测以下 HTTP 消息部分:

  • 请求行

  • 状态行

  • 信头

  • Content-Length 消息正文(内容长度报头定义的消息正文)

  • 分块消息正文

  • 上一个消息正文(没有 Content-Length 报头的消息正文

  • 帧尾

http_inspect 检查器检测并规范化所有 HTTP 信头字段以及 HTTP URI 的组件。 http_inspect 检查器不会规范化 TCP 端口。

http_inspect 检查器可以检测四种类型的 URI:

  • 星号 (*):未规范化

  • 颁发机构:与 HTTP CONNECT 方法配合使用的 URI

  • 来源:以斜杠开头的 URI(不显示方案或授权)

  • 绝对:包括方案、主机和绝对路径的 URI

HTTP URI 可以包括:

  • 方案(ftp、http 或 https)

  • 主机(服务器的域名)

  • TCP 端口

  • 路径(目录和文件)

  • 查询(请求参数)

  • 片段(文件的一部分)

您可以将 http_inspect 检查器配置为对 HTTP 消息的部分发出警报。例如:

  • 指定要从 HTTP 请求或响应正文读取的字节数

  • 启用 JavaScript 检测和规范化

  • 处理各种类型的文件解压缩

  • 自定义 HTTP URI 的解码



http_inspect 检查器可以部分检查流 TCP 负载。

配置 HTTP 检查检查器的最佳实践

配置 http_inspect 检查器时,请考虑以下最佳实践:

  • 如果您的 HTTP 流量包括大型视频文件,请设置 request_depthresponse_depth 参数。

  • 对 HTTP URI 检查参数使用默认设置:

    "utf8": "true"
    "plus_to_space": "true"
    "percent_u": "true"
    "utf8_bare_byte": "true"
    "iis_unicode": "true"
    "iis_double_decode": "true"

HTTP 检查器检查器参数

HTTP 服务配置

绑定程序 检查器定义 HTTP 服务配置。有关详细信息,请参阅绑定程序检查器概述

示例:
[
    {
        "when": {
             "service": "http",
             "role": any
        },
        "use": {
            "type": "http_inspect"
        }            
    }
]

request_depth

指定要从 HTTP 消息请求正文读取的字节数。

指定 -1 以对要检查的字节数不设限制。我们建议您指定 request_depthresponse_depth 参数,以限制要分析的 HTTP 正文数据量。

要仅检查 HTTP 信头,请将 request_depth 设置为 0

类型: 整数

有效范围: -19,007,199,254,740,992(最大 53)

默认值: -1

response_depth

指定要从 HTTP 消息响应正文读取的字节数。

指定 -1 以对要检查的字节数不设限制。我们建议您指定 request_depthresponse_depth 参数,以限制要分析的 HTTP 正文数据量。

要仅检查 HTTP 信头,请将 response_length 设置为 0

类型: 整数

有效范围: -19,007,199,254,740,992(最大 53)

默认值: -1

解压缩

指定在检查邮件正文之前是否将 gzip 文件解压缩并缩小邮件正文。关闭解压缩时,HTTP 检查器无法处理 HTTP 消息正文的所有部分。http_inspect 检查器可以处理 HTTP 信头。

类型: boolean

有效值:true、false

默认值: true

maximum_host_length

指定 主机 HTTP 信头值中允许的最大字节数。

指定 -1 ,则表示对信头值长度没有限制。

类型: 整数

有效范围: -19,007,199,254,740,992(最大 53)

默认值: -1

maximum_chunk_length

指定 HTTP 消息正文数据块中允许的最大字节数。

指定 -1 以对 HTTP 数据块中的字节数不设限制。

类型: 整数

有效范围: -19,007,199,254,740,992(最大 53)

默认值: -1

normalize_utf

指定是否规范化 HTTP 响应正文中的 UTF 编码(UTF-8、UTF-7、UTF-16LE、UTF-16BE、UTF-32LE 和 UTF-32BE)。 http_inspect 检查器根据 HTTP Content-Type 信头确定 UTF 字符编码。

类型: boolean

有效值:true、false

默认值: true

decompress_pdf

指定是否解压缩在 HTTP 响应正文中找到的 application/pdf (PDF) 文件的 deflate 兼容压缩部分。 http_inspect 检查器使用 /FlateDecode 流过滤器解压缩 PDF 文件。

类型: boolean

有效值:true、false

默认值: false

decompress_swf

指定是否解压缩在 HTTP 响应正文中找到的 application/vnd.adobe.flash-movie (SWF) 文件。



您只能解压缩在 HTTP GET 响应中找到的文件的压缩部分。


类型: boolean

有效值:true、false

默认值:false

decompress_vba

指定是否解压缩在 HTTP 响应正文中找到的 Microsoft Office Visual Basic for Applications 宏文件。

类型: boolean

有效值:true、false

默认值: false

decompress_zip

指定是否解压缩在 HTTP 响应正文中找到的 application/zip (ZIP) 文件。

类型: boolean

有效值:true、false

默认值: false

script_detection

指定是否在检测脚本结束元素 (<\script>) 后检查 JavaScript 内容。当 http_inspect 检测到脚本末尾时,它会立即转发部分读取的消息正文以便及早检测。脚本检测使 Snort 能够快速阻止可能包含恶意 JavaScript 的响应消息。

类型: boolean

有效值:true、false

默认值:false

normalize_javascript

指定是否使用传统机制规范化 HTTP 响应正文中的 JavaScript。此选项配置旧版 JavaScript 规范器。 http_inspect 检查器可规范化混淆的 JavaScript 数据,包括 unescapedecodeURI 函数以及 String.fromCharCode 方法。HTTP 检查器会规范化 unescape、decodeURI 和 decryptURIComponent 函数中的编码:%XX、%uXXXX、XX 和 uXXXXi。

http_inspect 器检测连续空格,并将其规范化为一个空格。当 normalize_javascript 启用时,您可以设置 max_javascript_whitespaces 以限制模糊 JavaScript 中连续空格的数量。

类型: boolean

有效值:true、false

默认值: false

js_norm_bytes_depth

指定要规范化的输入 JavaScript 字节的数量。此选项特定于增强型 JavaScript 规范器。



如果使用增强型 JavaScript 规范器,则会使用轻量级安全软件包 (LSP) 和 Snort 3 中的默认设置。JavaScript 特定配置会从网络分析策略 (NAP) 用户界面阻止。要覆盖默认设置并自定义规范器设置,您可以修改 /ftd/app_data/Volume/root1/ngfw/var/cisco/deploy 中的 NAPOverride.lua文件。

http_inspect 检查器检测连续空格,并将其规范化为一个空格。检查器会跟踪不同 PDU 中的脚本(其中 start <script> is in one PDU and the end </script> 位于另一个 PDU 中),以有效地规范化流量。新缓冲区 js_data 已被添加到 Snort 3 IPS 缓冲区,该缓冲区使用实时 (JIT) 方法来检测和规范化 JavaScript 代码,其中仅在规则中使用此选项时才会调用规范器。

http_inspect 检查器规范化与 JavaScript 代码关联的函数名称、变量名称和标签名称。此外,检查器会使用 application/javascript 或类似的 MIME 类型规范以外部脚本形式传输的 JavaScript 代码。规范器会自动执行分号插入,其中 JavaScript 功能不会根据客户端的原始输入进行更改。

http_inspect 检查器可规范化混淆的 JavaScript 数据,包括 unescapedecodeURI decryptURIComponent 函数以及 String.fromCharCodeString.fromCodePoint 方法。HTTP 检查器的增强规范化程序可规范化 unescape、decodeURI 和 decodeURIComponent 函数中的编码:%XX、%uXXXX、\uXX、\u{XXXX}\xXX、十进制代码点和十六进制代码点。

http_inspect 检查器还会对 Javascript 加号 (+) 运算符进行规范化,并使用该运算符连接字符串。

指定 -1 ,以便对 JavaScript 字节数不设限制。

类型: 整数

有效范围: -19,007,199,254,740,992(最大 53)

默认值: -1

js_norm_identifier_depth

指定要规范化的唯一 JavaScript 标识符的最大数量。此选项特定于增强型 JavaScript 规范器。



如果使用增强型 JavaScript 规范器,则会使用轻量级安全软件包 (LSP) 和 Snort 3 中的默认设置。JavaScript 特定配置会从网络分析策略 (NAP) 用户界面阻止。要覆盖默认设置并自定义规范器设置,您可以修改 /ftd/app_data/Volume/root1/ngfw/var/cisco/deploy 中的 NAPOverride.lua文件。

类型: 整数

有效范围: 065536

默认值: 65536

js_norm_max_bracket_depth

指定要规范化的 JavaScript 括号的最大嵌套深度。此选项特定于增强型 JavaScript 规范器。



如果使用增强型 JavaScript 规范器,则会使用轻量级安全软件包 (LSP) 和 Snort 3 中的默认设置。JavaScript 特定配置会从网络分析策略 (NAP) 用户界面阻止。要覆盖默认设置并自定义规范器设置,您可以修改 /ftd/app_data/Volume/root1/ngfw/var/cisco/deploy 中的 NAPOverride.lua文件。

类型: 整数

有效范围: 165535

默认值: 256

js_norm_max_scope_depth

指定要规范化的 JavaScript 范围嵌套的最大深度。此选项特定于增强型 JavaScript 规范器。



如果使用增强型 JavaScript 规范器,则会使用轻量级安全软件包 (LSP) 和 Snort 3 中的默认设置。JavaScript 特定配置会从网络分析策略 (NAP) 用户界面阻止。要覆盖默认设置并自定义规范器设置,您可以修改 /ftd/app_data/Volume/root1/ngfw/var/cisco/deploy 中的 NAPOverride.lua文件。

类型: 整数

有效范围: 165535

默认值: 256

js_norm_max_tmpl_nest

指定要规范化的 JavaScript 模板文字的最大深度。此选项特定于增强型 JavaScript 规范器。



如果使用增强型 JavaScript 规范器,则会使用轻量级安全软件包 (LSP) 和 Snort 3 中的默认设置。JavaScript 特定配置会从网络分析策略 (NAP) 用户界面阻止。要覆盖默认设置并自定义规范器设置,您可以修改 /ftd/app_data/Volume/root1/ngfw/var/cisco/deploy 中的 NAPOverride.lua文件。

类型: 整数

有效范围:0255

默认值: 32

max_javascript_whitespaces

指定 JavaScript 模糊数据中允许的最大连续空格数。

类型: 整数

有效范围: 165535

默认值:200

percent_u

指定是否规范化 %uNNNN%UNNNN 编码。四个 N 字符表示与 Microsoft 互联网信息服务 (IIS) Unicode 代码点关联的十六进制编码的值。合法的客户端很少使用 %u 编码,因此我们建议您对使用 %u 编码的 HTTP 流量进行规范化。

类型: boolean

有效值:true、false

默认值: false

utf8

指定是否规范化 URI 中的标准 UTF-8 Unicode 序列。http_inspect 检查器可以将两个或三个字节 UTF-8 字符规范化为单个字节。

类型: boolean

有效值:true、false

默认值: true

utf8_bare_byte

指定是否规范化包括非 URL 或百分比编码的字节的 UTF-8 字符。我们建议您启用 utf8_bare_byte 参数。

类型: boolean

有效值:true、false

默认值: false

iis_unicode

指定是否使用 Unicode 代码点规范化 HTTP 消息中的字符。



我们建议启用 iis_unicode 参数。Unicode 在攻击和规避尝试中很常见。


类型: boolean

有效值:true、false

默认值:false

iis_unicode_code_page

指定是否使用 IIS Unicode 映射文件的代码页。

类型: 整数

有效范围: 165535

默认值: 1252

iis_double_decode

指定是否通过执行 URL 编码字符的双重解码来规范化字符。通过在请求 URI 中形成两条通道,解码 IIS 双编码流量。我们建议您启用 iis_ouble_decode 参数。重复编码通常仅见于攻击情景。

类型: boolean

有效值:true、false

默认值: true

oversize_dir_length

指定 URL 目录允许的最大字节数。

类型: 整数

有效范围: 165535

默认值: 300

backslash_to_slash

指定是否用 URI 中的反斜线 (\) 替换正斜线 (/)。

类型: boolean

有效值:true、false

默认值: true

plus_to_space

指定是否将加号 (+) 替换为<sp>在 URI 中检索到的数据。

类型: boolean

有效值:true、false

默认值: true

simplify_path

指定是否将 URI 目录路径简化为最简单形式。包含额外遍历的 URI 目录路径可能包括: .../

类型: boolean

有效值:true、false

默认值: true

xff_headers

指定要检查的 X-Forwarded-For HTTP 信头的类型。在 xff_headers 参数中,按优先级从高到低列出 X-Forwarded-For 信头。

您可以定义自定义 X-Forwarded-For 类型信头。携带原始客户端 IP 地址的 HTTP 信头可以有一个供应商特定的信头名称。在这种情况下, xff_headers 参数提供了一种将自定义信头引入 HTTP 检查器的方法。

xff_headers 默认值为 x-forwarded-for true-client-ip,这是两个常见的信头。如果两个默认信头都在流中存在,则 x-forwarded-for 优先于 true-client-ip。指定多个 X-Forwarded-For HTTP 信头时,请使用空格分隔信头名称。

类型: 字符串

有效值: x-forwarded-fortrue-client-ip

默认值: x-forwarded-for true-client-ip

HTTP 检查检查器规则

启用 http_inspect 检查器规则以 生成事件并在内联部署中丢弃攻击性数据包

表 1. HTTP 检查检查器规则

GID:SID

Rule Message

119:1

URI 包含非保留字符的百分比编码

119:2

URI 按百分比编码,结果再次按百分比编码

119:3

URI 使用非标准 %u 样式 Unicode 编码

119:4

URI 的 Unicode 编码中包含未按百分比编码的字节

119:6

URI 采用两字节或三字节 UTF-8 编码

119:7

URI 使用 unicode 映射代码点编码

119:8

URI 路径包含连续的斜杠字符

119:9

URI 的路径部分中出现的反斜杠字符

119:10

URI 路径中包含/./ 模式的重复当前目录

119:11

URI 路径包含 /../ 模式向上移动的目录

119:12

HTTP 起始行中的制表符

119:13

HTTP 起始行或报头行以 LF 终止,无 CR

119:14

规范化 URI 包含 bad_characters 列表中的字符

119:15

URI 路径包含的网段长度超过 oversize_dir_length 参数

119:16

数据块长度超过配置的 maximum_chunk_length

119:18

URI 路径包含 /../,位于根目录之上

119:19

HTTP 标头行超过 4096 字节

119:20

HTTP 消息具有 200 多个信头字段

119:21

HTTP 消息包含多个 Content-Length 信头值

119:24

主机信头字段出现多次或具有多个值

119:25

HTTP 主机信头字段值的长度超过 maximum_host_length 选项

119:28

不带内容长度或数据块的 HTTP POST 或 PUT 请求

119:31

Snort 未知 HTTP 请求方法

119:32

HTTP 请求使用称为 HTTP/0.9 的原始 HTTP 格式

119:33

HTTP 请求 URI 包含未进行百分比编码的空格字符

119:34

HTTP 连接有超过 100 个并发管道请求尚未得到应答

119:102

无效的 HTTP 响应状态代码

119:104

HTTP 响应包含规范化失败的 UTF 字符集

119:105

HTTP 响应采用 UTF-7 字符集

119:109

不止一个级别的 JavaScript 模糊处理

119:110

连续的 JavaScript 空格数超过允许的最大值

119:111

JavaScript 混淆数据中的多种编码

119:112

SWF 文件 zlib 解压缩失败

119:113

SWF 文件 LZMA 解压缩失败

119:114

deflate 文件解压缩失败

119:115

PDF 文件的压缩类型不受支持

119:116

应用了多种压缩的 PDF 文件

119:117

PDF 文件解析失败

119:201

不是 HTTP 流量或无法恢复的 HTTP 协议错误

119:202

数据块长度包含过多前导零

119:203

HTTP 消息前或消息之间的空格

119:204

不带 URI 的请求消息

119:205

HTTP 响应原因短语中的控制字符

119:206

起始行中存在非法的额外空格

119:207

损坏的 HTTP 版本

119:209

HTTP 信头中的格式错误

119:210

存在数据块信头选项

119:211

URI 格式错误

119:212

URI 中的百分比编码无法识别

119:213

HTTP 数据块格式不正确

119:214

与数据块长度相邻的空格

119:215

信头名称中存在空格

119:216

过度 gzip 压缩

119:217

gzip 解压缩失败

119:218

另一个请求后跟 HTTP 0.9 的请求

119:219

正常请求之后的 HTTP 0.9 请求

119:220

消息同时具有 Content-Length 和 Transfer-Encoding

119:221

表示无正文与 Transfer-Encoding 或非零 Content-Length 组合的状态代码

119:222

传输编码不以分块结束

119:223

使用分块前的编码进行传输-编码

119:224

格式错误的 HTTP 流量

119:225

使用了不受支持的内容编码

119:226

使用的内容编码未知

119:227

应用了多个 Content-Encoding

119:228

服务器在客户端请求之前响应

119:229

PDF/SWF/ZIP 解压缩的服务器响应过大

119:230

HTTP 消息信头名称中存在非打印字符

119:231

HTTP 信头中的 Content-Length 值错误

119:232

HTTP 信头行换行

119:233

HTTP 信头行以 CR 终止,无 LF

119:234

以非标准分隔符终止的数据块

119:235

以 LF 终止,无 CR 的数据块长度

119:236

状态代码为 100 的多个响应

119:237

100 状态代码未响应预期信头

119:238

1XX 不是 100 或 101 的状态代码

119:239

已发送无消息正文的预期信头

119:240

具有传输编码信头的 HTTP 1.0 消息

119:241

用作 HTTP 信头的 Content-Transfer-Encoding

119:242

分块的消息报尾中的非法字段

119:243

信头字段不适当地出现两次或具有两个值

119:244

内容编码信头中的分块值无效

119:245

206 响应已发送到没有范围信头的请求

119:246

版本字段中的 HTTP 并非全部大写

119:247

关键信头值中嵌入了空格

119:248

gzip 压缩数据后跟意外的非 gzip 数据

119:249

HTTP 参数密钥重复次数过多

119:253

包含消息正文的 HTTP CONNECT 请求

119:254

在 CONNECT 请求之后但在 CONNECT 响应之前的 HTTP 客户端到服务器流量

119:255

带有 Content-Length 信头的 HTTP CONNECT 2XX 响应

119:256

具有 Transfer-Encoding 信头的 HTTP CONNECT 2XX 响应

119:257

带有 1XX 状态代码的 HTTP CONNECT 响应

119:258

请求消息完成之前的 HTTP CONNECT 响应

119:259

HTTP Content-Disposition 文件名参数格式错误

119:260

HTTP Content-Length 消息正文被截断

119:261

HTTP 分块消息正文被截断

119:262

HTTP URI 方案超过 10 个字符

119:263

HTTP/1 客户端请求的 HTTP/2 升级

119:264

授予 HTTP/1 服务器 HTTP/2 升级权限

119:265

JavaScript 中的错误令牌

119:266

JavaScript 中出现意外的脚本开始标记

119:267

JavaScript 中出现意外的脚本结束标记

119:268

外部脚本标记下的 JavaScript 代码

119:269

简短形式的脚本开始标记

119:270

唯一 JavaScript 标识符的最大数量

119:271

JavaScript 方括号嵌套超出容量

119:272

HTTP Accept-Encoding 信头中的连续逗号

119:273

JavaScript 规范化期间遗漏的 PDU

119:274

JavaScript 范围嵌套已超出容量

119:275

除 1.0 或 1.1e 以外的 HTTP/1 版本

119:276

起始行中的 HTTP 版本为 0

119:277

起始行中的 HTTP 版本高于 1

HTTP 检查检查器入侵规则选项

http_client_body

将检测光标设置到 HTTP 请求的正文时。当 HTTP 消息未指定 HTTP 标头时,Snort 会使用 URI 规范化对 http_client_body 进行规范化。URI 规范化通常应用于 http_header

语法: http_client_body;

示例: http_client_body;

http_cookie

将检测光标设置为提取的 HTTP Cookie 信头字段。 http_cookie 规则选项包括以下参数: http_cookie.requesthttp_cookie.with_headerhttp_cookie.with_bodyhttp_cookie.with_trailer

语法: http_cookie:<parameter> 、<parameter>

示例: http_cookie: request;

http_cookie.request

匹配在 HTTP 请求消息中找到的 HTTP cookie。检查 HTTP 响应时,请使用 HTTP 请求 cookie。 http_cookie.request 参数是可选参数。

语法: http_cookie:request;

示例: http_cookie: request;

http_cookie.with_header

指定规则只能检查 HTTP 消息信头。http_cookie.with_header 参数是可选的。

语法: http_cookie:with_header;

示例: http_cookie:with_header;

http_cookie.with_body

指定规则的其他部分而不是 http_cookie 规则选项检查 HTTP 消息正文。 http_cookie.with_body 参数是可选的。

语法: http_cookie:with_body;

示例: http_cookie:with_body;

http_cookie.with_trailer

指定由规则的其他部分而不是 http_cookie 规则选项检查 HTTP 消息报尾。http_cookie.with_trailer 参数是可选的。

语法: http_cookie:with_trailer;

示例: http_cookie:with_trailer;

http_header

将检测光标设置为规范化 HTTP 信头。您可以使用 Field 选项指定单个信头名称。

http_header 规则选项包括以下参数: http_header.fieldhttp_header.requesthttp_header.with_headerhttp_header.with_bodyhttp_header.with_trailer

语法: http_header: field<field_name> 、<parameter> 、<parameter>

示例: http_header: Field Content-Type, with_trailer;

http_header.field

将指定信头名称与规范化 HTTP 信头进行匹配。信头名称不区分大小写。如果不指定信头名称,HTTP 检查器将检查除 HTTP Cookie 信头(CookieSet-Cookie)之外的所有信头。

类型: 字符串

语法: http_header: field <field_namer>;

有效值: HTTP 信头名称。

示例: http_header: Field Content-Type;

http_header.request

匹配 HTTP 请求中找到的信头。检查 HTTP 响应时使用 HTTP 请求信头。http_header.request 参数是可选参数。

语法: http_header: request;

示例: http_header: request;

http_header.with_header

指定规则只能检查 HTTP 消息信头。 http_header.with_header 参数是可选的。

语法: http_header:with_header;

示例: http_header: with_header;

http_header.with_body

指定规则的其他部分而不是 http_header 规则选项检查 HTTP 消息正文。 http_header.with_body 参数是可选的。

语法: http_header:with_body;

示例: http_header:with_body;

http_header.with_trailer

指定由规则的另一部分而不是 http_header 规则选项检查 HTTP 消息报尾。http_header.with_trailer 参数是可选的。

语法: http_header:with_trailer;

示例: http_header: with_trailer;

http_method

将检测光标设置为 HTTP 请求的方法。常见的 HTTP 请求方法值为 GETPOSTOPTIONSHEADDELETEPUTTRACECONNECT

http_method 规则选项包括参数: http_method.with_headerhttp_method.with_bodyhttp_method.with_trailer

语法: http_method: <parameter> 、<parameter>;

示例: http_method; content:"GET";

http_method.with_header

指定规则只能检查 HTTP 消息信头。 http_method.with_header 参数是可选的。

语法: http_method:with_header;

示例: http_method:with_header;

http_method.with_body

指定规则的其他部分而不是 http_header 规则选项检查 HTTP 消息正文。http_method.with_body 参数是可选的。

语法: http_method:with_body;

示例: http_method:with_body;

http_method.with_trailer

指定由规则的另一部分而不是 http_header 规则选项检查 HTTP 消息报尾。 http_method.with_trailer 参数是可选的。

语法: http_method:with_trailer;

示例: http_method:with_trailer;

http_param

将检测光标设置为指定的 HTTP 参数键。HTTP 参数密钥可能会显示在查询或请求正文中。

http_param 规则选项包括参数: http_param.paramhttp_method.no Case

语法: http_param:<parameter_key> 、no Case;

示例: http_param: offset, noase;

http_param.param

匹配指定的参数。

类型: 字符串

语法: http_param:<http_parameter>;

有效值: 请求查询参数或请求正文字段。

示例: http_param: offset;

http_param.nocase

匹配指定参数,但不考虑大小写。http_param.nocase 参数是可选的。

语法: http_param: no Case;

示例: http_param: noase;

http_raw_body

将检测光标设置为未规范化请求或响应消息正文。

语法: http_raw_body;

示例: http_raw_body;

http_raw_cookie

将检测光标设置为非规范化 HTTP Cookie 信头。 http_raw_cookie 规则选项包括以下参数: http_raw_cookie.requesthttp_raw_cookie.with_headerhttp_raw_cookie.with_bodyhttp_raw_cookie.with_trailer

语法: http_raw_cookie: <parameter>;

示例: http_raw_cookie: request;

http_raw_cookie.request

匹配在 HTTP 请求中找到的 cookie。检查响应消息时,请使用 HTTP 请求 cookie。 http_raw_cookie.request 参数是可选参数。

语法: http_raw_cookie: request;

示例: http_raw_cookie: request;

http_raw_cookie.with_header

指定规则只能检查 HTTP 消息信头。 http_raw_cookie.with_header 参数是可选的。

语法: http_raw_cookie:with_header;

示例: http_raw_cookie:with_header;

http_raw_cookie.with_body

指定规则的其他部分而不是 http_raw_cookie 规则选项检查 HTTP 消息正文。http_raw_cookie.with_body 参数是可选的。

语法: http_raw_cookie:with_body;

示例: http_raw_cookie:with_body;

http_raw_cookie.with_trailer

指定由规则的另一部分而不是 http_raw_cookie 规则选项检查 HTTP 消息报尾。http_raw_cookie.with_trailer 参数是可选的。

语法: http_raw_cookie:with_trailer;

示例: http_raw_cookie:with_trailer;

http_raw_header

将检测光标设置为非规范化信头。 http_raw_header 包含原始消息中所有未经修改的信头名称和值。

http_raw_header 规则选项包括以下参数: http_raw_header.fieldhttp_raw_header.requesthttp_raw_header.with_headerhttp_raw_header.with_bodyhttp_raw_header.with_trailer

语法: http_raw_header:field<field_name> 、<parameter> 、<parameter>;

示例: http_raw_header: Field Content-Type, with_trailer;

http_raw_header.field

将指定信头名称与非规范化 HTTP 信头进行匹配。信头名称不区分大小写。如果不指定信头名称,HTTP 检查器将检查除 HTTP Cookie 信头(Cookie 和 Set-Cookie)以外的所有信头。

类型: 字符串

语法: http_raw_header: field <field_name>

有效值: HTTP 信头名称。

示例: http_raw_header: Field Content-Type;

http_raw_header.request

匹配 HTTP 请求消息中的找到的信头。检查响应消息时,请使用 HTTP 请求信头。http_raw_header.request 参数是可选参数。

语法: http_raw_header: request;

示例: http_raw_header: request;

http_raw_header.with_header

指定规则只能检查 HTTP 消息信头。http_raw_header.with_header 参数是可选的。

语法: http_raw_header:with_header;

示例: http_raw_header: with_header;

http_raw_header.with_body

指定规则的其他部分而不是 http_raw_header 规则选项检查 HTTP 消息正文。 http_raw_header.with_body 参数是可选的。

语法: http_raw_header:with_body;

示例: http_raw_header:with_body;

http_raw_header.with_trailer

指定由规则的另一部分而不是 http_raw_header 规则选项检查 HTTP 消息报尾。 http_raw_header.with_trailer 参数是可选的。

语法: http_raw_header:with_trailer;

示例: http_raw_header: with_trailer;

http_raw_request

将检测光标设置为非规范化请求行。要检查第一个信头行的特定部分,请使用以下规则选项之一: http_methodhttp_raw_urihttp_version

http_raw_request 规则选项包括参数: http_raw_request.with_headerhttp_raw_request.with_bodyhttp_raw_request.with_trailer

语法: http_raw_request: <parameter>, <parameter>;

示例: http_raw_request:with_header;

http_raw_request.with_header

指定规则只能检查 HTTP 消息信头。 http_raw_request.with_header 参数是可选的。

语法: http_raw_request:with_header;

示例: http_raw_request:with_header;

http_raw_request.with_body

指定规则的其他部分而不是 http_raw_request 规则选项检查 HTTP 消息正文。 http_raw_request.with_body 参数是可选的。

语法: http_raw_request:with_body;

示例: http_raw_request:with_body;

http_raw_request.with_trailer

指定由规则的其他部分而不是 http_raw_request 规则选项检查 HTTP 消息报尾。 http_raw_request.with_trailer 参数是可选的。

语法: http_raw_request:with_trailer;

示例: http_raw_request: with_trailer;

http_raw_status

将检测光标设置为非规范化状态行。要检查状态行的特定部分,请使用以下规则选项之一: http_versionhttp_stat_codehttp_stat_msg

http_raw_status 规则选项包括以下参数: http_raw_status.with_bodyhttp_raw_status.with_trailer

语法: http_raw_status: <parameter>, <parameter>;

示例: http_raw_status:with_body;

http_raw_status.with_body

指定由规则的其他部分而不是 http_raw_status 规则选项检查 HTTP 消息正文。http_raw_status.with_body 参数是可选的。

语法: http_raw_status:with_body;

示例: http_raw_status:with_body;

http_raw_status.with_trailer

指定由规则的另一部分而不是 http_raw_status 规则选项检查 HTTP 消息报尾。 http_raw_status.with_trailer 参数是可选的。

语法: http_raw_status:with_trailer;

示例: http_raw_status: with_trailer;

http_raw_trailer

将检测光标设置为非规范化 HTTP 报尾。报尾包含有关消息内容的信息。当客户端请求创建 HTTP 报头时,报尾不可用。

http_raw_trailerhttp_raw_header相同,但前者适用于结束信头。您必须创建单独的规则来检测 HTTP 信头和报尾。

http_raw_trailer 规则选项包括以下参数: http_raw_trailer.fieldhttp_raw_trailer.requesthttp_raw_trailer.with_headerhttp_raw_trailer.with_body

语法: http_raw_trailer: field <field_name>, <parameter>, <parameter>;

示例: http_raw_trailer: field <field_name>, request;

http_raw_trailer.field

将指定报尾名称与非规范化 HTTP 报尾进行匹配。报尾名称不区分大小写。

类型: 字符串

语法: http_raw_trailer: field <field_name>;

有效值: HTTP 报尾名称。

示例: http_raw_trailer:field trail-timestamp;

http_raw_trailer.request

匹配 HTTP 请求消息中找到的报尾。在检查响应消息时,请使用 HTTP 请求报尾。http_raw_trailer.request 参数是可选参数。

语法: http_raw_trailer: request;

示例: http_raw_trailer: request;

http_raw_trailer.with_header

指定规则只能检查 HTTP 响应信头。 http_raw_trailer.with_header 参数是可选的。

语法: http_raw_trailer:with_header;

示例: http_raw_trailer: with_header;

http_raw_trailer.with_body

指定由规则的其他部分(而不是 http_raw_trailer 规则选项)检查 HTTP 响应消息正文。http_raw_trailer.with_body 参数是可选的。

语法: http_raw_trailer:with_body;

示例: http_raw_trailer:with_body;

http_raw_uri

将检测光标设置为非规范化 URI。

http_raw_uri 规则选项包括:

  • http_raw_uri.with_header

  • http_raw_uri.with_body

  • http_raw_uri.with_trailer

  • http_raw_uri.scheme

  • http_raw_uri.host

  • http_raw_uri.port

  • http_raw_uri.path

  • http_raw_uri.query

  • http_raw_uri.fragment

语法: http_raw_uri: <parameter>, <parameter>;

示例: http_raw_uri: with_header, path, query;

http_raw_uri.with_header

指定规则只能检查 HTTP 消息信头。 http_raw_uri.with_header 参数是可选的。

语法: http_raw_uri:with_header;

示例: http_raw_uri:with_header;

http_raw_uri.with_body

指定规则的其他部分检查 HTTP 消息正文,而不是由 http_raw_uri 规则选项检查。 http_raw_uri.with_body 参数是可选的。

语法: http_raw_uri:with_body;

示例: http_raw_uri:with_body;

http_raw_uri.with_trailer

指定由规则的另一部分而不是 http_raw_uri 规则选项检查 HTTP 消息报尾。 http_raw_uri.with_trailer 参数是可选的。

语法: http_raw_uri:with_trailer;

示例: http_raw_uri:with_trailer;

http_raw_uri.scheme

仅根据 URI 方案进行匹配。 http_raw_uri.scheme 参数是可选的。

语法: http_raw_uri:scheme;

示例: http_raw_uri:scheme;

http_raw_uri.host

仅根据 URI 的主机(域名)匹配。 http_raw_uri.host 参数是可选的。

语法: http_raw_uri: host;

示例: http_raw_uri: host;

http_raw_uri.port

仅根据 URI 的端口(TCP 端口)匹配。 http_raw_uri.port 参数是可选的。

语法: http_raw_uri: port;

示例: http_raw_uri: port;

http_raw_uri.path

仅匹配 URI 的路径部分(目录和文件)。 http_raw_uri.path 参数是可选的。

语法: http_raw_uri: path;

示例: http_raw_uri: path;

http_raw_uri.query

仅匹配 URI 中的查询参数。 http_raw_uri.query 参数是可选的。

语法: http_raw_uri: query;

示例: http_raw_uri:query;

http_raw_uri.fragment

仅匹配 URI 的分片部分。分段是所请求文件的一部分,通常仅在浏览器内找到,而不通过网络进行传输。 http_raw_uri.fragment 参数是可选的。

语法: http_raw_uri: fragment;

示例: http_raw_uri: fragment;

http_stat_code

将检测光标设置为 HTTP 状态代码。HTTP 状态代码是一个介于 100 - 599 之间的三位数字。

http_stat_code 规则选项包括以下参数: http_stat_code.with_bodyhttp_stat_code.with_trailer

语法: http_stat_code: <parameter>, <parameter>;

示例: http_stat_code: with_trailer;

http_stat_code.with_body

指定由规则的其他部分而不是 http_stat_code 规则选项检查 HTTP 消息正文。 http_stat_code.with_body 参数是可选的。

语法: http_stat_code:with_body;

示例: http_stat_code:with_body;

http_stat_code.with_trailer

指定由规则的另一部分而不是 http_stat_code 规则选项检查 HTTP 消息报尾。 http_stat_code.with_trailer 参数是可选的。

语法: http_stat_code:with_trailer;

示例: http_stat_code: with_trailer;

http_stat_msg

将检测光标设置至 HTTP 状态消息。HTTP 状态消息以纯文本描述 HTTP 状态代码,例如: 正常

http_stat_msg 规则选项包括参数: http_stat_msg.with_bodyhttp_stat_msg.with_trailer

语法: http_stat_msg: <parameter>, <parameter>;

示例: http_stat_msg: with_body;

http_stat_msg.with_body

指定由规则的其他部分而不是 http_stat_msg 规则选项检查 HTTP 消息正文。 http_stat_msg.with_body 参数是可选的。

语法: http_stat_msg:with_body;

示例: http_stat_msg: with_body;

http_stat_msg.with_trailer

指定由规则的另一部分而不是 http_stat_msg 规则选项检查 HTTP 消息报尾。 http_stat_msg.with_trailer 参数是可选的。

语法: http_stat_msg: with_trailer;

示例: http_stat_msg: with_trailer;

http_trailer

将检测光标设置为规范化报尾。报尾包含有关消息内容的信息。当客户端请求创建 HTTP 报头时,报尾不可用。

http_trailerhttp_header相同,不同之处在于 http_trailer 适用于结束信头。您必须创建单独的规则来检测 HTTP 信头和报尾。

http_trailer 规则选项包括以下参数: http_trailer.fieldhttp_trailer.requesthttp_trailer.with_headerhttp_trailer.with_body

语法: http_trailer: field <field_name>, <parameter>, <parameter>;

示例: http_trailer: Field trail-timestamp, with_body;

http_trailer.field

将指定报尾名称与规范化 HTTP 报尾进行匹配。报尾名称不区分大小写。

类型: 字符串

语法: http_trailer: field <field_name>;

有效值: HTTP 报尾名称。

示例: http_trailer:field trail-timestamp;

http_trailer.request

匹配 HTTP 请求消息中找到的报尾。在检查响应消息时,请使用 HTTP 请求报尾。 http_trailer.request 参数是可选参数。

语法: http_trailer: request;

示例: http_trailer: request;

http_trailer.with_header

指定由规则的其他部分检查 HTTP 消息信头,而不是由 http_trailer 规则选项检查。 http_trailer.with_header 参数是可选的。

语法: http_trailer:with_header;

示例: http_trailer: with_header;

http_trailer.with_body

指定规则的其他部分而不是 http_trailer 规则选项检查 HTTP 消息正文。 http_trailer.with_body 参数是可选的。

语法: http_trailer:with_body;

示例: http_trailer:with_body;

http_true_ip

将检测光标设置为最终客户端 IP 地址。当客户端发送请求时,代理服务器将存储最终的客户端 IP 地址。客户端 IP 地址是 X-Forwarded-ForTrue-Client-IP或任何其他自定义 X-Forwarded-For 类型报头中列出的最后一个 IP 地址。如果存在多个信头,Snort 会考虑 xff_headers中定义的信头。

http_true_ip 规则选项包括以下参数: http_true_ip.with_headerhttp_true_ip.with_bodyhttp_true_ip.with_trailer

语法: http_true_ip: <parameter>, <parameter>;

示例: http_true_ip:with_header;

http_true_ip.with_header

指定规则只能检查 HTTP 消息信头。 http_true_ip.with_header 参数是可选的。

语法: http_true_ip:with_header;

示例: http_true_ip:with_header;

http_true_ip.with_body

指定规则的其他部分而不是 http_true_ip 规则选项检查 HTTP 消息正文。 http_true_ip.with_body 参数是可选的。

语法: http_true_ip:with_body;

示例: http_true_ip:with_body;

http_true_ip.with_trailer

指定由规则的另一部分而不是 http_true_ip 规则选项检查 HTTP 消息报尾。 http_true_ip.with_trailer 参数是可选的。

语法: http_true_ip:with_trailer;

示例: http_true_ip:with_trailer;

http_uri

将检测光标设置为规范化 URI 缓冲区。

  • http_uri.with_header

  • http_uri.with_body

  • http_uri.with_trailer

  • http_uri.scheme

  • http_uri.host

  • http_uri.port

  • http_uri.path

  • http_uri.query

  • http_uri.fragment

语法: http_uri: <parameter>, <parameter>;

示例: http_uri:with_trailer,path,query;

http_uri.with_header

指定规则只能检查 HTTP 消息信头。 http_uri.with_header 参数是可选的。

语法: http_uri:with_header;

示例: http_uri:with_header;

http_uri.with_body

指定规则的其他部分检查 HTTP 消息正文,而不是检查 http_uri 规则选项。 http_uri.with_body 参数是可选的。

语法: http_uri:with_body;

示例: http_uri:with_body;

http_uri.with_trailer

指定由规则的另一部分而不是 http_uri 规则选项检查 HTTP 消息报尾。 http_uri.with_trailer 参数是可选的。

语法: http_uri:with_trailer;

示例: http_uri:with_trailer;

http_uri.scheme

仅根据 URI 方案进行匹配。 http_uri.scheme 参数是可选的。

语法: http_uri:scheme;

示例: http_uri:scheme;

http_uri.host

仅根据 URI 的主机(域名)匹配。 http_uri.host 参数是可选的。

语法: http_uri: host;

示例: http_uri: host;

http_uri.port

仅根据 URI 的端口(TCP 端口)匹配。 http_uri.port 参数是可选的。

语法: http_uri: port;

示例: http_uri: port;

http_uri.path

仅匹配 URI 的路径(目录和文件)。 http_uri.path 参数是可选的。

语法: http_uri: path;

示例: http_uri: path;

http_uri.query

仅匹配 URI 中的查询参数。http_uri.query 参数是可选的。

语法: http_uri: uri;

示例: http_uri: query;

http_uri.fragment

仅匹配 URI 的分片部分。分段是所请求文件的一部分,通常仅在浏览器内找到,而不通过网络进行传输。 http_uri.fragment 参数是可选的。

语法: http_uri: fragment;

示例: http_uri: fragment;

http_version

将检测光标设置为 HTTP 版本缓冲区的开头。 http_version 接受各种 HTTP 版本。最常见的版本为: HTTP/1.0HTTP/1.1http_version 规则选项包括参数: http_version.requesthttp_version.with_headerhttp_version.with_bodyhttp_version.with_trailer

语法: http_version: <parameter>, <parameter>;

示例: http_version; content:"HTTP/1.1";

http_version.request

与 HTTP 请求中的版本相匹配。检查响应消息时,请使用请求版本。 http_version.request 参数是可选参数。

语法: http_version: request;

示例: http_version: request;

http_version.with_header

指定规则只能检查 HTTP 消息信头。 http_version.with_header 参数是可选的。

语法: http_version:with_header;

示例: http_version:with_header;

http_version.with_body

指定规则的其他部分检查 HTTP 消息正文,而不是由 http_version 规则选项检查。 http_version.with_body 参数是可选的。

语法: http_version:with_body;

示例: http_version:with_body;

http_version.with_trailer

指定由规则的另一部分检查 HTTP 消息报尾,而不是由 http_version 规则选项检查。 http_version.with_trailer 参数是可选的。

语法: http_version:with_trailer;

示例: http_version:with_trailer;

http_version_match

指定要针对标准 HTTP 版本进行匹配的 HTTP 版本列表。使用空格字符分隔多个版本。HTTP 请求或状态行可能包含版本。如果版本存在,Snort 会将此版本与 http_version_match中指定的列表进行比较。

如果版本不是 [0-9].[0-9] 格式,则会被视为格式错误。 采用 [0-9].[0-9] 格式(非 1.01.1) 的版本被视为 其他

类型: 字符串

语法: http_version_match: <version_list>

有效值: 1.0、1.1、2.0、0.9、其他、格式错误

示例: http_version_match: "1.0 1.1";

js_data

将检测光标设置为规范化的 JavaScript 数据。此选项特定于增强型 JavaScript 规范器。

语法: js_data;

示例: js_data;

vba_data

将检测光标设置为 Microsoft Office Visual Basic for Applications 宏缓冲区。

语法: vba_data;

示例: vba_data;