有一种方法可以根据原始 RPM 内容验证与特定包相关的文件:
# Verify `vsftpd` package.
rpm -V vsftpd
如何完成链并验证rpm
命令本身没有被改变?
如果我rpm
用一个总是成功的脚本替换,这种类型的验证就永远不会失败。
答案1
如果您将自己限制于要验证的单一系统,那么这将是一个非常困难的问题。
幸运的是,我们生活在现实世界中,这里不止有一台计算机!
验证二进制文件的一些可能性包括:
使用安装了相同 RPM 软件包版本的另一个参考系统,对二进制文件进行哈希处理并在每个系统上进行比较。
为了增加保证,重新安装在进行比较之前,请先从参考系统上的存储库中获取签名的包。
例子:
# yum reinstall rpm ... Complete! # rpm -q rpm rpm-4.11.3-17.el7.x86_64 # sha256sum /usr/bin/rpm 743810f3c3a9e5eea8ba9bc87351db6b4e8c6393018b9bb56beb873a64ae5431 /usr/bin/rpm
使用基于主机的入侵检测系统(如 OSSEC 或 Tripwire)来检测文件系统的意外更改。当然,这不能保证您的二进制文件不会被更改,但如果操作正确,它可以警告您攻击正在进行。
请注意,如果使用预链接,这两者都会失败,这就是为什么它在最近的系统上通常不再默认启用的原因之一。
答案2
# rpm -K rpm-2.3-1.i386.rpm
rpm-2.3-1.i386.rpm: size pgp md5 OK
从http://www.rpm.org/max-rpm/s1-rpm-checksig-using-rpm-k.html