yum install http - 这安全吗?

Sau*_*ode 13 security yum centos apt software-installation

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

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

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

这显然会订阅一个特定的存储库,从中可以下载更多的包。这是一件安全的事情吗?

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

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

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

Joe*_*ato 13

有一点需要解释你的问题。

首先,要了解是很重要的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 install,如果尚未导入,yum将尝试导入 中列出的 GPG 密钥gpgkey。系统将提示您接受或拒绝。
  4. 您必须pygpgme在系统上安装该软件包才能验证 GPG 签名。在最新版本的 RHEL 和 CentOS 上,pygpgme会自动安装 依赖项yum,但您应该验证它是否已安装在您的系统上。
  5. 没有等效的apt-transport-https,yum可以开箱即用地通过 HTTPS 说话,但您应该确保yum您使用的版本具有sslverify默认启用的选项;有些版本yum没有。如果您的版本没有,您应该将其设置为启用。验证 SSL 证书至关重要。

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

我写了两篇关于GPG 和 YUM/rpm以及GPG 和 APT 的博文。

如果您还有其他问题我可以回答,请发表评论;包管理非常难以正确执行。