yum install http - 这安全吗?

yum install http - 这安全吗?

我对使用 yum 安装软件包不是很熟悉。前世我用过apt。

目前,我正在查看一些运行说明

# yum install http://example.com/package.rpm

显然,它会订阅一个特定的存储库,可以从该存储库下载更多包。这是安全的做法吗?

作为比较,我知道 apt 软件包具有 gpg 签名,这意味着通过 http 下载不是问题。如此处所述。当使用 apt 下载主存储库之外的软件包时,您可以手动添加一个 gpg 密钥供 apt 接受,以确保任何非标准软件包具有相同的可信来源。

如果我运行上面的命令,yum 会在开始安装东西之前要求我接受 gpg 密钥,还是可以只安装任何东西?

如果相关,我的/etc/yum.conf文件包含gpgcheck=1在该[main]部分内。

答案1

你的问题有一些需要解释的地方。

首先,了解如何协同工作非常YUM重要rpm

  1. RPM 是一种软件包格式,并且有一个类似名称的命令行工具,rpm可以安装单独的 RPM 软件包。您可以将rpm命令行工具视为类似于dpkg命令行工具,因为两者都安装单独的包而没有依赖项。
  2. yum是一个更高级别的程序,它安装 RPM 包及其依赖项。您可以将该yum命令视为类似于apt-get,两者都可以安装包及其所有依赖项。
  3. 运行时应yum install使用包名称,而不是 URL。例如:yum install package,类似于您运行的方式:apt-get install package
  4. 如果您有软件包 URL,则可以运行rpm -i https://url,但如果您没有安装软件包的依赖项,则需要使用rpm -i(痛苦的)或使用yum配置的存储库一一安装它们。

现在,就 GPG 而言,有一些适用于 Debian 和 RPM 打包系统的事情需要了解,但最重要的事情是:

  1. 两个系统都有 2 组 GPG 签名:包本身的 GPG 签名和存储库上的 GPG 签名。
  2. Debian 软件包没有检查 GPG 签名,并且 Ubuntu 和 Debian 项目存储库中的官方软件包都没有 GPG 签名。
  3. 当通过明文 HTTP 使用时,这两个系统都容易受到一系列 GPG 重放攻击;你绝对应该 100% 通过 HTTPS 安装你的包不是如果可能的话纯文本 HTTP。

至于 RPM 和 YUM GPG 签名:

  1. 首先,您可以使用以下命令在配置文件中指定 GPG 密钥的路径或 URL:gpgkey=https://example/gpg.keygpgkey=/usr/share/example/gpg.key。如果需要 1 个以上的 GPG 密钥,您可以指定多个。
  2. 其次,有两个选项:gpgcheck=1repo_gpgcheck=1。第一个选项导致yum install验证包本身的 GPG 签名,第二个选项验证存储库的 GPG 签名。理想情况下,您应该同时使用两者,但许多存储库没有正确配置为支持两者。
  3. 第一次运行时yum installyum将尝试导入列出的 GPG 密钥(gpgkey如果尚未导入)。系统将提示您并要求您接受或拒绝。
  4. 您必须pygpgme在系统上安装该软件包才能验证 GPG 签名。在最新版本的 RHEL 和 CentOS 上,pygpgme会自动安装 的依赖项yum,但您应该验证它是否已安装在您的系统上。
  5. 没有与apt-transport-https, yumcan talk over HTTPS 开箱即用的等效项,但您应该确保yum您使用的版本具有sslverify默认启用的选项;有些版本yum没有。如果您的版本没有,您应该将其设置为启用。验证 SSL 证书至关重要。

即使包和存储库上都有 GPG 签名,存储库仍然容易受到重放攻击;如果可能的话,您应该通过 HTTPS 访问您的存储库。对一种攻击的简短解释是,恶意攻击者可以在特定时间对存储库元数据和关联的 GPG 签名进行快照,并将该元数据和签名重播给请求它的客户端,从而阻止客户端看到更新的包。由于未触及元数据,因此 GPG 签名将有效。然后,攻击者可以利用未更新的软件中的已知错误来攻击计算机。您可以阅读有关对包管理器的攻击的更多信息这张纸

我写了两篇内容广泛的博客文章GPG 和 YUM / rpmGPG 和 APT

如果您还有其他问题需要我解答,请发表评论;正确地进行包管理非常困难。

相关内容