Linux命令-rpmverify(RPM包文件完整性验证)

发布时间:2026/7/16 16:25:13
Linux命令-rpmverify(RPM包文件完整性验证) Linux命令-rpmverifyRPM包文件完整性验证简介语法⚙️选项验证输出格式示例示例 1验证单个包的完整性示例 2验证整个系统的所有包示例 3验证特定文件所属的包示例 4入侵检测实战示例 5排除特定属性的验证⚠️注意总结相关命令rpmverify 用于验证已安装 RPM 包的文件是否与数据库中记录的原始状态一致功能等同于rpm -V。它是系统入侵检测和完整性审计的重要工具。简介当系统文件被意外修改、恶意篡改或因磁盘错误损坏时rpmverify 可以通过与 RPM 数据库中的元数据权限、大小、MD5 校验和、属主等进行比对快速定位被修改的文件。特性说明所属软件包rpm功能等价rpm -V、rpm --verify验证依据/var/lib/rpm/数据库中的记录需要权限部分验证需要 root文件属主/权限适用场景入侵检测、系统审计、故障排查语法rpmverify[选项][包名...]rpmverify[选项]-f文件路径 rpmverify[选项]-a⚙️选项选项说明-a验证所有已安装的包-f 文件验证指定文件所属的包-p 包文件验证未安装的 RPM 包文件--nodeps不验证依赖--nodigest不验证摘要--nosignature不验证签名--nolinkto不验证符号链接--nomd5不验证 MD5 校验和--nosize不验证文件大小--nouser不验证文件属主--nogroup不验证文件属组--nomtime不验证修改时间--nomode不验证文件权限/模式--nofiles不验证文件属性仅验证包头-v详细输出验证输出格式rpmverify 的输出是一串标记字符每个位置表示一种属性的变更标记含义说明SSize文件大小已改变MMode文件权限/类型已改变5MD5MD5 校验和不匹配DDevice设备号已改变LLink符号链接路径已改变UUser文件属主已改变GGroup文件属组已改变TmTime文件修改时间已改变PcaPabilities文件能力已改变?Missing文件缺失无法访问.OK该属性未改变文件类型标记出现在文件名前标记含义c配置文件d文档文件gghost 文件不属于包的文件l许可证文件rREADME 文件示例示例 1验证单个包的完整性验证 bash 包的所有文件是否被修改# 正常情况——无输出表示所有文件完好rpmverifybash# 没有输出 没有文件被修改模拟文件被修改后的输出# 修改一个文件后再验证echotampered/etc/skel/.bashrc rpmverifybash# 输出示例S.5....T. c /etc/skel/.bashrc解读S.5....T.表示S— 文件大小已变5— MD5 校验和已变T— 修改时间已变c— 这是一个配置文件# 修改文件权限后再验证chmod777/bin/bash rpmverifybash# 输出示例.M....... /bin/bash S.5....T. c /etc/skel/.bashrc恢复文件并重新验证# 重新安装包恢复文件rpm--replacepkgsbash-5.2.15-2.el9.x86_64# 再次验证——应该无输出rpmverifybash示例 2验证整个系统的所有包对所有已安装包进行完整验证# 验证所有包输出可能很长rpmverify-a|head-20# 输出示例S.5....T. c /etc/ssh/sshd_config .M....... /usr/bin/passwd S.5....T. c /etc/login.defs.....UG../var/spool/mail S.5....T. c /etc/yum.conf S.5....T. c /etc/default/useradd missing /usr/share/doc/glibc-common/README仅筛选出被修改的配置文件# 只看配置文件的修改rpmverify-a|grep c # 输出示例S.5....T. c /etc/ssh/sshd_config S.5....T. c /etc/login.defs S.5....T. c /etc/yum.conf S.5....T. c /etc/default/useradd S.5....T. c /etc/nsswitch.conf注意配置文件c标记被修改通常是正常的管理员调整配置但非配置文件的修改需要高度警惕。筛选出非配置文件的异常修改# 排除配置文件查找异常修改rpmverify-a|grep-v c |grep-v^$# 输出示例.M....... /usr/bin/passwd.....UG../var/spool/mail missing /usr/share/doc/glibc-common/README示例 3验证特定文件所属的包# 验证 /usr/bin/ssh 所属包的文件完整性rpmverify-f/usr/bin/ssh# 输出示例S.5....T. c /etc/ssh/ssh_config# 其他文件均正常仅配置文件有修改# 验证 /etc/passwd 所属的包rpmverify-f/etc/passwd# 输出示例S.5....T. c /etc/passwd S.5....T. c /etc/login.defs S.5....T. c /etc/default/useradd示例 4入侵检测实战用 rpmverify 进行快速入侵检测# 检查关键系统二进制文件是否被篡改rpmverify-a|grep-E^\S\s[^c]*/(s?bin|usr/sbin|usr/bin)/|head-20# 输出示例正常系统应该很少或没有输出S.5....T. /usr/bin/passwd# 如果出现大量 /usr/sbin/ 下的修改可能已被入侵# 重点检查 suid/sgid 文件的完整性find/-perm-4000-o-perm-20002/dev/null|whilereadf;dorpmverify-f$f2/dev/null|grep-v c |grep-v^$done# 输出示例S.5....T. /usr/bin/sudo# 如果 sudo 二进制被篡改这是严重的安全事件# 仅检查系统核心工具forpkgincoreutilsbashopenssh-serversudosystemd;doecho$pkgrpmverify$pkg|grep-v c done# 输出示例coreutils无输出完好bash无输出完好openssh-serverS.5....T. c /etc/ssh/sshd_config 配置文件修改正常sudo无输出完好systemd无输出完好示例 5排除特定属性的验证在验证时忽略某些属性如忽略修改时间# 忽略修改时间验证时间变化最常见且通常无关紧要rpmverify--nomtime-a|head-10# 输出示例相比不忽略输出大幅减少S.5....T. c /etc/ssh/sshd_config .M....... /usr/bin/passwd# 忽略大小和 MD5仅检查权限和属主rpmverify--nosize--nomd5--nomtime-a|head-10# 仅检查文件权限和属主是否被改rpmverify--nomd5--nosize--nomtime-a# 输出示例.M....... /usr/bin/passwd.....UG../var/spool/mail⚠️注意配置文件c标记的修改通常是正常的管理员会调整配置非配置文件的5MD5标记需要高度警惕可能表示文件被篡改?missing标记表示文件丢失或无法读取rpmverify 依赖 RPM 数据库如果数据库本身被篡改验证结果不可信部分文件的修改时间是正常的如日志文件、spool 文件建议在系统安装后立即做一次完整验证并保存结果作为基线可以配合 AIDE 或 Tripwire 等专业入侵检测工具使用总结rpmverify 是 RPM 系统自带的文件完整性验证工具核心操作就是rpmverify 包名。无输出表示文件完好有输出则根据标记字符判断哪些属性被修改。S.5....T.中5MD5是最关键的指标。日常运维中定期执行rpmverify -a是发现文件篡改的简单有效手段。相关命令rpm— RPM 包管理器rpm -V同 rpmverifyrpmquery— RPM 包查询rpmdb— RPM 数据库操作aide— 高级入侵检测环境tripwire— 文件完整性检查工具sha256sum— 文件校验和计算