1. 审计日志基础:日志是安全的“黑匣子”
大家好,我是老赵。干安全运维十几年,我有个习惯——每天上班第一件事,不是看监控大屏,而是翻几页日志。为什么?因为日志不会说谎。系统可能宕机,告警可能误报,但日志记录的是最原始的事实。
这一章,咱们聊聊审计日志的基础。说白了,就是搞清楚三个问题:它是什么?它有什么用?它长什么样?
1.1 什么是审计日志
审计日志,就是系统、应用或设备自动记录下来的“操作流水账”。每一条日志,都对应一个具体的事件——谁、在什么时间、从哪来、干了什么、结果如何。
举个例子,你登录服务器,系统就会记一条:用户 root 于 2025-03-15 09:30:22 从 192.168.1.100 SSH 登录成功。这就是一条典型的审计日志。
核心三要素:
- 主体(谁干的):用户、进程、服务账号
- 行为(干了什么):登录、读写文件、修改配置、执行命令
- 结果(成没成):成功、失败、拒绝、超时
我遇到过不少新手,觉得日志就是“出事了才看”。其实不然。审计日志更像飞机的黑匣子——平时没人关心,但真出了事,它是唯一能还原现场的证据。
1.2 审计日志的价值
审计日志到底值钱在哪?我总结了三层价值:
- 故障排查:系统崩了,日志能告诉你崩在哪、为什么崩。我记得有一次线上服务半夜挂了,查了一圈没头绪,最后翻应用日志发现是数据库连接池耗尽——日志里清清楚楚记着每次连接的申请和释放时间。
- 安全取证:被入侵了,日志能还原攻击路径。攻击者删了文件、清了bash历史,但系统日志、防火墙日志、Web日志都还在。把这些串起来,就能画出完整的攻击链。
- 合规审计:等保、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 本章知识体系
下面这张图,帮你理清本章的核心脉络:
这张图把本章内容串起来了。从定义出发,到价值、类型、格式,最后落到一个核心观点:日志只有统一、完整、可关联,才能真正发挥审计价值。
好了,第一章就到这里。记住一句话:日志是安全的基石。后面我们会一步步深入,教你如何收集、解析、分析这些日志。但在此之前,先把基础打牢——搞清楚你面对的是什么,它为什么重要,它长什么样。