首页/安全/安全加固速查/更新历史审计(yum history / dpkg.log)
补丁与漏洞管理50 条

更新历史审计(yum history / dpkg.log)

补丁是否装过、什么时候装的、谁装的:历史记录是审计与回滚的依据,也是“某日变更后开始出问题”的定位线索。

安全加固速查安全更新于 2026-10-13

更新历史为什么值得看

补丁是否装过、什么时候装的、装的哪个版本,这几个问题只能靠历史记录回答。它既是合规审计的证据,也是「某天变更之后开始出问题」这类故障的定位线索:把现象出现时间与更新历史对齐,多数情况下能直接锁定可疑变更。

基本信息

适用平台Linux(RHEL 系 yum/dnf history,Debian 系 dpkg 日志)
记录位置/var/log/dpkg.log、dnf 历史数据库
典型用途补丁审计、变更定位、回滚依据
基线更新有记录且可查询

典型使用场景

  • 月度补丁报告:统计安全更新安装次数与时间,形成可举证记录
  • 故障定位:把问题出现时间与更新历史对齐,缩小排查范围
  • 变更复盘:确认某次升级是否真的执行成功
  • 合规检查:说明补丁管理处于受控状态,有记录可追溯

RHEL 系查法

RHEL 系查法
# 查看最近的更新事务列表
yum history list | head -20
# 查看某次事务的详细内容
yum history info <ID>
# 注意:history undo 会连带依赖变更,非必要不使用
yum history undo <ID>

Debian 系查法

Debian 系查法
# 查看安装与升级记录
grep -E ' (install|upgrade) ' /var/log/dpkg.log | tail -20
# 压缩归档中的记录
tar -tf /var/log/dpkg.log.1.gz >/dev/null 2>&1 || ls -l /var/log/dpkg.log*
zgrep -h 'install ' /var/log/dpkg.log.*.gz 2>/dev/null | tail -5

记录对象读法

记录来源内容局限
yum/dnf history事务 ID、操作人、包与版本本地库被重建或迁移后可能丢失
dpkg.log安装、升级、删除动作按日轮转压缩,久远记录需解压查看
日志轮转策略决定可回溯时长轮转过快会导致记录不足半年
集中日志平台跨主机的统一记录需提前配置采集,事后无法补录

其他常见记录位置

其他常见记录位置
# Debian/Ubuntu 的事务历史,比 dpkg.log 更易读
less /var/log/apt/history.log
# 自动更新任务的执行结果
ls /var/log/unattended-upgrades/ 2>/dev/null | tail -3
# 从包视角看最近安装或升级时间(RHEL 系)
rpm -qa --last | head -15
# dnf 环境用 dnf history,子命令与 yum history 一致
dnf history list | head -10
月度报告可直接从历史里统计安全更新的安装次数与时间:比口头说明「已经修复了」有说服力得多,也方便抽查遗漏机器。
history undo 不是万能后悔药:跨内核或涉及依赖变更时可能失败或造成环境不一致,回滚前先评估并准备好备份。
把历史记录纳入月度报告:统计安全更新的安装次数、涉及主机与时间,顺带对比未覆盖的主机清单,比逐台口头确认更省人力。
同一台机器上往往并存多份记录:包管理事务历史说明装了什么,自动更新日志说明有没有自动执行,两者对不上通常意味着某条更新通道没在正常工作。

易错点

  • 依赖本地日志做长期审计:日志轮转压缩后记录不足,半年前的事件查不到
  • 把 undo 当作标准回滚手段:依赖关系被一起改回,副作用超出预期
  • 不做集中采集:单机被重装或磁盘故障后,历史记录一并消失
  • 审计只统计次数不看版本:报告无法说明具体修补了哪些漏洞
  • 只看包历史不看自动更新通道:自动更新失败时事务记录里不会有任何痕迹,遗漏会被长期掩盖

数据来源与参考

  • Red Hat 文档:yum history
  • Debian 文档:dpkg 日志

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