Answers:
这不是您问题的直接答案,但是您可以采取多种措施来减轻这种风险。最简单的方法是对照来自与下载镜像不同的镜像的校验和检查下载的软件包。
当我的包管理器(poldek
)下载包时,我将其设置为将下载的rpm的副本保存在缓存文件夹中。它会根据软件包存储库自动检查下载的校验和,并在不匹配时发出警告/中止,但是如果您担心中间人对发行版存储库的攻击,那么编写辅助脚本可以轻松浏览所有下载的软件包,并对照从其他镜像下载的校验和进行验证。您甚至可以以空运行方式运行首次安装,以便下载但未安装软件包,然后运行验证脚本,然后进行实际安装。
这并不能阻止受损的软件包进入发行版的存储库,但是大多数发行版都有其他缓解方法,即使已签名的软件包也无法保证这绝不是问题。它的作用是扼杀目标中间人攻击媒介。通过使用单独的源并在单独的频道上下载,您可以轻松地避免被破坏的程序包掉入窃听器的行中。
paccheck
可以做到这一点,在安装之前将软件包与不同的镜像进行比较,并警告任何差异。
Fedora软件包已签名并经过校验和。甚至rpmfusion之类的第三方存储库也会对其包进行签名。
Yum(程序包管理器)需要一个特殊的标志(--nogpgcheck
)来安装尚未签名的程序包。
所有Arch Linux软件包都使用md5或sha1 sum来检查所有位是否到位。包维护者可以选择哈希算法。从AUR安装的软件包(通常只是一个小的PKGBUILD文本文件)应该在安装之前由安装者检查。包含官方二进制程序包的存储库由受信任的用户(TU)监督。
更新:Arch现在使用pacman 4引入了程序包签名
谁说Slackware没有软件包签名?
Slackware软件包使用Slackware的公钥签名。因此,每个程序包都有其带有扩展名的签名.asc
。不仅软件包,而且其他文件也被签名,例如CHECKSUMS.MD5
。这包含软件包的校验和的列表。
该发行版有一个官方工具,称为slackpkg
从镜像下载/安装软件包。使用slackpkg update
该工具更新本地回购数据库后,将检查新MD5文件和changelog的签名有效性。
下载软件包后(但在安装之前),将检查软件包的签名和MD5。
可以使用以下方法获取公共密钥,slackpkg update gpg
也可以简单地从安装CD导入公共密钥:gpg --import GPG-KEY
slapt-get
Slackware 还有另一个非官方的工具。它也支持GPG检查!与slackpkg
。类似。
迄今为止的OpenBSD。整个项目致力于安全性,团队甚至为原始的Apache设置了5000多个线路补丁,因为他们认为使用该安全性不够安全。这是通过pkg_add进行的,但是我从来没有遇到过问题。