审计日志基础:搞懂日志,才能管好日志

聊零信任审计日志跨域查询之前,我琢磨着必须先过一遍基础——审计日志到底是什么玩意儿。你想想看,要是连日志长什么样、分几种类型都不清楚,后面谈跨域查询那就是空中楼阁了。我个人习惯把这部分叫作“日志扫盲”,但别小看它,往往是这些基础概念决定了你在排查问题时能不能快速定位。

什么是审计日志

说白了,审计日志就是系统、应用、安全设备产生的“行为流水账”。它记录了谁在什么时间、从哪来、干了什么事、结果怎么样。举个简单的例子,有人登录你的服务器,审计日志就会记下用户A于2025-01-15 10:23:45通过SSH从IP 192.168.1.100登录成功这段信息。

我最早接触审计日志,是在一家金融客户那里。当时客户说系统被入侵了,但查了半天发现日志根本没开全。嗯,这里要注意——审计日志不是为了记录而记录,它的核心价值在于“事后追溯”和“实时告警”。在零信任模型里,审计日志更是判断一个请求是否可信的重要依据。

核心观点:没有审计日志,安全事件就是无头悬案。

审计日志的类型

我个人习惯把日志分成三大类:系统日志、应用日志和安全日志。这三类日志在零信任场景下经常需要交叉查询,所以你得清楚它们各自在说什么。

类型 记录内容 典型字段
系统日志 操作系统事件(启动、关机、进程、服务等) 时间戳、进程ID、事件ID、用户、源IP
应用日志 应用程序运行状态(请求、错误、事务) 请求路径、响应码、用户会话、耗时
安全日志 安全相关事件(登录、权限变更、防火墙策略) 事件类型、源/目标IP、行为结果(允许/拒绝)

我在项目中遇到过好几次,开发人员只看应用日志,运维只看系统日志,安全团队只看安全日志——各看各的,出了问题互相甩锅。后来我们做了跨域日志查询平台,把三类日志关联起来,才真正把问题串起来。你想想看,一个应用报错,到底是代码bug、操作系统资源不足、还是被防火墙拦截?不把三类日志拉在一起,根本说不清。

日志格式:Syslog、JSON、CEF

格式这个东西,就是日志的“语言”。不同设备、不同应用用不同的格式说话。作为零信任审计日志跨域查询的从业者,你得能听懂这些“方言”。

Syslog

Syslog是最老牌的日志格式,起源于Unix系统。它文本化、结构化弱,但兼容性极强。几乎所有网络设备都支持Syslog。

<14>Jan 15 10:23:45 server01 sshd[12345]: Failed password for root from 192.168.1.100 port 22 ssh2

上面这条日志里,<14>表示设施代码和严重级别,后面依次是时间、主机名、进程名、进程ID和具体消息。你看,它没有明显的字段标签,全靠位置和空格分隔。

一个小技巧:解析Syslog时,我习惯用正则表达式先提取时间戳和主机名,剩下的消息体再按关键字切分。遇到格式不标准的设备,灵活应对。

JSON

JSON格式现在越来越流行,原因很简单——机器解析友好、结构化清晰。你看下面这段日志,字段名、字段值一目了然。

{
  "timestamp": "2025-01-15T10:23:45.123Z",
  "host": "server01",
  "process": "sshd",
  "pid": 12345,
  "event": "login_failed",
  "user": "root",
  "source_ip": "192.168.1.100",
  "port": 22,
  "protocol": "ssh"
}

我曾经处理过一个项目,要求把上千台服务器的Syslog统一转成JSON格式再入库。起初觉得麻烦,但后来做跨域查询时,JSON的字段化优势就体现出来了——你直接按source_ip或user字段查询,效率比全文搜索高一个量级。

CEF

CEF(Common Event Format)是ArcSight提出的一种日志格式,主要用于安全设备和SIEM系统。它介于Syslog和JSON之间,既有一定的结构化,又保持了文本的可读性。

CEF:0|Security|Firewall|1.0|100|Login Failed|5|src=192.168.1.100 dst=10.0.0.1 suser=root deviceProcessName=sshd

CEF格式的固定结构是:CEF:版本号|设备厂商|设备产品|设备版本|事件ID|事件名称|严重级别|扩展字段。扩展字段使用键=值对,用空格分隔。

我个人觉得,CEF最大的好处是它自带分类体系——事件ID和事件名称已经帮你分好类了。做零信任审计日志跨域查询时,用CEF格式的日志能省去很多分类清洗的工作。

避坑指南:我曾经遇到过CEF格式中扩展字段包含空格的情况,比如msg=login failed,解析时容易出错。解决方案是要求发送端对包含空格的字段值加双引号,或者在解析时使用CEF标准解析库,不要自己手写解析。

日志格式对比

为了让你更直观地理解三种格式的差异,我列了个对比表。

特性 Syslog JSON CEF
结构化程度 低 高 中
机器解析难度 高 低 中
人类可读性 中 低(紧凑格式时) 高
兼容性 极高 高 中(SIEM领域为主)
扩展性 差 好 好

你想想看,零信任场景里,日志要跨设备、跨系统、跨域查询。这时候如果所有日志都用同一种格式,当然是最理想的。但现实是,你的网络设备可能只支持Syslog,核心应用只输出JSON,安全设备强制用CEF。所以,跨域查询平台必须有能力理解和转换这几种格式。

一张图搞懂审计日志基础

我把上面讲的内容画了个框架图,帮你把知识串起来。

审计日志基础 什么是审计日志 审计日志的类型 日志格式 记录“谁+时间+行为+结果” 核心价值:事后追溯+实时告警 系统日志 应用日志 安全日志 Syslog JSON CEF 零信任跨域查询的核心挑战 • 设备类型多样,产生日志格式不同 • 需要把Syslog、JSON、CEF统一解析入库 • 系统、应用、安全三类日志要关联查询才能还原事件全貌

这个图把审计日志的基础框架清楚展示出来了。最上面是总概念“审计日志基础”,下面分成三个分支:什么是审计日志、类型、格式。每个分支再展开具体内容。底部那个说明框,就是在提醒你——搞零信任跨域查询,必须把这三块整合起来思考。

一点个人感悟

我做了这么多年安全日志相关的工作,最大的感触是:格式统一是基础,但别指望现实世界所有设备都标准化。零信任审计日志跨域查询,本质上就是一个“翻译+拉通”的过程。你把Syslog、JSON、CEF都吃透了,后面做数据清洗、字段映射、关联查询就会顺畅很多。

好了,日志基础咱们就聊到这儿。记住一句话:看得懂日志格式,才能在跨域查询中游刃有余。