考虑到 NSA 披露的所有偏执,我想知道为什么 Debian 软件包安装机制不支持 HTTPS 传输,更不用说默认使用 HTTPS 了。
我知道 Debian 软件包使用 GPG 进行某种签名验证,但考虑到这在安全方面的重要性,我仍然认为使用 HTTPS 传输代替 HTTP 不会太难。
编辑:我主要想保护自己免受 MitM 攻击(包括流量嗅探),而不是 Debian 镜像管理员。 HTTP 存储库将整个系统设置放在桌面上,供任何窥探 Debian 镜像流量的人使用。
答案1
2017 年更新:适合1.5开箱即用地支持 https。不再需要单独安装软件包 apt-transport-https。
针对带有 http 存储库的 apt 存在多种攻击和漏洞:
要使用 https 存储库,sources.list
您需要安装该软件包apt-transport-https
。
deb https://some.server.com/debian stable main
答案2
您的假设是错误的:您可以使用 HTTPS 下载。您只需找到支持它的镜像,并将其 URL 放入源列表中即可。您需要安装apt-transport-https
包裹。
Debian 并没有让 HTTPS 下载变得容易,因为好处很少。 Debian 软件包发行版已经包含了一种验证软件包的机制:所有软件包都经过签名总蛋白。如果活跃的中间人将您的流量重定向到包含损坏包的服务器,则会检测到损坏,因为 GPG 签名无效。使用 GPG 而不是 HTTPS 的优点是可以防御更多威胁:不仅可以防御最终用户连接上的主动中间人,还可以防御恶意或受感染的镜像或软件包分发链中任何地方的其他问题。
HTTPS 确实提供了一点隐私优势,因为它掩盖了您下载的包。然而,被动观察者仍然可以检测您的计算机和软件包服务器之间的流量,因此他们会知道您正在下载 Debian 软件包。他们还可以从文件大小中很好地了解您正在下载哪些包。
HTTPS 可以提供帮助的一个地方是引导信任,以获得已知有效的安装映像。 Debian 似乎没有提供这一点:有以下校验和安装介质,但只能通过 HTTP。
答案3
就在最近,我遇到了我公司的 apt 存储库的问题。问题是,如果我们使用标准 http 传输,其他人就可以轻松获取包。由于公司正在打包自己的专有软件并且不想与所有人共享,因此http传输成为一个问题。不是悲剧而是问题。有几种方法可以限制对包的访问 - 防火墙、限制 Web 服务器级别的访问、使用 ssh 作为传输。可以在这里找到有关该主题的非常容易阅读的内容: 限制对您的私人 Debian 存储库的访问
在我们的例子中,我们决定使用 https 传输 + 客户端证书身份验证。简而言之,所需要做的就是:
- 准备自签名证书、客户端和服务器(使用easy-rsa);
配置存储库前端的网络服务器仅接受 https;对于 nginx,它可能看起来像:
server { listen 443; root /path/to/public; server_name secure_repo; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:; ssl_prefer_server_ciphers on; ssl_client_certificate /etc/nginx/ssl/ca.crt; ssl_verify_client on; location / { autoindex on; } }
将客户端证书、客户端密钥和 ca 证书放入 /etc/apt/ssl,如果使用 Ubuntu,请将 00https 文件添加到 /etc/apt/apt.conf.d:
Debug::Acquire::https "true"; Acquire::https::example.com { Verify-Peer "true"; Verify-Host "false"; CaInfo "/etc/apt/ssl/ca.crt"; SslCert "/etc/apt/ssl/client.crt"; SslKey "/etc/apt/ssl/client.key"; };
请记住,如果您使用自签名证书,关闭主机验证很重要:Verify-Host "false";
如果不这样做,您将收到错误:
SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'
到这里,不再有对存储库的未经授权的访问。所以这是非常有用和强大的东西。
答案4
对于“匿名”用例,还apt-transport-tor
允许您将 URI 放入tor+http://
resources.list 文件中。与简单地加密与镜像的连接相比,这是更好的匿名保护。
例如,即使使用 HTTPS,本地观察者仍然会知道您正在更新或安装软件,并且可能可以对您正在执行哪些操作(甚至可能根据大小,甚至可能是哪些软件包)做出一些不错的猜测。
Debian 通过 Tor“洋葱服务”提供 APT 存储库,因此您无需信任域名系统即可获得端到端加密(类似于 TLS)。看onion.debian.org对于所有以这种方式可用的 Debian 服务。主要的 Debian FTP 存储库位于vwakviie2ienjx6t.onion