哪些Linux发行版的软件包存储库是安全的,哪些不是?


14

我知道大多数发行版都有某种存储库功能,可以在安装后下载新软件包。哪些发行版以安全的方式执行此操作,哪些发行版不以安全的方式执行此操作。

我特别考虑的是中间人这样的攻击媒介,以及存储库元服务器和存储库文件镜像上的诸如违反安全性之类的问题。

我听说Slackware和Arch linux都非常脆弱,因为它们缺少软件包签名。这是真的?是否有其他主要的Linux发行版容易受到简单的中间人攻击?


如果发行版的站点是纯文本http或ftp,并且发行版是从此连接中获取的iso,并且此基础连接是MITM,那么在更新包上签名的“验尸”包有什么用?
n611x007 2014年

Answers:


7

这不是您问题的直接答案,但是您可以采取多种措施来减轻这种风险。最简单的方法是对照来自下载镜像不同的镜像的校验和检查下载的软件包。

当我的包管理器(poldek)下载包时,我将其设置为将下载的rpm的副本保存在缓存文件夹中。它会根据软件包存储库自动检查下载的校验和,并在不匹配时发出警告/中止,但是如果您担心中间人对发行版存储库的攻击,那么编写辅助脚本可以轻松浏览所有下载的软件包,并对照从其他镜像下载的校验和进行验证。您甚至可以以空运行方式运行首次安装,以便下载但未安装软件包,然后运行验证脚本,然后进行实际安装。

这并不能阻止受损的软件包进入发行版的存储库,但是大多数发行版都有其他缓解方法,即使已签名的软件包也无法保证这绝不是问题。它的作用是扼杀目标中间人攻击媒介。通过使用单独的源并在单独的频道上下载,您可以轻松地避免被破坏的程序包掉入窃听器的行中。


1
有一个称为Arch的软件包paccheck可以做到这一点,在安装之前将软件包与不同的镜像进行比较,并警告任何差异。
狼”,

镜像列表可能是公开的,因此从理论上讲攻击者能否从图谋到MITM?如果攻击者专门针对您的服务器,那么这似乎更有可能吗?尽管如此,这可能比大多数Linux所做的更多。
n611x007 2014年

10

Debian软件包经过校验和,并且校验和由Debian密钥环中的密钥签名。该apt软件包管理器确保下载的软件包具有正确的校验和校验文件被正确地签名。


5

Fedora软件包已签名并经过校验和。甚至rpmfusion之类的第三方存储库也会对其包进行签名。

Yum(程序包管理器)需要一个特殊的标志(--nogpgcheck)来安装尚未签名的程序包。


下行软件包也是如此,例如Red Hat和CentOS
fpmurphy 2011年

3

所有Arch Linux软件包都使用md5或sha1 sum来检查所有位是否到位。包维护者可以选择哈希算法。从AUR安装的软件包(通常只是一个小的PKGBUILD文本文件)应该在安装之前由安装者检查。包含官方二进制程序包的存储库由受信任的用户(TU)监督。

更新:Arch现在使用pacman 4引入了程序包签名


2
都是正确的,但是软件包没有经过签名,因此仍然容易受到mitm和镜像危害攻击,无论这种可能性如何。这是一个长期要求的功能,也是我勉强停止使用Arch的主要原因。也就是说,在Arch和Pacman论坛和Wiki中正在进行有关它的讨论-这是一个很难解决的问题。除了这个问题,Arch是一个很棒的发行版。
Eli Heady

@Eli:我并没有在争论这个事实-我不知道事态-但是这不会成为一个消瘦的市场。诚然,Arch是相当受欢迎的发行版,但是不是所有这些类型的恶作剧通常都以赚钱为前提吗?
boehj 2011年

1
当然,这就是Windows用户群比Linux用户群更受关注的原因,对吗?问题是,适用于集合的内容通常并不完全适用于个人。我的意思是每个人的威胁模型都是不同的-如果您有理由担心被挑出来进行攻击,则应采取适当的措施来降低风险。缺少程序包签名会提供并非很难利用的攻击媒介。如果您有宝贵的保护位,则在缓解威胁的策略中应考虑到此问题。
伊莱·海蒂

您可以从CD / DVD安装Arch,然后在安装前小心检查二进制软件包的md5 / sha1总和是否与多个镜像的总和相对应,类似于Caleb的建议。即使我确实看到软件包签名的意义,并希望Arch拥有它,但在任何情况下都永远不会有100%的安全性。
亚历山大

那么如何实现以明文http或ftp的安全方式传送校验和?应该通过什么方式在拱门上进行签名检查?
n611x007 2014年

1

谁说Slackware没有软件包签名?

Slackware软件包使用Slackware的公钥签名。因此,每个程序包都有其带有扩展名的签名.asc。不仅软件包,而且其他文件也被签名,例如CHECKSUMS.MD5。这包含软件包的校验和的列表。

该发行版有一个官方工具,称为slackpkg从镜像下载/安装软件包。使用slackpkg update该工具更新本地回购数据库后,将检查新MD5文件和changelog的签名有效性。

下载软件包后(但在安装之前),将检查软件包的签名和MD5。

可以使用以下方法获取公共密钥,slackpkg update gpg也可以简单地从安装CD导入公共密钥:gpg --import GPG-KEY

slapt-getSlackware 还有另一个非官方的工具。它也支持GPG检查!与slackpkg。类似。


-2

迄今为止的OpenBSD。整个项目致力于安全性,团队甚至为原始的Apache设置了5000多个线路补丁,因为他们认为使用该安全性不够安全。这是通过pkg_add进行的,但是我从来没有遇到过问题。


4
您没有回答这个问题:它专门用于验证已下载软件包的签名(对于* BSD,则为端口)。
吉尔(Gilles)“所以,别再邪恶了”,

1
我同意@Gilles;OpenBSD是一个很棒的操作系统,但是@grm询问Linux软件包分发的安全性。
livingstaccato
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.