日志基础:格式与类型
做DLP,最怕什么?不是设备不够贵,而是日志看不懂。我见过太多团队买了一堆安全设备,结果日志格式五花八门,关联分析时全卡在“先把这个日志洗干净”这一步。说白了,日志就是安全事件的“人证”,格式不对、类型不清,整个分析链就断了。
这一章我们不扯虚的,就讲两件事:日志长什么样(格式),日志从哪里来(类型)。把这两个基础打牢,后面做关联解析才不慌。
3.1 日志格式:没有规矩,不成方圆
日志格式,就是一个“协议”。我看到很多新人以为日志就是文字堆砌,其实不是。不同的系统、不同的应用,写日志的规矩完全不同。我最早对接邮件DLP系统时,发现网关日志用的是W3C扩展格式,而终端日志是Syslog格式,两个对不齐,折腾了两天。嗯,从那以后我接任何日志都先看格式。
主流日志格式就这几种,记牢就行:
| 格式 | 典型特征 | 常见场景 |
|---|---|---|
| Syslog | 优先级 + 时间戳 + 主机名 + 消息 | Unix/Linux 系统、网络设备、部分安全设备 |
| JSON | key: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体。实战中这种“混血”格式特别多,我建议拿到日志先看第一行,识别出头部再找中间的分隔符。不要上来就写正则全解析,容易翻车。
3.2 日志类型:系统、应用、网络
日志类型,其实就是日志的“出身”。我把它分成三大类,每类的字段目标、数据量级、时间精度都不一样。你想想看,如果对接入DLP关联分析的日志不加区分,后面做规则匹配时,会发现问题百出。
3.2.1 系统日志
系统日志来自操作系统、主机DLP代理、AD域控。这类日志的特点是:事件ID驱动,字段结构固定,时间由系统时钟决定。
- 典型字段:EventID、Severity(Level)、Source(如Security、Application)、AccountName、ProcessID、Message
- DLP用途:检测可疑进程、USB接入、打印操作、登录异常
- 痛点:Windows事件日志默认只记录ID,不记录文件路径。我曾遇到客户说“USB拷贝了文件,但不知道文件名”,后来我建议开启“高级审计策略”才拿到更细的路径。
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价值 | 用户行为溯源 | 策略命中细节 | 异常流量检测 |
上面这张图把本章核心知识串起来了:日志格式决定怎么“读”日志,日志类型决定怎么“用”日志。我在实际搭建DLP日志关联平台时,就是先按格式把日志解析成统一字段,再按类型打标签,最后按照“用户→文件→流量”的三角模型做关联。三条线一交叉,谁拷贝了什么文件出去,基本跑不掉。
- 解析日志前,先识别格式(Syslog/JSON/CEF/W3C)。
- 分类打标签:系统日志管行为,应用日志管内容,网络日志管流量。
- 时间戳统一UTC,时区问题在采集层处理,不要留到分析层。
嗯,日志格式和类型这部分就先讲到这。你只要把上面的表和图搞熟,后面做关联解析时就知道该去哪个字段找什么东西了。我记得有一次应急响应,客户问“这台机器什么时候把机密文件发出去的?”我直接从网络日志里找到对应时间段的出站流量,再跟应用日志的policy_hit一交叉,5分钟就锁定证据。这就是吃透基础的好处。