【问题标题】:Is it safe to download RPMs with HTTP (not HTTPS)?使用 HTTP(不是 HTTPS)下载 RPM 是否安全?
【发布时间】:2021-10-21 17:19:46
【问题描述】:

我想从 Internet 上的镜像安装 CentOS 软件包。

例如http://mirror.centos.org/centos-7/7/os/x86_64/Packages/unixODBC-2.3.1-14.el7.x86_64.rpm

该 URL 是 http:// 而不是 https://,因此没有 TLS 加密。 从互联网下载二进制文件而不进行传输中加密和真实性检查从安全角度来看似乎是个坏主意。

如果我修改 URL 以添加一个 s,使其成为 https://,则下载不起作用。该服务器在 443 HTTPS 上不提供任何服务。

看来我唯一的选择是不使用 TLS 下载文件。

与某些 Linux ISO 文件不同,主文件旁边没有 .md5.asc 文件。所以我无法根据签名手动检查文件哈希。

RPM 的安全性如何运作?如果我下载时没有加密或证书检查,是否还有其他信任链?例如RPM 是否在文件中包含一个公钥(例如 GPG/PGP),yum 与它已经信任的公钥进行比较?或者我会安装一个完全不可信的文件? (

【问题讨论】:

  • 由于这个问题与编程无关,也许这个问题在security.stackexchange.com更合适?还是超级用户?
  • 只要对包进行了签名,缺少 TLS 就不是安全问题,因为在安装之前会根据已知密钥检查包的完整性。使用 HTTP 的典型原因是它使缓存代理更容易操作。

标签: ssl encryption centos yum repo


【解决方案1】:

RPM 包可以使用 GPG 签名进行签名。所有使用 RPM 的主要发行版(例如 CentOS、Fedora、RHEL)都这样做。

如果 RPM 已签名,dnf/yum 将在您尝试安装软件包时验证签名。如果它是由未知签名签名的,他们会提示您信任它。如果签名未通过验证,他们将中止安装。

HTTPS 提供了一堆保证,但它们实际上归结为:镜像和您的计算机之间的数据传输是安全的(保密的,不可篡改的)。它不会阻止恶意修改镜像本身的包。或者它不会阻止有人在假镜像上设置一堆恶意包并让它们可供您使用。

另一方面,GPG 可让您验证您正在安装的软件包是由授权系统(例如,官方 CentOS 构建系统)发布的,并且此后没有被修改过。

您可以同时使用 GPG + HTTPS 以获得两者的优势。

不过,仅使用 GPG + HTTP 意味着间谍可以看到您正在下载的内容。但是由于 GPG,如果他们向您发送恶意数据,您将识别它并中止安装。

【讨论】:

  • *...可以签名..." 有问题的包裹实际上是否已签名?
  • 是的。使用rpm 找出答案:rpm -qi http://mirror.centos.org/centos-7/7/os/x86_64/Packages/unixODBC-2.3.1-14.el7.x86_64.rpm 2>/dev/null | grep '^Signature' 给出Signature : RSA/SHA256, Thu 22 Aug 2019 05:44:57 PM EDT, Key ID 24c6a8a7f4a80eb5
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2013-08-23
  • 2020-11-28
相关资源
最近更新 更多