「apt-secure」

  LINUX MANUAL PAGES

apt-secure,APT中的存档认证支持。

描述(DESCRIPTION)

从版本0.6开始,APT包含对所有存储库的发布文件进行签名检查的代码。这可以确保像档案中的软件包这样的数据不会被没有使用的人修改访问发行文件签名密钥。

从版本1.1开始,APT要求存储库提供最近的认证信息,以便不受阻碍地使用存储库。

从版本1.5以来,在发布文件中包含的关于存储库的信息的变更需要在APT从这个存储库应用更新之前需要进行确认。

注意:所有基于APT的前端软件包管理程序,如apt-get(8),aptitude(8),synaptic(8)都支持认证功能,所以本文使用APT来统称它们以简化问题。

未签名仓库(UNSIGNED REPOSITORIES)

如果一个档案有一个未签名的发行文件,或者所有当前的APT版本都没有发行文件,将拒绝在更新操作中默认下载它们的数据,即使像apt-get(8)那样被迫下载前端也需要明确的确认一个安装请求包含一个来自这个未经身份验证的档案的包。

你可以强制所有APT客户端通过设置配置选项Acquire::AllowInsecureRepositories为true来仅显示警告。个人私有的存储库也可以被允许通过不安全sources.list(5)选项allow-insecure=yes。请注意,不安全的存储库是强烈不鼓励和
所有强制apt继续支持它们的选项最终都将被删除。 用户设置也可以使用Trusted选项可以禁用警告,但是请务必理解其在sources.list(5)中列出的含义。

一个以前被认证但是在更新操作中会丢失这个状态的仓库会引发了一个在所有的APT客户端中都会出现的错误,无论是允许还是禁止使用不安全的存储库。该错误可以通过另外设置Acquire::AllowDowngradeToInsecureRepositories为true,或对于私有存储库也可以使用sources.list(5)中的allow-downgrade-to-insecure=yes选项。

已签名仓库(SIGNED REPOSITORIES)

从APT档案到最终用户的信任链由几个步骤组成。 apt-secure是这个链条的最后一步;信任一个档案并不意味着你信任它的包中不包含恶意代码,但意味着您信任存档维护者。这是档案维护者的责任确保档案的完整性得以保留。

apt-secure不会检查包级别的签名。如果需要工具来做到这一点,你应该使用debsig-verify和debsign(分别在debsig-verify和devscripts包中提供)。

Debian的信任链(例如)从一个维护者上传一个新的包或一个新版本的打包到Debian档案。为了生效,这个上传需要用key签名,该key包含在一个Debian软件包维护者钥匙圈中(可在debian-keyring软件包中找到)。维护人员的钥匙由其他维护人员按照预先确定的程序签署,以确保维护人员的key持有人的身份。在所有基于Debian的发行版中都存在类似的程序。

一旦上传的包被验证并包含在档案中,维护者签名被剥离,并且计算包的校验和,然后放入包文件中。然后计算所有软件包的校验和,并放入发布文件。发行文件然后由Debian发行版的存档密钥签名,并在Debian镜像文件包和软件包文件一起发行。 这些密钥位于debian-archive-keyring软件包中的Debian存档密钥环中。

最终用户可以检查发布文件的签名,从中提取包的校验和,并它与他们手动下载的软件包的校验和进行比较 – 或依靠APT自动执行此操作。

请注意,这与检查每个软件包的签名是不同的。它旨在防止两个可能的攻击:

  • 网络“中间人”的攻击。没有签名检查,恶意代理可以将自己引入软件包的下载过程,并通过控制提供恶意软件网络元素(路由器,交换机等)或通过将流量重定向到流氓服务器(通过ARP或DNS欺骗攻击)。
  • 镜像网络妥协。如果没有签名检查,恶意代理可能会危害镜像主机并修改其中的文件,将恶意软件传播给所有下载软件包的用户。

但是,它并不能防御主服务器本身(签名包)的妥协,或者针对用于签署发布文件的密钥的妥协。无论如何,这个机制可以补充一个每包签名。

信息变更(INFORMATION CHANGES)

发布文件包含存储库中文件的校验和,还包含有关存储库的一般信息,如版本的来源,代码名或版本号。

这些信息显示在不同的地方,因此存储库所有者应始终保证正确性。进一步像apt_preferences(5)这样的更多用户配置可以依赖和利用这些信息。 自版本以来1.5因此,用户必须明确地确认变化以表示用户已经准备好了,例如,用于存储库中发布的分发的新的主版本(例如由代码名称指示)。

用户配置(USER CONFIGURATION)

apt-key是管理APT用来信任存储库的密钥列表的程序。 它可以用来添加、删除密钥以及列出可信密钥。 通过sources.list(5)中的Signed-By限制哪些密钥能够签署哪个档案。

注意,默认安装已经包含所有安全地从默认存储库获取软件包的密钥,因此只有在添加第三方存储库时才需要使用apt-key。

为了添加一个新的密钥,你需要首先下载它(你应该确保你在使用一个可信的通信通道时,再获取它),使用apt-key添加它,然后运行apt-get update,以便apt可以下载和验证来自你配置的存档的InRelease或Release.gpg文件。

仓库配置(REPOSITORY CONFIGURATION)

如果您要在维护档案中提供存档签名,则必须:

  • 创建一个顶层发布文件,如果它不存在。可以通过运行apt-ftparchive版本(在apt-utils中提供)来执行此操作。
  • 签字。你可以通过运行gpg –clearsign -o InRelease Release和gpg -abs -o Release.gpg发布。
  • 发布密钥指纹,让用户知道他们需要导入什么密钥才能验证档案中的文件。最好将自己的密钥发布到自己的密钥环中,就像Debian用debian-archive-keyring一样,以便以后自动分发更新和密钥转换。
  • 提供有关如何添加档案和密钥的说明。如果您的用户无法安全地获取您的密钥,则上述信任链被破坏。如何帮助用户添加密钥取决于您的归档和目标受众,包括将用户已经配置的其他归档中包含的密钥环软件包(如其分发的缺省存储库)包含在内,以便利用信任网络。

每当档案内容发生变化时(新的软件包被添加或删除),档案库维护者必须遵循上述前两个步骤。

相关文档(SEE ALSO)

apt.conf(5), apt-get(8), sources.list(5), apt-key(8), apt-ftparchive(1), debsign(1), debsig-verify(1), gpg(1)

For more background information you might want to review the Debian Security Infrastructure[1] chapter of
the Securing Debian Manual (also available in the harden-doc package) and the Strong Distribution HOWTO[2]
by V. Alex Brennen.

存在的问题(BUGS)

APT bug page[3]. If you wish to report a bug in APT, please see /usr/share/doc/debian/bug-reporting.txt or the reportbug(1) command.

相关笔记(NOTES)

  1. Debian Security Infrastructure

  1. Strong Distribution HOWTO

  1. APT bug page

参考文献

  • man 8 apt-secure, version APT 1.5~rc1