Firepower 系统支持专门用于使用数据包 TCP 报头和 TCP 数据流大小来识别尝试的攻击的关键字。
ack
可以使用 ack
关键字将某个值与数据包的 TCP 确认号进行比较。如果数据包的 TCP 确认号与为 ack
关键字指定的值相匹配,则会触发规则。
ack
参数值必须为数字。
标志
可以使用 flags
关键字指定 TCP 标志的任意组合,如果在已检查的数据包中设置此关键字,将触发规则。
注
|
在使用 A+ 作为 flags 的值的一般情况下,应转为使用具有 established 值的 flow 关键字。通常,如果使用标志以确保标志的所有组合均已检测到,应使用具有 stateless 值的 flow 关键字。
|
可以检查或忽略下表中所述的 flag
关键字的值。
表 39. flag 参数
参数
|
TCP 标志
|
Ack
|
确认数据。
|
Psh
|
数据应该在此数据包中发送。
|
Syn
|
新的连接。
|
Urg
|
包含紧急数据的数据包。
|
Fin
|
关闭的连接。
|
Rst
|
中止的连接。
|
CWR
|
ECN 堵塞窗口已减少。这以前是 R1 参数,仍支持向后兼容。
|
ECE
|
ECN 响应。这以前是 R2 参数,仍支持向后兼容。
|
使用 flags
关键字时,可以使用运算符来指示系统如何匹配多个标志。下表介绍了这些运算符。
表 40. 与 flags 配合使用的运算符
运算符
|
说明 (Description)
|
示例
|
all
|
数据包必须包含所有指定的标志。
|
选择 Urg 和 all 可规定数据包必须包含紧急标志,且可以包含任何其他标志。
|
any
|
数据包可包含任何指定的标志。
|
选择 Ack 、Psh 和 any 可规定必须设置 Ack 和/或 Psh 标志才能触发规则,且也可以对数据包设置其他标志。
|
不
|
数据包不得包含指定的标志集。
|
选择 Urg 和 not 可规定不对会触发此规则的数据包设置紧急标志。
|
流
可以使用 flow
关键字选择由规则根据会话特征进行的检查的数据包。flow
关键字允许您指定规则应用的流量的方向,从而将规则应用于客户端流量或服务器流量。要指定 flow
关键字如何检查数据包,可以设置要分析的流量的方向、已检查的数据包的状态以及这些数据包是否是重建数据流的一部分。
数据包状态检测发生在规则处理之后。如果要使某个 TCP 规则忽略无状态流量(尚未建立会话情景的流量),必须将 flow
关键字添加到该规则,并为该关键字选择 Established 参数。如果要使某个 UDP 规则忽略无状态流量,必须将 flow
关键字添加到该规则,并选择 Established 参数和/或方向参数。这样,TCP 或 UDP 规则就会执行数据包状态检查。
如果添加方向参数,规则引擎将只检查具有已建立状态且流向与指定方向匹配的数据包。例如,如果将具有 established
参数和 From Client
参数的 flow
关键字添加到某个规则,且该规则会在检测到 TCP 或 UDP 连接的情况下触发,那么规则引擎将只检查从特定客户端发送的数据包。
提示
|
为了获得最佳性能,应始终在 TCP 规则或 UDP 会话规则中包含 flow 关键字。
|
下表介绍了可为 flow
关键字指定的数据流相关参数:
表 41. 状态相关的 flow 参数
参数
|
说明
|
Established
|
在已建立连接的情况下触发。
|
Stateless
|
无论数据流处理器的状态如何,都会触发。
|
下表介绍了可为 flow
关键字指定的方向选项:
表 42. flow 方向参数
参数
|
说明
|
到客户端
|
服务器响应时触发。
|
到服务器
|
客户端响应时触发。
|
自客户端
|
客户端响应时触发。
|
自服务器
|
服务器响应时触发。
|
请注意,From Server
和 To Client
执行相同的功能,To Server
和 From Client
执行相同的功能。这些选项是为了是规则具有上下文和可读性。例如,如果要创建用于检测从服务器向客户端发起的木马攻击的规则,应使用 From Server
。但是,如果要创建用于检测从客户端向服务器发出的木马攻击的规则,应使用 From Client
。
下表介绍了可为 flow
关键字指定的数据流相关参数:
表 43. 数据流相关的 flow 参数
参数
|
说明
|
忽略流流量
|
重建流数据包时不触发。
|
仅流流量
|
仅在重建流数据包时触发。
|
例如,可以使用 To Server, Established, Only Stream Traffic
作为 flow
关键字的值,这样将会检测在建立的会话中从客户端流向服务器并且由数据流预处理器重组的流量。
序列号
使用 seq
关键字可指定静态序列号值。序列号与指定参数相匹配的数据包将会触发包含此关键字的规则。虽然此关键字很少使用,但它有助于识别使用生成的具有静态序列号的数据包的攻击和网络扫描。
window
可以使用 window
关键字指定感兴趣的 TCP 窗口大小。包含此关键字的规则在遇到具有指定 TCP 窗口大小的数据包时,都会触发。虽然此关键字很少使用,但它有助于识别使用生成的具有静态 TCP 窗口大小的数据包的攻击和网络扫描。
stream_size
可以将 stream_size
关键字与数据流预处理器配合使用,以确定 TCP 数据流的大小(以字节为单位),具体格式如下:
direction,operator,bytes
其中,bytes 是字节数。必须以逗号 (,) 分隔参数中的每个选项。
下表介绍了可为 stream_size
关键字指定的不区分大小写的方向选项:
表 44. stream_size 关键字定向参数
参数
|
说明
|
客户端
|
当来自客户端的数据流与指定数据流大小相匹配时触发。
|
server
|
当来自服务器的数据流与指定数据流大小相匹配时触发。
|
both
|
当来自客户端和服务器的流量都与指定数据流大小相匹配时触发。
例如,如果来自客户端的流量大于 200 字节,且来自服务器的流量也大于 200 字节,参数 both, >, 200 将会触发。
|
either
|
当来自客户端或服务器流量与指定数据流大小相匹配时触发(无论哪一种情况先发生)。
例如,如果来自客户端的流量大于 200 字节,或来自服务器的流量大于 200 字节,参数 either, >, 200 将会触发。
|
下表介绍了可与 stream_size
关键字配合使用的运算符:
表 45. stream_size 关键字参数运算符
运算符
|
说明
|
=
|
等于
|
!=
|
不等于
|
>
|
大于
|
<
|
小于
|
>=
|
大于或等于
|
<=
|
小于或等于
|
例如,可以使用 client, >=, 5001216
作为 stream_size
关键字的参数,以检测从客户端发往服务器的且大于或等于 5001216 字节的 TCP 数据流。