Como usar https com o apt-get?

51

Usa apt-gethttps ou algum tipo de criptografia? Existe uma maneira de configurá-lo para usá-lo?

Strapakowsky
fonte
3
Observe que, devido a vulnerabilidades como bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ... que contornam a assinatura do InRelease, provavelmente é uma boa ideia configurar o HTTPS de qualquer maneira.
Royce Williams
whydoesaptnotusehttps.com é uma página da web que responde de maneira precisa e extensiva a essa pergunta.
precisa saber é o seguinte
11
Há uma razão mais mundana para que isso seja útil. Frequentemente, estou em uma conexão com a Internet com um proxy "transparente" quebrado que tende a bloquear determinados downloads de deb (eles provavelmente acionam algum bloqueador de malware estúpido). Mas, em https, o proxy não sabe o que estou baixando e, portanto, não interfere.
Nate Eldredge

Respostas:

53

apt-get(e outros comandos de manipulação de pacotes, que são um front-end para as mesmas bibliotecas APT) podem usar HTTP, HTTPS e FTP (e sistemas de arquivos montados). Se você especificar https://URLs em /etc/apt/sources.liste /etc/apt/sources.list.d/*, o APT usará HTTPS.

O APT verifica a assinatura dos pacotes. Portanto, você não precisa ter um meio de transporte que forneça autenticação de dados. Se um invasor modificar os arquivos que você está baixando, isso será percebido. Usar uma verificação de assinatura é melhor do que usar uma conexão HTTPS, porque detectará um ataque no servidor do qual você está baixando, não apenas um ataque em trânsito.

Mais precisamente, o fluxo de dados (simplificado) para um pacote é o seguinte:

  1. O pacote é produzido em uma máquina de construção.
  2. O pacote está assinado na máquina de construção.
  3. O pacote assinado é copiado para um espelho de download.
  4. Você faz o download do pacote.

O HTTPS garante que a etapa 4 ocorra corretamente. As assinaturas de pacote garantem que as etapas 2 a 4 ocorram corretamente.

De fato, há um pequeno benefício no HTTPS para a etapa 4: as assinaturas do pacote garantem apenas que o pacote seja autêntico. Um invasor na etapa 4 pode representar um servidor legítimo e servir versões antigas do pacote. Por exemplo, o invasor pode impedir que você faça o download de atualizações de segurança, na esperança de explorar uma vulnerabilidade em sua máquina que você teria corrigido se não fosse o ataque. Este não é um cenário muito realista, porque requer um invasor ativo (de modo que teria que ser alguém no controle de sua conexão com a Internet), mas poderia acontecer em princípio.

O outro benefício do HTTPS seria se você estivesse tentando ocultar o fato de estar baixando pacotes do Ubuntu de alguém bisbilhotando sua conexão de rede. Mesmo assim, o bisbilhoteiro podia ver a qual host você está se conectando; se você se conectar a um espelho do Ubuntu e baixar centenas de megabytes, é claro que você está baixando pacotes do Ubuntu. O bisbilhoteiro também pode descobrir principalmente quais pacotes você está baixando do tamanho dos arquivos. Portanto, o HTTPS só seria útil se você estiver baixando de um servidor que também ofereça outros arquivos de tamanho semelhante - não vejo nenhum ponto, exceto pacotes de terceiros, e apenas em circunstâncias muito incomuns.

Para reiterar: o benefício usual do HTTPS, que é saber que você está conectado ao servidor real, é inútil ao baixar pacotes do Ubuntu. A verificação de assinatura nos pacotes oferece uma garantia mais forte do que o HTTPS pode oferecer.

