是否apt-get
使用https或任何类型的加密?有没有一种方法可以配置它以使用它?
是否apt-get
使用https或任何类型的加密?有没有一种方法可以配置它以使用它?
Answers:
apt-get
(以及其他程序包处理命令,它们是同一APT库的前端)可以使用HTTP,HTTPS和FTP(以及已挂载的文件系统)。如果https://
在/etc/apt/sources.list
和中指定URL /etc/apt/sources.list.d/*
,则APT将使用HTTPS。
APT验证软件包的签名。因此,您不必具有提供数据身份验证的运输形式。如果攻击者修改了您正在下载的文件,则会注意到这一点。使用签名验证比使用HTTPS连接更好,因为它可以检测到正在从中下载的服务器上的攻击,而不仅仅是传输中的攻击。
更准确地说,包的(简化)数据流如下:
HTTPS确保第4步正确进行。程序包签名可确保正确执行步骤2至4。
实际上,HTTPS对于第4步有一个小的好处:程序包签名仅确保程序包是真实的。步骤4中的攻击者可能会冒充合法服务器并提供过时的软件包版本。例如,攻击者可以阻止您下载任何安全更新,以期利用计算机上的漏洞(如果该漏洞不是用于攻击的,则应予以修补)。这不是一个非常现实的情况,因为它需要一个活动的攻击者(因此必须是可以控制您的Internet连接的人),但是原则上可能会发生。
HTTPS的另一个好处是,如果您试图掩盖从窥探网络连接的人那里下载Ubuntu软件包的事实。即使这样,窃听者仍可以看到您要连接到的主机。如果您连接到Ubuntu镜像并下载数百兆字节,则很明显,您正在下载Ubuntu软件包。窃听者还可以从文件大小中大致确定要下载的软件包。因此,HTTPS仅在您从还提供其他类似大小文件的服务器上下载时才有用–我看不到第三方包,只有在非常特殊的情况下,才有意义。
重申一下:HTTPS的通常好处是,当您下载Ubuntu软件包时,它知道您已连接到真实服务器,因此没有用。与HTTPS相比,包上的签名验证可提供更强大的保证。
apt-get update
尝试访问链接时会报告错误。与ppas:相同。有人尝试过吗?
archive.ubuntu.com
没有。你可以在浏览器中检查是否有服务器通过在前面HTTPS支持它://的URL,看如果你得到一个目录列表,等等
使用APT,通常更重要的不是连接已加密,而是接收到的文件未被篡改。
APT具有内置的签名验证来确保这一点。
加密将阻止窃听者看到您正在下载的内容,但是您实际下载(和请求)的内容却毫无争议:它与数千名其他Ubuntu用户正在下载的文件相同,并且文件不包含任何内容。可在许多服务器上免费使用。不过,如果您对于要下载的软件包特别需要保密,可以使用HTTPS(在您的sources.list中指定)。
APT内置的签名验证将确保您收到的文件未被篡改。文件的来源并不重要,甚至可以在您和服务器之间使用代理或反向代理来减少服务器负载或加快速度。签名验证仍可确保您获取未修改的文件,并将仅与原始文件和Ubuntu私钥副本一起加密产生的签名与之匹配。
如果您切换到HTTPS,则将无法再使用代理服务器来加快访问速度或减少负载。而且,它不会为未篡改APT签名验证尚未提供的任何保证。但是,这意味着窃听者(例如您的ISP)将无法看到您正在下载的软件包(这不太可能是机密的,而且正如Gilles指出的那样,他们可以从文件大小中进行猜测)。
apt update
和中间一个人在喂您伪造索引时,apt会愉快地接受中间人给您的任何东西并将其写在/ var / lib / apt / lists中。这不仅是中间有一个邪恶的人,而且就像您在酒店WiFi上并被重定向到登录页面一样,如果您apt update
在登录之前运行,则/ var / lib / apt / lists会被破坏与酒店首页HTML。虚假!无论如何,基本的TLS证书检查将立即排除这种情况。
最新的APT版本内置了TLS支持,因此您只需要用- https
前缀替换包存储库镜像URL 。对于Debian,它可能看起来像这样:
deb https://deb.debian.org/debian/ stretch main
deb https://deb.debian.org/debian-security stretch/updates main
deb https://deb.debian.org/debian/ stretch-updates main
即使APT包含其自己的签名协议以确保软件包不被篡改,这也很有用,因为APT中可能存在错误(如:CVE-2016-1252,CVE-2019-3462)。HTTP / TLS协议及其密码受到严格审查,因此,如果您添加此安全保护层,则严重的零日漏洞非常不可能发生。
我认为这个问题可以使用针对外行的指导性答案,所以……
默认情况下,APT在Ubuntu 19.10(Eoan)(仍在开发中)的每日内部版本中仍默认不使用HTTPS。可以通过检查/etc/apt/sources.list文件并注意所有源URL都使用“ http:” URL方案来验证这一点。
要将其配置为使用HTTPS,可以按照以下说明进行操作:
首先,找到一个可信赖的官方Ubuntu存档镜像,该镜像支持HTTPS:
例如,我认为Wikimedia Foundation是值得信赖的,因此我访问了http://mirrors.wikimedia.org/ubuntu/镜像URL,随后将其更改为https://mirrors.wikimedia.org/ubuntu/,该URL 成功解决了。
如果您使用Firefox(67.0.4)并安装了HTTPS Everywhere(2019.6.27)扩展名并启用了“加密所有网站合格”功能(通过工具栏按钮面板),则可以省略步骤(4)和(5)因为该扩展名将自动修改URL以使用HTTPS,因此允许一个或多个立即确定URL的“ https:”版本是否可以解析。
二,更新您的APT来源列表:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
以备份您的更新源列表。sudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.list
与镜基URL首选镜的和,然后,执行该命令。第三,从Ubuntu档案库外部安装软件后,应检查/etc/apt/sources.list.d/目录中“ http:”源的内容,这些源可能会更改为“ https:”。
例如,Microsoft的Visual Studio Code程序包将一个vscode.list文件添加到此目录,该文件指定“ http:” URL。简单地将URL方案从“ http:”更改为“ https:”就可以通过HTTPS进行更新。
在修改它们之前,请考虑备份任何此类源文件。
最后,执行更新以确保更新将正常运行:
sudo apt-get update
命令。sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list
命令还原您制作的备份源列表文件。还值得注意的是,有一个apt-transport-https软件包可以为APT添加HTTPS支持。但是,根据网页https://launchpad.net/ubuntu/eoan/+package/apt-transport-https看来,此软件包显然是不必要的,并且根据执行命令后显示的信息,自APT 1.5开始就不需要此软件包apt-cache show apt-transport-https
。