存储库列表安全吗?有 HTTPS 版本吗?

存储库列表安全吗?有 HTTPS 版本吗?

存储库更新是否安全?

作为一个开发者,我无法理解为什么存储库列表是,http://security.ubuntu.com而其他http(不安全的)站点列在 中/etc/apt/sources.list。如果没有证书链匹配,则会显示为“向任何响应者询问要更新的软件包列表”,而不是“询问 ubuntu.com 站点...”

任何网络都可以选择欺骗更新站点吗?提供本地缓存和审查过的副本是一种常见的做法吗?

答案1

2022 年更新: 存储库主机/镜像现在倾向于支持 HTTPS,因此您也可以使用它来在 APT 提供的功能的基础上提供额外的保障。请阅读下文,了解为什么仅靠 HTTPS 不足以保护您,以及为什么 APT 会添加自己的加密安全性。


简而言之,即使没有 HTTPS 也同样安全,因为所有软件包都经过加密签名,并且 APT 会验证签名。

APT 系统是一种安全的打包解决方案,其中软件包使用只有 Ubuntu 知道的密钥进行签名,并且 APT 使用您系统上的 APT 密钥环中的公钥来验证软件包的签名。这有效地提供了端到端的保证,确保软件包未被 Ubuntu 以外的任何人修改,无论您是从官方 Ubuntu 服务器还是某个镜像获得它。

Ubuntu 的存储库系统(作为 Debian 的一部分)的构建方式是,您不必信任所使用的镜像,只是他们没有修改软件包,因为它是由发行版内部签名的。这使得存储库分散,任何志愿者都可以设置镜像。

因此,例如,您可以使用 example.com 作为镜像 - 如果您使用 HTTPS 并验证您确实在与 example.com 通信,它不会告诉您任何有用的信息,例如该镜像是否得到了您的发行版 (Ubuntu) 的批准,或者该镜像是否在从 Ubuntu 获取软件包后对其进行了修改以添加病毒,它只是告诉您您正在与 example.com 通信。但 APT 的内置签名验证确实提供了这些保证。

有关其工作原理的技术解释如下:来自 Ubuntu(和来自 Debian使用相同的系统)。

APT 确实可以通过 HTTPS 工作,您可以在 APT 源条目中使用 HTTPS 为您的连接提供另一层保障(如果您使用的存储库支持它)。这可以作为 APT 的额外保障,尤其是现在过去对 HTTPS 连接带来的额外开销的担忧已经不那么重要了。

使用 HTTPS 的论据:

不使用 HTTPS 可能会引起隐私问题,因为窃听者可以看到您正在下载的文件,尽管在这种情况下隐私问题历来不被认为是问题,因为它们是公开可用的文件,而且 APT 的验证仍然可以检测到修改。尽管如此,HTTPS 仍可用于使攻击者更难看到您正在安装的内容。

APT 签名机制无法提供的另一个保证是,您收到的软件包是最新可用版本。为了缓解这种情况,签名的发布文件包含一个“有效期至”日期字段,在此日期之后,它引用的文件应被视为过期。中间人或恶意镜像可能会在此有效期至日期内用未修改的早期版本替换存档,并在此时间窗口内延迟对软件包的更新。但他们不能对软件包进行任何任意修改,也不能回到该时间点之后的时间。

您可能考虑使用 HTTPS 的另一个原因是防范 APT 自身签名和验证中的缺陷。这方面的缺陷过去已被发现并修复。

答案2

这里评分最高的答案显然已经过时了。从那时起,由于包验证存在缺陷,apt 中发现了 2 个严重的远程代码执行漏洞。安全公告这里这里

这比隐私/信息泄露和软件包版本过时的问题更糟糕;这使得以 root 身份执行任意代码成为可能,完全安全失效。问题是:如果使用 https 而不是 http,这些攻击就可以被阻止。

这证明纵深防御原则在这里和其他地方一样适用。许多流传的说法认为 https 在 apt 环境中没有提供任何安全益处或提供最小的安全益处,这完全是错误的,正如这些漏洞所表明的那样。

那么问题就变成了 https 的安全优势是否值得在缓存、增加开销等方面付出代价。我无法回答这个问题,但至少我认为 Ubuntu/Canonical/Launchpad 应该为他们的存储库提供可选的 https 端点。

答案3

重要补充:其实像在线升级、初次安装下载等,都是需要耗费大量流量的,而这些流量的来源即二进制、文本码流是可复制的,所以互联网上为此设置了大量的网关和缓存设备,相当一部分ISP为了节省出口带宽,在http协议的基础上设置了缓存,而https协议作为透明缓存是无法存在的。

另一个原因是基于http的镜像程序更加简单,不需要验证tls-ssl证书,也不用担心证书失效或者web服务器配置问题。

不久前,大约 20 年前,在互联网刚出现时,https 和互联网流量还是非常昂贵的玩法。因此,http 还包含已接近过时的 ftp 协议,作为在线分发软件包的主要安装和更新传递方式。

同样,微软的Windows、Office也是通过http进行升级的,你可以观察到,通常不是从微软的服务器下载安装包,而是你的ISP自建的缓存服务器。

相关内容