4. 常见审计日志类型:系统日志、应用日志、安全日志、数据库日志

日志这东西,说白了就是系统的「黑匣子」。每一行背后都记录着系统的历史轨迹。我入行时,第一个被分配的任务就是排查一台服务器为什么半夜重启。翻了几百 MB 的日志,才找到真相——原来是电源模块挂了。从那以后,我就养成了一个习惯:不管什么系统,先搞清楚它会产生哪些日志。

先来看一张图,帮你快速建立整体认知。

常见审计日志类型体系 系统日志 应用日志 安全日志 数据库日志 核心特征 OS 内核与守护进程 用户登录/启动/崩溃 常见路径: /var/log/ 核心特征 业务逻辑与运行时状态 API 调用/异常/性能 自定义格式 / JSON 核心特征 权限变更/入侵检测 身份认证/策略违规 独立审计系统 核心特征 事务日志 / Redo Log 查询审计 / 慢查询

4.1 系统日志:操作系统的底牌

系统日志,是操作系统本身产生的记录。无论你是用 Linux 还是 Windows,这部分日志都是最早被建立起来的。

我个人习惯把所有系统日志分为三类:

  • 内核日志:硬件故障、驱动报错、内存溢出都在这里。
  • 用户态服务日志:比如 SSH 的登录记录、cron 任务的执行情况。
  • 启动日志:系统从开机到运行的全过程,排查启动故障时最有用。
路径小贴士: Linux 环境下,大部分系统日志位于 /var/log/。比如 /var/log/messages 记录通用系统消息,/var/log/secure 则专门记录安全相关的认证日志。

我遇到过一家客户,生产环境突然大面积断连。运维排查了半天没头绪。我让他们先查一下所有机器上的 /var/log/messages。果然,在同一时间戳下,所有节点都报了物理网卡 down/up 重置。最后发现是交换机的 STP 配置不当。你看,系统日志往往能一针见血地指出问题根源。

4.2 应用日志:业务痛点的放大镜

应用日志,是开发人员最熟悉的。你写的代码里每一条 console.log、logger.info,最终都会汇聚到这里。

相比系统日志,应用日志有两个很明显的特征:

  1. 格式高度自定义——没有统一标准,全看开发团队怎么定义。有的用 JSON,有的直接用纯文本拼一行。
  2. 跟业务直接挂钩——比如订单处理日志、用户登录日志、支付回调日志,这些对排查业务故障至关重要。

举个例子,一个简单的 Web 应用日志配置:

// 一个建议的日志格式
{
  "timestamp": "2025-03-27T10:15:30.123Z",
  "level": "ERROR",
  "trace_id": "abc123xyz",
  "service": "order-svc",
  "message": "支付超时,用户ID: 9527",
  "stack": "..."
}
踩过的坑: 我曾经遇到过应用因日志写太多,把磁盘撑满导致服务完全挂掉的情况。后来我做了一个强制规定:任何应用日志都必须设置轮转策略和磁盘配额。

4.3 安全日志:防守的第一道防线

安全日志,说白了就是「谁、在什么时间、用什么权限、做了什么操作」的完整记录。

为什么单独把它列为一类?因为安全日志有明确的审计目的,不像系统日志那么泛。常见的安全日志来源包括:

日志来源 典型内容 审计价值
认证系统 登录成功/失败记录、暴力破解尝试 发现异常登录行为
防火墙/IDS 被拦截的端口扫描、SQL 注入攻击 检测网络层攻击
sudo/su 操作 谁在什么时候提升了权限 追踪特权滥用
文件完整性 /etc/shadow 被修改 发现后门植入

我记得有一次,客户觉得内网很安全,完全没做安全日志采集。直到某天一个离职员工的账号被用来登录生产环境,删掉了整个配置文件目录。虽然通过数据库备份恢复了数据,但那次事件之后,他们把所有安全日志都集中到了单独的 SIEM 系统里。

4.4 数据库日志:数据变更的铁证

数据库日志是一个特殊的存在。它是审计中最高频接触的日志类型之一,因为数据是企业的核心资产。

常见的数据库日志包括:

  • 事务日志(Redo Log/Transaction Log):记录所有数据变更操作,用于崩溃恢复。
  • 错误日志:记录数据库启动、停止、死锁、连接异常等。
  • 慢查询日志:记录执行时间超过阈值的 SQL 语句。
  • 审计日志:记录谁在什么时间连接了数据库、执行了什么 DDL/DML 操作。

在 MySQL 中开启审计功能的示例:

-- 安装审计插件
INSTALL PLUGIN audit_log SONAME 'audit_log.so';

-- 查看审计日志文件路径
SHOW VARIABLES LIKE 'audit_log_file';

为什么我强调数据库日志是「铁证」?因为事务日志记录的每一条变更,都包含精确的时间和操作前后的状态。把它和备份结合起来,你能还原出任何一个时间点的数据。

一个关键认知: 四类日志并非完全割裂。一次安全事件的完整溯源,往往需要同时查阅系统日志(看主机状态)、应用日志(看业务流转)、安全日志(看认证与权限)和数据库日志(看数据变更)。能够串联这四类日志,才是真正的日志分析高手。

4.5 实践建议:如何下手

如果你刚开始搭建日志体系,我建议不要做得太复杂。先按下面这个顺序来做:

  1. 先把系统日志收进来——这是基础,覆盖机器层面。
  2. 再把关键业务应用的日志加进来——覆盖业务层面。
  3. 接着接入安全日志——覆盖风险层面。
  4. 最后考虑数据库日志——覆盖数据层面。

这个顺序也是成本递增的顺序。我第一次独立搭建日志平台时,就是按这个节奏来的。三个月后,当第一起线上故障被我们通过日志快速定位时,那种成就感还是很踏实的。

注意一点:不是所有日志都需要无脑全量留存。一般建议按合规要求来制定保留周期,比如安全日志保留 180 天,业务日志保留 90 天,调试日志保留 7 天。时间长的放冷存储,时间短的放热存储。这笔账,迟早要算。