1. 审计日志基础:日志是安全的“黑匣子”

大家好,我是老赵。干安全运维十几年,我有个习惯——每天上班第一件事,不是看监控大屏,而是翻几页日志。为什么?因为日志不会说谎。系统可能宕机,告警可能误报,但日志记录的是最原始的事实。

这一章,咱们聊聊审计日志的基础。说白了,就是搞清楚三个问题:它是什么?它有什么用?它长什么样?

1.1 什么是审计日志

审计日志,就是系统、应用或设备自动记录下来的“操作流水账”。每一条日志,都对应一个具体的事件——谁、在什么时间、从哪来、干了什么、结果如何。

举个例子,你登录服务器,系统就会记一条:用户 root 于 2025-03-15 09:30:22 从 192.168.1.100 SSH 登录成功。这就是一条典型的审计日志。

核心三要素:

  • 主体(谁干的):用户、进程、服务账号
  • 行为(干了什么):登录、读写文件、修改配置、执行命令
  • 结果(成没成):成功、失败、拒绝、超时

我遇到过不少新手,觉得日志就是“出事了才看”。其实不然。审计日志更像飞机的黑匣子——平时没人关心,但真出了事,它是唯一能还原现场的证据。

1.2 审计日志的价值

审计日志到底值钱在哪?我总结了三层价值:

  1. 故障排查:系统崩了,日志能告诉你崩在哪、为什么崩。我记得有一次线上服务半夜挂了,查了一圈没头绪,最后翻应用日志发现是数据库连接池耗尽——日志里清清楚楚记着每次连接的申请和释放时间。
  2. 安全取证:被入侵了,日志能还原攻击路径。攻击者删了文件、清了bash历史,但系统日志、防火墙日志、Web日志都还在。把这些串起来,就能画出完整的攻击链。
  3. 合规审计:等保、ISO 27001、PCI DSS……这些合规要求都明确规定了日志的留存和审计。没有日志,合规就是空话。

避坑指南:我曾经接手过一个项目,客户说“日志都存了”,结果一查,日志文件权限是777,谁都能删。这等于没存。记住:日志不仅要存,还要保护好——防篡改、防删除、防泄露。

1.3 常见审计日志类型

实际工作中,我们主要跟三类日志打交道:

类型 来源 典型内容 我常用的工具
系统日志 操作系统、内核、系统服务 登录记录、进程启动/停止、磁盘错误、网络连接 journalctl、dmesg、/var/log/messages
应用日志 Web服务器、数据库、中间件、业务系统 HTTP请求、SQL查询、API调用、业务操作 ELK、Splunk、Loki
安全日志 防火墙、IDS/IPS、WAF、VPN、堡垒机 攻击告警、访问控制、异常流量、认证失败 SIEM(如OSSIM、Splunk ES)

这三种日志不是孤立的。你想想看,一次攻击往往会在多个层面留下痕迹:Web日志里能看到恶意请求,系统日志里能看到异常进程,安全日志里能看到防火墙拦截记录。把它们关联起来分析,才能看清全貌。

1.4 日志格式标准

日志格式不统一,是运维人员最头疼的事之一。好在业界有一些通用标准,我挑三个最常用的说说。

1.4.1 Syslog

Syslog 是最古老的日志协议,也是 Linux 系统的默认日志格式。它的结构很简单:

<PRI>时间戳 主机名 进程[PID]: 消息内容

举个例子:

<13>Mar 15 09:30:22 webserver sshd[12345]: Failed password for root from 192.168.1.100 port 22 ssh2

这里 <13> 是优先级,由设施代码和严重级别计算得出。说实话,Syslog 的可读性一般,但胜在通用——几乎所有网络设备和 Linux 系统都支持。

1.4.2 JSON

JSON 格式是现在的主流,尤其适合机器解析和结构化存储。同样的登录失败事件,用 JSON 写出来是这样的:

{
  "timestamp": "2025-03-15T09:30:22.123Z",
  "host": "webserver",
  "process": "sshd",
  "pid": 12345,
  "event": "authentication_failure",
  "user": "root",
  "source_ip": "192.168.1.100",
  "port": 22,
  "protocol": "ssh"
}

我个人非常喜欢 JSON 格式。为什么?因为它字段清晰,查询方便。在 ELK 里,你可以直接搜 event: authentication_failure,不用写正则。

1.4.3 CEF(Common Event Format)

CEF 是 ArcSight 定义的格式,在 SIEM 领域用得比较多。它的结构是:

CEF:版本|设备厂商|设备产品|设备版本|事件ID|事件名称|严重级别|扩展字段

举个例子:

CEF:0|Security|SSHD|1.0|100|Authentication Failure|5|src=192.168.1.100 dst=10.0.0.1 duser=root

CEF 的好处是标准化程度高,不同厂商的设备都能统一接入 SIEM。但缺点也很明显——字段名是固定的,扩展性不如 JSON。

注意:很多设备声称支持 CEF,但实现上各有各的“方言”。我遇到过一台防火墙,CEF 里的时间戳格式跟标准不一样,导致 SIEM 解析失败。所以,接入新设备时一定要先做格式验证。

1.5 三种格式对比

维度 Syslog JSON CEF
可读性 一般 好 较好
机器解析 需正则 原生支持 需解析器
扩展性 差 强 中等
适用场景 网络设备、Linux Web应用、微服务 SIEM、安全设备

嗯,这里要注意:没有一种格式是万能的。我的建议是——能统一就统一,不能统一就做好格式转换。比如,用 Logstash 把 Syslog 转成 JSON,再送进 ES 存储。

1.6 本章知识体系

下面这张图,帮你理清本章的核心脉络:

审计日志基础 · 知识体系 审计日志 定义与三要素 三大核心价值 三种日志类型 故障排查 安全取证 合规审计 系统日志 应用日志 安全日志 日志格式标准 Syslog JSON CEF 核心:统一格式 + 保护完整性 + 关联分析

这张图把本章内容串起来了。从定义出发,到价值、类型、格式,最后落到一个核心观点:日志只有统一、完整、可关联,才能真正发挥审计价值。

好了,第一章就到这里。记住一句话:日志是安全的基石。后面我们会一步步深入,教你如何收集、解析、分析这些日志。但在此之前,先把基础打牢——搞清楚你面对的是什么,它为什么重要,它长什么样。