标签 === `tag` 关键字允许对当前及后续数据包进行标记。 被标记的数据包可记录在 `EVE` 日志中,并支持条件式PCAP记录。 标记作用域分为两种:`host`(主机)或 `session`(会话/流)。使用 `host` 时可指定方向:`src`(源)或 `dst`(目的)。此时标记将基于触发告警的数据包的源或目的IP地址生效。 标记行为通过三种计量方式控制:`packets`(包数量)、`bytes`(字节数)或 `seconds`(秒数)。若未指定计量值,将采用内置默认值: - `session` 作用域:256个数据包 - `host` 作用域:对触发告警的数据包目的IP标记后续256个数据包 单条规则中可多次使用 `tag` 关键字。 语法 ~~~~~~ :: tag:[,, [,]]; `scope` 可选值:`session` 和 `host` `metric` 可选值:`packets`, `bytes`, `seconds` `direction` 可选值:`src` 和 `dst` .. 注意:: "direction" 仅在作用域为 "host" 且同时指定 "count" 和 "metric" 时才能使用。 示例 ~~~~~~~~ 关键字用法:: tag:session; # 标记该流中后续256个数据包 tag:host; # 标记告警目标IP的后续256个数据包 tag:host,100,packets,src; # 标记告警源IP的后续100个数据包 tag:host,3600,seconds,dst; # 标记目标主机未来一小时的数据包 完整规则示例: .. container:: example-rule alert dns any any -> any any (dns.query; content:"evil"; tag:host,60,seconds,src; sid:1;) .. container:: example-rule alert http any any -> any any (http.method; content:"POST"; tag:session; sid:1;) 标记应用场景 ~~~~~~~~~~~~~~~ EVE日志 """ 通过配置可生成 `EVE` 的 `tag` 记录: .. code-block:: yaml outputs: - eve-log: enabled: yes filename: eve.json types: - alert: tagged-packets: true 被标记数据包将以 `event_type`: `packet` 形式记录: .. code-block:: json { "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文档::ref:`Eve JSON输出 ` 条件式PCAP记录 """""""""""""""""""""""" 通过配置条件式PCAP记录,可用 `tag` 关键字控制哪些数据包被记录。 .. code-block:: yaml 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记录文档::ref:`PCAP日志 ` 主机/流追踪机制 ~~~~~~~~~~~~~~~~~~~~~ 当标记使用 `session` 作用域时,标签会被添加至 `Flow` 结构体。若数据包无关联流,则不会标记,且不会产生错误/警告。 参见 :ref:`流配置 ` 了解流限制与资源管理。 当标记使用 `host` 作用域时,标签会存储在主机表的 `Host` 对象中。主机表大小将影响基于主机的标记效果。 参见 :ref:`主机配置 ` 了解主机表大小管理。