包管理器校验文件完整性
系统文件是否被替换,可以先用包管理器自带的校验功能初筛:Debian 系 dpkg -V 读取软件包数据库里记录的文件大小、权限与摘要,与磁盘现状逐项比对;RHEL 系用 rpm -Va 做同样的事。两者的输出都只列出不一致的条目,适合作为完整性问题定位的起点,再对可疑项做重点核查。
基本信息
| Debian 系 | dpkg -V(等同 dpkg --verify),另有 debsums -c |
|---|---|
| RHEL 系 | rpm -Va 全量校验,rpm -V <包名> 缩小到单个包 |
| 校验依据 | 包数据库中的文件大小、权限、摘要、属主与修改时间 |
| 输出规则 | 只列与记录不一致的文件,一致的文件不输出 |
| 前提条件 | 包数据库本身可信,被改写过会让比对结果一起失真 |
典型使用场景
- 初筛系统命令与库文件是否被替换或植入后门
- 定位被改动过的配置文件,缩小人工核查的范围
- 结合入侵窗口时间,判断哪些改动发生在事发之后
- 核查后重装受影响软件包,把系统恢复到已知状态
- 作为主机加固与合规核查的例行检查项
两平台执行
两平台执行
dpkg -V 2>/dev/null | head -30 # Debian 系:只列不一致项
rpm -Va 2>/dev/null | head -30 # RHEL 系:全量校验,行首九位标记问题类型
rpm -V openssh-server # 缩到单个包,输出更好读
debsums -c # Debian 系另一实现,需先安装
rpm -qf /usr/bin/ps # 反查某文件属于哪个软件包校验标记读法
| 标记 | 含义 | 异常解读 |
|---|---|---|
| S(大小) | 文件大小与记录不符 | 内容被替换的强信号 |
| M(权限) | 权限位或文件类型变化 | 被加上可执行位常见于植入 |
| 5(摘要) | 内容摘要与包记录不一致 | 文件内容已被改动 |
| U / G / T | 属主、属组、修改时间变化 | 仅时间变化多为正常更新 |
dpkg -V 每行输出一个文件路径,路径前的九位字符里问号表示无法检查、数字 5 表示摘要不符;debsums 的结果更易读但需要额外安装。两者都只覆盖由包管理器安装的文件。
校验结果的可信度取决于包数据库:攻击者若已改写 /var/lib/rpm 或 /var/lib/dpkg 下的记录,比对可能显示一切正常。尽量用只读挂载的副本或受控介质中的独立工具交叉比对。