Gilles 'SO- parar de ser mau'
fonte
11
Não é que seja menos seguro, é menos relevante para o que você está tentando proteger. Com o APT, criptografar o conteúdo de sua transação não é tão importante, porque o que você está baixando é muito incontroverso: são apenas os mesmos pacotes Ubuntu que muitas pessoas baixam. Mas o importante é garantir que os arquivos que você os recebe não sejam violados.
thomasrutter
3
Algumas semanas atrás, tentei alterar as fontes para https e simplesmente não funcionou, apt-get updaterelataria erro ao tentar acessar os links. Com ppas: o mesmo. Alguém já tentou?
precisa saber é o seguinte
8
O repositório (servidor de atualização) deve suportar https / SSL para que isso funcione. O principal archive.ubuntu.com não . Você pode verificar no seu browser Se um servidor suporta prefixando https: // para o URL e ver se você tem uma lista de diretórios, etc.
ish
7
"Um invasor na etapa 4 pode se passar por um servidor legítimo e servir versões antigas do pacote". Na verdade, protegemos isso fornecendo às informações do pacote um prazo de validade. O APT avisará após essa data que seu espelho está obsoleto.
amaranto
4
Aqui está uma lista de todos os 15 espelhos que suportam HTTPS juntamente com um script que gera a lista: pastebin.com/QY2TQ1dq
Shnatsel
13

Com o APT, normalmente o mais importante não é que sua conexão seja criptografada, mas que os arquivos que você está recebendo não foram violados.

O APT possui verificação de assinatura interna para garantir isso.

A criptografia impediria que os bisbilhoteiros pudessem ver o que você está baixando, mas o que você está realmente baixando (e solicitando) é bastante incontroverso: será o mesmo que milhares de outros usuários do Ubuntu estão baixando e os arquivos não contêm nada que não seja '' t disponível gratuitamente em muitos servidores. Ainda assim, se você precisar de privacidade sobre quais pacotes você está baixando em particular, o HTTPS pode ser usado (especifique-o em seu sources.list).

A verificação de assinatura incorporada ao APT garantirá que os arquivos que você recebe não foram violados. Realmente não importa de onde os arquivos vêm e é até possível ter proxies ou proxies reversos entre você e o servidor para reduzir a carga do servidor ou acelerar você. A verificação de assinatura ainda garante que você esteja obtendo o arquivo não modificado, correspondendo à assinatura que só pode ser criptograficamente produzida com o arquivo original e uma cópia da chave privada do Ubuntu.

Se você mudar para HTTPS, não poderá aproveitar os servidores proxy para acelerar o acesso ou reduzir a carga. E não acrescentaria mais nenhuma garantia de não adulteração que a verificação de assinatura da APT ainda não oferece. Isso significaria, no entanto, que os bisbilhoteiros (como o seu ISP) não poderão ver quais pacotes você está baixando (o que provavelmente não é confidencial e, como Gilles apontou, eles podem adivinhar pelo tamanho do arquivo).

thomasrutter
fonte
3
O HTTPS não oferece muita privacidade, porque o tamanho dos arquivos é visível. De fato, há um pequeno benefício no HTTPS, que garante que um invasor no controle de sua conexão de rede não possa silenciosamente inserir dados obsoletos. É um pouco rebuscado.
Gilles 'SO- stop be evil'
6
Bons pontos. Por "dados obsoletos", presumo que você se refira a um homem do meio configurando uma versão do espelho do Ubuntu composta de versões ligeiramente anteriores, mas ainda inalterada em relação ao que o Ubuntu havia assinado na época.
thomasrutter
5
Sim é isso. Não hesite em apontar se sou um pouco jargão - preciso lembrar que esse é o Ask Ubuntu e não o Information Security .
Gilles 'SO- stop be evil'
Parece haver um grande buraco no apt - quando você apt updatee um homem no meio estão alimentando índices falsos, o apt pega o que quer que o homem do meio lhe dê e o escreve em / var / lib / apt / lists. Isso não é apenas com um homem mau no meio, mas como se você estiver no WiFi do hotel e for redirecionado para uma página de login, se você executar apt updateantes de fazer login, suas listas / var / lib / apt / serão lixeira com o HTML da página inicial do hotel. FALSO! De qualquer forma, a verificação básica do certificado TLS excluiria isso imediatamente.
Marius
@ Marius, isso não é possível devido à verificação, que abrange as listas e os pacotes. Se você reproduziu isso com uma instalação padrão do Apt, deve relatá-lo ao mantenedor.
precisa
1

As versões recentes do APT têm suporte a TLS integrado, portanto, você só precisa substituir as URLs de espelho do repositório de httpspacotes por aquelas com prefixo. Para o Debian, poderia ser assim:

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

