第2章:日志基础——什么是日志、日志类型

2.1 什么是日志

日志这东西,说白了就是系统运行的“黑匣子”。你想想看,服务器、网络设备、业务应用,每时每刻都在产生记录——谁在什么时候、从哪来、干了什么事、结果怎么样。把这些按时间顺序记下来,就是日志。

我个人习惯是,接到任何安全事件,第一件事就是翻日志。没有日志,你就像蒙着眼找线索,基本无从下手。

一条完整的日志,通常包含以下几个核心要素:

要素 说明 示例
时间戳 事件发生的精确时间 2025-01-15 14:23:45
事件源 产生日志的主体(IP、主机名、设备) 192.168.1.100
事件类型 事件的分类或操作 登录成功 / 登录失败
日志级别 事件的严重程度 INFO / WARNING / ERROR
详细描述 事件的具体信息 User 'admin' logged in from 10.0.0.5

在安全领域,日志是溯源的唯一客观证据。攻击者可以删除文件、清理进程,但总会在日志里留下痕迹——前提是你知道怎么看。

2.2 系统日志

系统日志记录的是操作系统层面的事件。无论是Windows还是Linux,系统日志都是安全分析的“第一战场”。

  • Windows 事件日志:主要看三个通道——Security(登录、权限变更)、System(服务启停、驱动异常)、Application(应用层错误)。安全分析时,Event ID 4625(登录失败)和 Event ID 4688(进程创建)是我最常翻的。
  • Linux 系统日志:集中在 /var/log/ 目录下。messages 记录系统通用信息,secure 或 auth.log 记录认证行为,cron 记录计划任务。我记得有一次做应急响应,攻击者就是通过 cron 日志暴露了持久化脚本的启动时间。
  • macOS 统一日志:使用 log show 命令查看,结构较新,但原理类似。

我曾经遇到过一个案例:攻击者手动清理了 /var/log/secure 文件。但我发现 audit.log(审计日志)还在——因为默认权限不同,对方漏掉了。所以我的建议是:千万别只依赖单一日志源。

2.3 应用日志

应用日志的范围最广,也最杂。Web服务器、数据库、中间件、业务系统,各有各的格式和记录方式。但这也意味着攻击者的恶意行为往往会被记录得最详细。

  • Web服务器日志:Apache 和 Nginx 的 access log 是“金矿”。每一行都记录了请求的来源IP、请求方法、URL、状态码、User-Agent。举个例子:
192.168.1.1 - - [15/Jan/2025:14:23:45 +0800] "GET /admin HTTP/1.1" 200 2345

你看,谁在什么时间访问了后台管理页面,一目了然。

  • 数据库日志:MySQL 的 general log 记录所有SQL语句,slow query log 记录慢查询。攻击者做SQL注入时,查询语句会被原样记下来:
# Time: 2025-01-15T14:23:45.123456Z
# User@Host: root[root] @ localhost []
# Query_time: 12.345  Lock_time: 0.001
SELECT * FROM users WHERE id = 1 OR 1=1;

看到 OR 1=1 了吗?典型的注入尝试。

  • 业务应用日志:Java 的 Log4j、Python 的 logging 框架,开发同学最熟悉。但我在项目中遇到过,开发说“日志都打了”,结果一查全是 DEBUG 级别信息,真正有用的 ERROR 反而没记录。嗯,这里要注意:日志级别的配置一定要和生产环境匹配。

2.4 网络日志

网络日志记录了数据包的流动情况。它不关心系统内部发生了什么,只关心“谁和谁在通信、用了什么协议、传了多少数据”。

  • 防火墙日志:记录允许和拒绝的连接。我建议你们重点关注 deny 日志——那里藏着扫描探测、漏洞利用的早期信号。
  • 路由器/交换机日志:网络流量变化、配置变更、端口状态抖动。攻击者在内网横向移动时,往往会在网络设备上留下异常流量记录。
  • IDS/IPS日志:直接输出告警事件。Snort、Suricata 这类工具会把匹配到攻击特征的包记录下来,包含payload内容,是IOC提取的优质来源。
  • DNS日志:域名解析请求。攻击者使用C2域名时,DNS请求是绕不开的——除非他直接用IP,但那样反而更容易被检测。

我见过一个案例:攻击者在内网用 nslookup 做DNS隧道,数据藏在TXT记录里。防火墙没报警,但DNS日志里出现了大量超长域名解析——这就是线索。

2.5 三类日志对比

明白了每种日志的定位,接下来用一个表格把它们放在一起对比。这样你在实际分析时,能快速判断该查哪类日志。

日志类型 数据来源 典型格式 核心安全价值 常见IOC示例
系统日志 操作系统(Windows Event Log / Linux syslog) EVTX / syslog / JSON 登录行为、权限变化、进程创建 4625(登录失败)、4688(异常进程)、/var/log/secure 中的SSH爆破
应用日志 Web服务器、数据库、业务应用 Apache common log / JSON / 自定义格式 攻击payload、SQL注入、文件包含、未授权访问 access log中的 ../../etc/passwd、slow query中的 OR 1=1
网络日志 防火墙、路由器、IDS/IPS、DNS服务器 NetFlow / syslog / PCAP元数据 / DNS请求 网络连接、C2通信、扫描探测、数据外泄 防火墙deny日志中的批量扫描源IP、DNS日志中的长域名

三类日志各有侧重,但在真实事件中往往是交叉验证的。举个例子:系统日志告诉你某个账户异常登录,应用日志告诉你这个账户访问了敏感接口,网络日志告诉你这个IP向外部域名做了DNS查询——三个线索拼在一起,才能还原出完整的攻击链路。

日志分类体系 日志 (Log) 系统日志 应用日志 网络日志 Windows 事件日志 Linux Syslog Web 服务器日志 数据库日志 防火墙日志 IDS / IPS 日志 日志核心要素 时间戳  |  事件源  |  事件类型  |  日志级别  |  详细描述

这张图把本章的知识体系串起来了。从上往下看:先有日志的核心定义,再分三大类型,每个类型下又有具体的日志子类。最底层是每条