使用签名的debian软件包的内部存储库

  • 我们正在使用一个内部debian库来存储backports和内部软件。

  • 我们selectreprepro来pipe理资源库,并且签署源码包(使用debsign),以便资源库接受我们的gpg密钥为可信。

  • 我们创build了一个类似于debian或ubuntu keyring软件包的内部密钥环,我们之前安装了一个能够运行“apt-get update”而不会出现任何gpg密钥错误的东西。

最新的观点是有问题的,因为我们经常遇到与安全有关的问题,尽pipe我们处于一个完全专用的networking,不包括从外部不安全的包上传。

问题:在内部存储库中使用已签名的软件包有哪些优缺点?

存储库签名有助于用户知道“是的,我正在下载软件包的存储库是我信任的存储库”。 如果你告诉他们忽略这个检查,你将不得不担心:

  • DNS中毒(当他们去yourserver.com是他们实际上得到正确的地址?)
  • MITM(当他们试图在IP 1.2.3.4上访问版本库时,他们是否得到了应该得到的服务器)
  • 在sources.list中的stream氓条目(不知何故,我设法把deb http://evilserver.xxx foo /“放在你的sources.list中,现在你从evilserver.xxx安装你不应该信任的包)

如果前两者中的任何一个都可能是一个问题(这在控制环境中是不可能的),那么即使使用签名存储,您仍然有重放攻击的问题。 (您推出安全升级来修补漏洞,我让用户查看我的存储库而不是你的,所以用户永远不会得到补丁,我可以利用漏洞)。

在一个受控制的networking上,我并不担心这个问题。 这就是说,如果你已经有了基础设施,那么运行debsign不会太复杂。