首页/安全/安全加固速查/系统文件完整性核验(rpm -V / debsums)
补丁与漏洞管理50 条

系统文件完整性核验(rpm -V / debsums)

补丁之外还要防篡改:用包管理器自带的完整性与签名校验发现被替换的系统文件(rootkit、后门常替换核心命令)。

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

防篡改的文件校验

补丁之外还要防篡改:rootkit 与后门常替换核心命令(如 ps、netstat、ls)来隐藏自身。用包管理器自带的完整性校验可以发现这类替换:RHEL 系用 rpm -V 比对已安装文件与包数据库记录,Debian 系用 debsums 校验文件摘要。结果里配置文件与文档类的差异通常是正常的,需要按标记逐条判读。

基本信息

适用平台Linux
风险等级中
基线要求关键包完整性无异常
RHEL 工具rpm -V、rpm -Vf
Debian 工具debsums、dpkg --verify
关注对象coreutils、openssh-server、glibc 等

典型使用场景

  • 怀疑主机被入侵时的文件篡改排查
  • 应急响应中确认关键命令是否被替换
  • 例行完整性巡检
  • 升级之后确认关键包文件一致
  • 排查命令行为异常(输出被人为过滤)
  • 为取证提供文件层面的证据

RHEL 系

RHEL 系
rpm -Va 2>/dev/null | grep -Ev '^$' | head -30   # 校验全部已安装包的完整性
rpm -V coreutils openssh-server glibc 2>/dev/null   # 只校验关键包
rpm -Vf /bin/ps /bin/netstat /usr/bin/ls 2>/dev/null   # 校验指定文件并检查其归属包
rpm -qf /usr/bin/ls 2>/dev/null | head   # 确认文件归属的包

Debian 系

Debian 系
sudo apt-get install -y debsums     # 安装校验工具
debsums -c 2>/dev/null | head -30   # 只列出校验不一致的文件
dpkg --verify coreutils openssh-server 2>/dev/null | head   # 校验关键包
dpkg -S /bin/ps 2>/dev/null | head  # 确认文件的包归属

输出标记读法

标记含义判读
S文件大小与记录不一致内容可能被替换
M权限或属主不一致需确认是否为加固改动
5文件摘要不一致最需要关注的信号
c标记为配置文件差异通常属正常
d标记为文档文件差异通常属正常
rpm -V 输出里的标记对应不同变化:S 是大小、M 是权限、5 是摘要;配置文件与文档类的差异往往正常,必须按清单判读。
没有干净的比对基准时只能做现状快照:应先在确认干净的机器上建立基线,之后巡检才有意义。
校验发现核心命令摘要不一致时要按入侵处置,而不仅仅是重装包:先保留现场再取证,别急着覆盖证据。

易错点

  • 把正常的配置文件差异当成入侵,浪费大量排查时间
  • 没有基准快照,校验结果无法判断哪一项属于异常变化
  • 发现核心命令被替换后直接重装覆盖,现场证据全部丢失
  • 只校验少量包,被替换的组件完全不在检查范围
  • 加固改动过权限之后没有更新基线,之后每次校验都出现同样的噪声

数据来源与参考

  • man 8 rpm(-V 校验)
  • debsums 文档
  • CIS Benchmark:完整性条目

相关工具

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