Isso é útil, embora o APT inclua seu próprio protocolo de assinatura para garantir que os pacotes não sejam violados, pois pode haver erros no APT (como houve: CVE-2016-1252 , CVE-2019-3462 ). Os protocolos HTTP / TLS e suas cifras estão sujeitos a intenso escrutínio, portanto, uma vulnerabilidade grave de dia zero é muito menos provável se você adicionar essa camada de segurança.

Leif Arne Storset
fonte
Opa, só agora percebi que este site é o Ask Ubuntu. :) Não consegui encontrar uma solução CDN semelhante para o Ubuntu.
Leif Arne Storset
0

Eu acho que essa pergunta poderia usar uma resposta com instruções para o leigo, então…

O APT ainda não usa HTTPS por padrão nas compilações diárias do Ubuntu 19.10 (Eoan) (que ainda está em desenvolvimento). Pode-se verificar isso examinando o arquivo /etc/apt/sources.list e observando que todos os URLs de origem utilizam o esquema de URL "http:".

Para configurá-lo para usar HTTPS, pode-se seguir as seguintes instruções:

Primeiro , encontre um espelho de arquivo oficial confiável do Ubuntu que suporte HTTPS:

  1. Navegue até a página Official Archive Mirrors for Ubuntu .
  2. Na tabela dessa página da Web, identifique espelhos (A) hospedados em sites que você considera confiáveis, (B) possuem um espelho "http:" e, opcionalmente, (C) atendem à sua proximidade geográfica, velocidade do servidor e atualização preferências de frescura.
  3. Na tabela nessa página da Web, clique no link "http" de um espelho identificado na etapa (2) para visitar a versão "http:" do espelho.
  4. Na barra de endereços do navegador, altere manualmente "http:" no URL da página da web para "https:".
  5. Navegue até o espelho novamente (através do URL "https:") para ver se ele resolve.

Por exemplo, considero a Wikimedia Foundation confiável, então visitei o http://mirrors.wikimedia.org/ubuntu/ URL de espelho e, posteriormente, mudei para https://mirrors.wikimedia.org/ubuntu/ , que resolve com êxito.

Se você usa o Firefox (67.0.4) e tem a extensão HTTPS Everywhere (2019.6.27) instalada com o recurso "Criptografar todos os sites qualificados" ativado (por meio do painel de botões da barra de ferramentas), as etapas (4) e (5) podem ser omitidas porque a extensão modificará automaticamente o URL para utilizar HTTPS, permitindo determinar mais imediatamente se a versão "https:" do URL será resolvida.

Segundo , atualize sua lista de fontes do APT:

  1. Execute o comando sudo cp /etc/apt/sources.list /etc/apt/sources.list.backuppara fazer backup da sua lista de fontes de atualização.
  2. Substitua a URL base do espelho - mostrada aqui como https://mirrors.wikimedia.org - no comando sudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.listpela URL base do espelho do seu espelho preferido e, em seguida, execute o comando.

Em terceiro lugar , você deve examinar o conteúdo do diretório /etc/apt/sources.list.d/ em busca de fontes "http:" que podem ser alteradas para "https:" depois de instalar o software fora do arquivo Ubuntu.

Por exemplo, o pacote Visual Studio Code da Microsoft adiciona um arquivo vscode.list a esse diretório que especifica um URL "http:". A simples alteração do esquema de URL de "http:" para "https:" permite atualizações por HTTPS.

Considere fazer o backup desses arquivos de origem antes de modificá-los.

Por fim , execute uma atualização para garantir que as atualizações funcionem corretamente:

  1. Execute o sudo apt-get updatecomando
  2. Se isso não funcionar como esperado, restaure o (s) arquivo (s) da lista de fontes de backup que você criou executando o sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listcomando.

Também é importante notar que há um pacote apt-transport-https para adicionar suporte HTTPS ao APT. No entanto, este pacote é aparentemente desnecessário de acordo com a página da Web https://launchpad.net/ubuntu/eoan/+package/apt-transport-https e não é necessário desde o APT 1.5, de acordo com as informações mostradas após a execução do comando apt-cache show apt-transport-https.

Patrick Dark
fonte