防篡改的文件校验
补丁之外还要防篡改: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 是摘要;配置文件与文档类的差异往往正常,必须按清单判读。
没有干净的比对基准时只能做现状快照:应先在确认干净的机器上建立基线,之后巡检才有意义。
校验发现核心命令摘要不一致时要按入侵处置,而不仅仅是重装包:先保留现场再取证,别急着覆盖证据。