内核日志里有什么
dmesg 读取的是内核环形缓冲区,记录硬件识别、驱动加载、磁盘与文件系统挂载、内存不足(OOM)与进程异常终止等内核级事件。安全事件调查中它主要回答三类问题:是否发生过外部设备接入、是否有异常挂载或卸载动作、进程在崩溃前后内核报了什么错。缓冲区容量有限,新日志会覆盖旧日志,因此现场采集时它属于“越早取越好”的数据。使用 journald 持久化日志的系统还可用 journalctl -k 检索更早的记录。
基本信息
| 适用平台 | 各 Linux 发行版(内核日志) |
|---|---|
| 查看命令 | dmesg -T(带人类可读时间)、journalctl -k(从 journal 按时间窗检索) |
| 关键线索 | USB 设备接入、挂载与卸载、OOM 与段错误、驱动加载失败 |
| 时间注意 | dmesg -T 使用当前时区解释时间,且无年份信息 |
| 持久化 | 是否保留历史取决于 rsyslog 是否记录 kern 日志与 journald 是否开启持久化存储 |
典型使用场景
- 确认在事件窗口内是否有 U 盘或移动硬盘接入,为数据外带判断提供线索
- 发现异常挂载:攻击者挂载镜像或隐藏分区藏放工具与数据
- 分析进程异常终止原因:OOM 终止与被强制杀死在内核日志里有不同表现
- 排查硬件与驱动问题,排除把环境故障误判为攻击
- 确认网络接口状态变化,解释某段时间网络中断的原因
检索示例
检索示例
# 关键字筛查(设备、挂载、内存、错误)
dmesg -T | grep -Ei 'usb|mount|oom|error' | tail -50
# 只要错误与警告级别,减少噪声
dmesg -T --level=err,warn | tail -40
# 从 journal 回溯更早的内核日志(需开启持久化)
journalctl -k --since '7 days ago' | tail -50
# 设备接入与存储相关线索
dmesg -T | grep -Ei 'usb|scsi|sd[a-z]|udev' | tail -40
# 内存压力与 OOM 记录
dmesg -T | grep -i 'out of memory\|oom-kill' | tail -20关键字对照
| 关键字 | 含义 | 判读要点 |
|---|---|---|
| usb / scsi / sdX | 外部存储设备接入与识别 | 接入时间可与文件访问痕迹对照 |
| mount / umount | 文件系统挂载与卸载 | 临时目录挂载或镜像挂载需重点核实 |
| oom-kill / out of memory | 内存不足终止进程 | 说明进程被系统杀掉,而非被攻击者主动结束 |
| segfault / trap | 进程异常崩溃 | 与崩溃报告、应用日志结合判断原因 |
| link down / up | 网络接口状态变化 | 解释日志中断与连通性异常的时段 |
环形缓冲会被新日志覆盖,缓冲大小与系统负载决定可回溯的时间长度;案件早期就要把它导出留档,不要等采集流程走完再取。
dmesg -T 输出的时间带时区解释且通常没有年份,跨机比对前统一时区;需要精确时间与年份时应使用 journalctl -k 或 rsyslog 里保存的内核日志。