摘要
conn.log记录的是一台经配置的 Zeek 传感器对所见流量的归纳;字段再齐全,也不是逐包实录,history更不能反向展开成全部报文。- 可靠结论应随原始日志一并保存 Zeek 版本、字段模式、脚本、采集点、过滤条件、时钟、丢包与运行告警,以及同一
uid串联的其他日志。
把流量变成事件,本来就是一次取舍
Paxson 在 1998 年发表的 Bro 论文中,把系统分成两个层次:事件引擎接收经过过滤的报文流,将其缩减为更高层的网络事件;策略脚本再决定这些事件对某个站点意味着什么。机制与策略分开,使监测系统能够在高流量链路上运行,也让本地规则不必被焊死在底层解析器里。
这套设计解决了规模问题,同时清楚划出证据边界。conn.log 之所以好用,正因为它没有重复保存所有输入。可是在抵达那一行记录之前,流量已经经过网卡、链路位置、抓取过滤器、完整性检查、连接状态机和脚本逻辑。日志是这条观察链的产物,不是原始流量的替身。
早期论文对丢包并不讳言。监测程序处理不过来时,过滤缓冲区最终会丢弃报文;恰恰被丢掉的那一包,可能包含识别入侵所需的线索。论文还假定攻击者会了解监测方法,并尝试规避或压垮监测器。因此,传感器健康度不是后台运维附录,而是事件证据的一部分。
每个字段都省略了主语
Zeek 当前文档称 conn.log 主要记录三层和四层活动:谁与谁通信、何时开始、持续多久、使用何种协议。它既跟踪 TCP,也跟踪 UDP;脚本参考进一步说明,UDP 和 ICMP 的“连接”采用流语义,而不是 TCP 会话语义。连“连接”这个词,都不能脱离协议直接理解。
ts 是 Zeek 看见第一包的时间,不是对整条路径上“世界第一包”的证明。uid 是 Zeek 为连接生成的唯一标识,用来把 DNS、HTTP、TLS、notice 等相关记录串起来;它是日志系统的关联键,不是两端共同签发的身份。
conn_state 汇总传感器推断出的状态。S0 表示看到了尝试,却没看到回复;SF 表示建立与结束看起来正常;其他代码描述拒绝、复位、半开或不完整关闭。这里真正重要的是“看到”和“推断”。如果观测点只看见单向流量、启动较晚或正处于丢包窗口,同一端到端交换可能得到不同状态。
history 更容易被误当成报文序列。大写字母表示发起方事件,小写表示响应方事件;SYN、SYN-ACK、ACK、数据、FIN、RST、内容缺口与重传等被压成短字符串。但部分标记每个方向最多只记一次,另一些按对数方式重复。它能描绘连接形状,却没有保留逐包时序和完整次数,无法逆向还原 PCAP。
字节与时长也带着实现选择。TCP 的 orig_bytes、resp_bytes 来自序列号推算,文档明确提示在大连接等情况下可能不准。duration 不包含某些方向关闭后、不再产生新载荷的尾随报文,尽管 history 仍可能留下痕迹。包数与 IP 字节数依赖连接大小分析器,属于可选字段;本地/远端标记又依赖 Site::local_nets。空值可能说明配置未启用,而不是网络中不存在相应事实。
先查证人有没有走神
missed_bytes 统计内容缺口中遗漏的字节,非零通常会让协议分析失败,不过丢包前已有的部分分析可能已经完成。capture_loss.log 则依据 TCP 序列号间隙估算丢失:Zeek 观察到 gap,然后假设缺失流量对应采集损失。这个指标有用,但它的适用范围也写在方法里——它不是测量所有不可见流量的万能仪表。
reporter.log 记录处理流量和计算资源时出现的内部警告与错误。判断一条连接记录时,应把同一时间窗里的丢包日志、运行告警、进程重启、过滤器变化和接口状态对齐。仅仅看到 conn.log 文件持续写入,并不等于观察链完整。
missed_bytes 为零,也不能排除上游镜像丢失、非对称路由、过窄过滤器或传感器启动前的盲区。相反,发现丢包也不意味着这一时段所有字段一律作废。有效的不确定性必须落到具体时间、方向、传感器和处理阶段。
证据单位不是一行,而是一包材料
若结论将在数月后用于复盘、纪律处分、诉讼、保险或监管报告,至少要保存:原始日志及精确字段模式、Zeek 版本、所加载的脚本与有关配置、传感器接口和网络位置、抓取过滤器、时钟源与测得偏差、覆盖该时段的 capture_loss.log 与 reporter.log,以及同一 uid 下支撑解释的其他协议日志。
在隐私与保留政策允许时,再附上不可变的 PCAP 片段或能够定位受控副本的哈希。PCAP 也不是全知视角,它同样受采集点、snap length、丢包与保管链约束;但它能让后来者用更低层观察复核日志的压缩推断。
如果没有保存 PCAP,就明确写“未保留”。“位于某处、采用某配置的 Zeek 传感器观察并归纳到……”比“网络中的报文就是……”更专业,因为前一句的边界可以验证。
字段模式同样必须冻结。当前文档指出 ip_proto 到 Zeek 7.1 才加入;脚本还能增删字段或改变记录行为。缺少版本、表头或 JSON 模式,后来的工具可能用今天的定义误读昨天的数据。
资料来源
- https://docs.zeek.org/en/current/reference/logs/capture-loss-and-reporter.html
- https://docs.zeek.org/en/current/reference/logs/conn.html
- https://docs.zeek.org/en/current/scripts/base/protocols/conn/main.zeek.html
- https://www.icsi.berkeley.edu/people/vern-paxson/
- https://www.usenix.org/publications/library/proceedings/sec98/full_papers/paxson/paxson.pdf
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
