标签 ===
tag 关键字允许对当前及后续数据包进行标记。
被标记的数据包可记录在 EVE 日志中,并支持条件式PCAP记录。
标记作用域分为两种:host`(主机)或 `session`(会话/流)。使用 `host 时可指定方向:`src`(源)或 `dst`(目的)。此时标记将基于触发告警的数据包的源或目的IP地址生效。
标记行为通过三种计量方式控制:`packets`(包数量)、`bytes`(字节数)或 `seconds`(秒数)。若未指定计量值,将采用内置默认值:
session 作用域:256个数据包
host 作用域:对触发告警的数据包目的IP标记后续256个数据包
单条规则中可多次使用 tag 关键字。
10.76. 语法¶
tag:<scope>[,<count>, <metric>[,<direction>]];
scope 可选值:session 和 host metric 可选值:packets, bytes, seconds direction 可选值:src 和 dst
10.77. 示例¶
关键字用法:
tag:session; # 标记该流中后续256个数据包
tag:host; # 标记告警目标IP的后续256个数据包
tag:host,100,packets,src; # 标记告警源IP的后续100个数据包
tag:host,3600,seconds,dst; # 标记目标主机未来一小时的数据包
完整规则示例:
alert dns any any -> any any (dns.query; content:"evil"; tag:host,60,seconds,src; sid:1;)
alert http any any -> any any (http.method; content:"POST"; tag:session; sid:1;)
10.78. 标记应用场景¶
EVE日志 """
通过配置可生成 EVE 的 tag 记录:
outputs:
- eve-log:
enabled: yes
filename: eve.json
types:
- alert:
tagged-packets: true
被标记数据包将以 event_type: packet 形式记录:
{
"timestamp": "2020-06-03T10:29:17.850417+0000",
"flow_id": 1576832511820424,
"event_type": "packet",
"src_ip": "192.168.0.27",
"src_port": 54634,
"dest_ip": "192.168.0.103",
"dest_port": 22,
"proto": "TCP",
"pkt_src": "wire/pcap",
"packet": "CAAn6mWJAPSNvfrHCABFAAAogkVAAIAG9rfAqAAbwKgAZ9VqABZvnJXH5Zf6aFAQEAljEwAAAAAAAAAA",
"packet_info": {
"linktype": 1
}
}
EVE文档:Eve JSON输出
10.78.1. 条件式PCAP记录¶
通过配置条件式PCAP记录,可用 tag 关键字控制哪些数据包被记录。
outputs:
- pcap-log:
enabled: yes
filename: log.pcap
limit: 1000mb
max-files: 2000
compression: none
mode: normal
use-stream-depth: no #设为"yes"时,达到流检测深度后的数据包将被忽略。"no"记录所有数据包
honor-pass-rules: no # 设为"yes"时,匹配pass规则的流将停止记录
# 使用"all"记录所有数据包,"alerts"仅记录告警数据包/流,"tag"仅记录通过tag关键字标记的流
conditional: tag
PCAP记录文档:PCAP日志
10.79. 主机/流追踪机制¶
当标记使用 session 作用域时,标签会被添加至 Flow 结构体。若数据包无关联流,则不会标记,且不会产生错误/警告。
参见 流配置 了解流限制与资源管理。
当标记使用 host 作用域时,标签会存储在主机表的 Host 对象中。主机表大小将影响基于主机的标记效果。
参见 主机配置 了解主机表大小管理。