当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

存储库更新安全吗?

作为开发人员方面的小聪明,我无法理解为什么存储库列表是 http://security.ubuntu.com 以及 /etc/apt/sources.list 中列出的其他 http (不安全)站点。如果没有证书链匹配,这将显示为“向任何响应者询问要更新的软件包列表”,而不是“询问 ubuntu.com 站点…”

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

最佳方法

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 内置的签名验证确实提供了这些保证。

from Ubuntu(以及使用相同系统的 from Debian)提供了其工作原理的技术说明。

APT 确实通过 HTTPS 运行,您可以在 APT 源条目中使用 HTTPS,为您的连接应用另一个级别的保证(如果您使用的存储库支持它)。这可以作为 APT 之上的额外保护措施,尤其是现在,过去对 HTTPS 连接带来的额外开销的担忧已不再那么重要。

使用 HTTPS 的参数:

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

APT 签名机制未提供的另一个保证是您收到的软件包是最新的可用版本。作为对此的缓解措施,签名的发布文件包含 “Valid-Until” 日期字段,在此之后,它引用的文件应被视为已过时。 man-in-the 中间或恶意镜像可能会用此 Valid-Until 日期内未修改的早期存档版本替换存档,并延迟此时间窗口内的程序包更新。但他们不能对包进行任何任意修改,也不能回到过去的时间点。

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

次佳方法

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

这比对隐私/信息泄露和过时的软件包版本的担忧要严重得多;这使得任意代码能够以 root 身份执行,完全安全失败。事实是:如果使用 https 而不是 http,这些攻击就可以被阻止。

这证明 defence in depth 原则在这里和其他地方一样适用。正如这些漏洞利用所表明的那样,许多说法认为 https 在 apt 环境中没有提供或只提供很少的安全优势,这是完全错误的。

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

第三种方法

重要补充事实上,由于在线升级和初始安装下载,需要消耗大量流量,而这些流量的来源,即二进制和文本码流,是可再现的。所以互联网上有大量的网关和缓存设备。相当多的ISP为了节省出口带宽,已经基于http协议设置了缓存,而https协议无法作为透明缓存而存在。

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

不久前,大约20年,在互联网刚刚兴起的时候,https和互联网流量仍然是非常昂贵的游戏。因此,http还包括了已经接近过时的ftp协议,作为在线软件包分发安装和更新的主要方式。

同样,Microsoft Windows和Office也使用http进行升级。您可以观察到,通常不是从微软服务器下载的安装包,而是您ISP的self-built缓存服务器。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14125.html,未经允许,请勿转载。