日志基础:格式与类型

做DLP,最怕什么?不是设备不够贵,而是日志看不懂。我见过太多团队买了一堆安全设备,结果日志格式五花八门,关联分析时全卡在“先把这个日志洗干净”这一步。说白了,日志就是安全事件的“人证”,格式不对、类型不清,整个分析链就断了。

这一章我们不扯虚的,就讲两件事:日志长什么样(格式),日志从哪里来(类型)。把这两个基础打牢,后面做关联解析才不慌。

3.1 日志格式:没有规矩,不成方圆

日志格式,就是一个“协议”。我看到很多新人以为日志就是文字堆砌,其实不是。不同的系统、不同的应用,写日志的规矩完全不同。我最早对接邮件DLP系统时,发现网关日志用的是W3C扩展格式,而终端日志是Syslog格式,两个对不齐,折腾了两天。嗯,从那以后我接任何日志都先看格式。

主流日志格式就这几种,记牢就行:

格式典型特征常见场景
Syslog优先级 + 时间戳 + 主机名 + 消息Unix/Linux 系统、网络设备、部分安全设备
JSONkey:value 结构,可嵌套现代API、云服务、DLP策略引擎
CEF(Common Event Format)以“CEF:0|设备|类型|版本|signature|name|severity|extensions”开头ArcSight、多种安全设备
W3C Extended Log#Fields: 行定义列名,数据行按顺序对应Web服务器、邮件网关、代理

举个例子,一条Syslog长这样:

<14>Mar 15 10:25:30 dlp-gateway-01 CEF:0|Acme|DLP|5.2|1001|DataExfil|5|src=10.0.1.25 dst=203.0.113.45 file=report.pdf action=block

你看,它混用了Syslog头和CEF体。实战中这种“混血”格式特别多,我建议拿到日志先看第一行,识别出头部再找中间的分隔符。不要上来就写正则全解析,容易翻车。

我的习惯:写一个“格式嗅探器”,用前10行日志自动识别格式类型。JSON就检查大括号,Syslog看有没有<数字>开头,CEF看有没有“CEF:”字符串。这样接入新日志源时,能省一半时间。

3.2 日志类型:系统、应用、网络

日志类型,其实就是日志的“出身”。我把它分成三大类,每类的字段目标、数据量级、时间精度都不一样。你想想看,如果对接入DLP关联分析的日志不加区分,后面做规则匹配时,会发现问题百出。

3.2.1 系统日志

系统日志来自操作系统、主机DLP代理、AD域控。这类日志的特点是:事件ID驱动,字段结构固定,时间由系统时钟决定。

  • 典型字段:EventID、Severity(Level)、Source(如Security、Application)、AccountName、ProcessID、Message
  • DLP用途:检测可疑进程、USB接入、打印操作、登录异常
  • 痛点:Windows事件日志默认只记录ID,不记录文件路径。我曾遇到客户说“USB拷贝了文件,但不知道文件名”,后来我建议开启“高级审计策略”才拿到更细的路径。
避坑:系统日志量大且杂。Windows一个域控一天能产生几十万条“4624成功登录”。做DLP关联时,必须用过滤器把“成功登录ID”先降噪,否则下游分析器会爆内存。我曾经因为没做过滤,把Hadoop集群跑崩过。

3.2.2 应用日志

应用日志来自DLP代理本身、邮件服务器、文件共享、SaaS应用。这类格式最自由,也最头疼。JSON算整齐的了,有些国产应用写的是自定义的“key=value,key=value”,连逗号的位置都不标准。

  • 典型字段:timestamp、user、action、source_ip、destination_ip、filename、size、policy_hit、result
  • DLP用途:匹配策略执行结果(block/alert),溯源具体哪个用户、哪份文件、什么时间触碰规则
  • 注意:应用日志的时间戳经常带时区偏移,而且不同应用的字段名可能同义不同名,比如“user”和“account”其实是一个东西。我习惯在采集层统一做字段映射。

3.2.3 网络日志

网络日志来自防火墙、IDS/IPS、DNS服务器、代理、SSL解密网关。它们记录的是“流量特征”,而不是内容。但在DLP场景中,网络日志能告诉你:谁在什么时候、向哪个外部IP发了多少数据。

  • 典型字段:五元组(src_ip, src_port, dst_ip, dst_port, protocol)、bytes_sent、bytes_received、packet_count、app_id、domain
  • DLP用途:检测数据外传(大文件上传、异常流量、DNS隧道)、加密流量行为分析
  • 特殊性:网络日志通常不带明文内容(除非开启了SSL解密或ICAP)。所以它更多做“行为层”的关联,不能替代内容扫描的日志。

为了让你更直观地理解三类日志的差异,我做了一张对照表:

维度系统日志应用日志网络日志
数据源OS / AD / 主机DLP应用 / 中间件 / SaaS网络设备 / 防火墙 / 代理
时间精度毫秒级 (系统时钟)毫秒或秒 (应用逻辑)秒或微秒 (NTP同步)
字段固定性高 (EventID为轴)低 (自由度高)中 (五元组固定,其他不定)
数据量中-高中极高 (PPS级别)
DLP价值用户行为溯源策略命中细节异常流量检测
日志基础:格式与类型 日志格式 日志类型 Syslog JSON CEF W3C 系统日志 应用日志 网络日志 格式决定解析器 正则 / JSON Parser / 字段映射 类型决定关联维度 用户 → 文件 → 流量 三角透视 组合使用效果最大化 Syslog+CEF+JSON=全链路

上面这张图把本章核心知识串起来了:日志格式决定怎么“读”日志,日志类型决定怎么“用”日志。我在实际搭建DLP日志关联平台时,就是先按格式把日志解析成统一字段,再按类型打标签,最后按照“用户→文件→流量”的三角模型做关联。三条线一交叉,谁拷贝了什么文件出去,基本跑不掉。

核心要点:
- 解析日志前,先识别格式(Syslog/JSON/CEF/W3C)。
- 分类打标签:系统日志管行为,应用日志管内容,网络日志管流量。
- 时间戳统一UTC,时区问题在采集层处理,不要留到分析层。

嗯,日志格式和类型这部分就先讲到这。你只要把上面的表和图搞熟,后面做关联解析时就知道该去哪个字段找什么东西了。我记得有一次应急响应,客户问“这台机器什么时候把机密文件发出去的?”我直接从网络日志里找到对应时间段的出站流量,再跟应用日志的policy_hit一交叉,5分钟就锁定证据。这就是吃透基础的好处。