百胜安装http-这样安全吗?


10

我对使用yum安装软件包不是很熟悉。在以前的生活中,我曾使用过apt。

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

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

它显然将订阅特定的存储库,可以从中下载其他软件包。这是安全的事吗?

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

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

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

Answers:


11

您的问题需要解释一下。

首先,要了解是很重要的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. 两种系统都有两组GPG签名:软件包本身上的GPG签名和存储库上的GPG签名。
  2. Debian软件包未检查其GPG签名,而Ubuntu和Debian项目存储库中的官方软件包均未进行GPG签名。
  3. 当在明文HTTP上使用时,这两个系统都容易受到一系列GPG重播攻击;您绝对应该100%通过HTTPS而不是纯文本HTTP(如果可能)安装软件包。

到目前为止,RPM和YUM GPG签名:

  1. 首先,你可以指定路径或URL与配置文件中的GPG密钥:gpgkey=https://example/gpg.keygpgkey=/usr/share/example/gpg.key。如果需要多个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-httpsyum可以通过HTTPS开箱即用,但是您应确保使用的版本默认启用了yumsslverify选项。有些版本yum没有。如果您的版本不是,则应将其设置为启用。验证SSL证书至关重要。

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

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

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


真好 这里有很多东西可以吸收。一个特定的问题:“运行时yum install,应使用程序包名称,而不是URL。” -同意,这就是我通常使用apt所做的事情。但是给定URL,您会怎么做?也许这很明显,但是您可以手动添加存储库http://example.com然后执行 yum install package吗?
SauceCode '16

“当在明文HTTP上使用时,这两个系统都容易受到一系列GPG重放攻击的攻击”。有趣的-您可以在这里指向任何进一步的阅读吗?和yum等效apt-transport-https吗?
SauceCode '16

@SauceCode我更新了答案以回答您的问题,并链接到包含更多软件包管理器安全信息的论文。
Joe Damato

请注意,apt存储库现在在其Release文件中具有有效日期,这限制了重放攻击保持有效的时间长度。(如果我没记错的话,这是根据答案中链接的论文实现的。)但是使用TLS是更好的解决方案!
史蒂芬·基特

@StephenKitt是的,Valid-Until已添加它以防止重放攻击。但是,要求存储库用户下载用于新存储库的元数据并手动检查它以确保存在标头是不合理的。告诉人们始终使用TLS更容易。
Joe Damato
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.