如何确保执行已签名的未修改 RPM 包的完整性和安全性?

uvs*_*tid 7 security rpm digital-signatures

有一种方法可以根据原始 RPM 内容验证与特定包相关的文件:

# Verify `vsftpd` package.
rpm -V vsftpd
Run Code Online (Sandbox Code Playgroud)

如何完成链并验证rpm命令本身没有更改?

如果我用rpm一个总是成功的脚本替换,这种类型的验证永远不会失败。

Mic*_*ton 6

如果您将自己限制在要验证的单个系统中,那么这将是一个相当困难的问题。

幸运的是,我们生活在现实世界中,那里有不止一台电脑!

验证二进制文件的一些可能性包括:

  • 使用安装了相同 RPM 软件包版本的另一个参考系统,获取二进制文件的哈希值并在每个系统上进行比较。

    为了增加保证,请在进行比较之前从参考系统上的存储库中重新安装已签名的包。

    例子:

    # yum reinstall rpm
    ...
    Complete!
    
    # rpm -q rpm
    rpm-4.11.3-17.el7.x86_64
    
    # sha256sum /usr/bin/rpm
    743810f3c3a9e5eea8ba9bc87351db6b4e8c6393018b9bb56beb873a64ae5431  /usr/bin/rpm
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用基于主机的入侵检测系统(例如 OSSEC 或 Tripwire)来检测文件系统的意外更改。当然,这并不能保证您的二进制文件不会被更改,但是如果正确完成,它可以警告您正在进行攻击。

请注意,如果使用预链接,这两种方法都会失败,这就是为什么在最近的系统上通常不再默认启用它的原因之一。