我们正在使用内部 Debian 存储库来移植内部软件。
我们选择 reprepro 来管理存储库,并对源包进行签名(使用 debsign),以便存储库接受我们的 gpg 密钥作为可信密钥。
我们创建了一个类似于 debian 或 ubuntu 密钥环包的内部密钥环,我们在任何事情之前安装它,以便能够运行“apt-get update”而不会出现任何 gpg 密钥错误。
最新的一点是有问题的,因为我们经常会遇到与安全相关的问题,尽管我们处于完全私有的网络中,这排除了来自外部的不安全的包上传。
问题:在内部存储库中使用签名包的优缺点是什么?
答案1
存储库签名可以帮助用户知道“是的,我从中下载软件包的存储库是我信任的”。如果你告诉他们忽略此检查,你就不得不担心:
- DNS 中毒(当他们访问 yourserver.com 时他们实际上获取了正确的地址吗?)
- MITM(当他们尝试访问 IP 1.2.3.4 上的存储库时,他们是否获得了他们应该获得的服务器)
- sources.list 中的恶意条目(不知怎么的,我设法把 debhttp://evilserver.xxxfoo/” 在你的 sources.list 中,现在你从 evilserver.xxx 安装包,而你不应该信任它)
如果前两者中的任何一个可能是一个问题(在受控环境中不太可能出现),那么即使使用签名的存储库,仍然会面临重放攻击的问题。(你推出安全升级来修补漏洞,我让用户查看我的存储库而不是你的存储库,因此用户永远不会收到补丁,我可以利用该漏洞)。
在受控网络上,我其实不必担心这些。话虽如此,如果您已经拥有了签名存储库的基础设施,那么运行 debsign 听起来就不太复杂了。