Por que não há transporte https para a ferramenta debian apt?

45

Com toda a paranóia que vem com as revelações da NSA e tudo mais, estou me perguntando por que o mecanismo de instalação do pacote debian não suporta HTTPS para seu transporte, e muito menos usá-lo por padrão.

Eu sei que os pacotes debian têm algum tipo de validação de assinatura usando GPG, mas ainda não acho que usar o transporte HTTPS em vez do HTTP seja muito difícil, considerando o quão crucial isso é em termos de segurança.

Edit: Eu quero principalmente me proteger de ataques do MitM (incluindo apenas sniffing de tráfego), não administradores de espelho do debian. Os repositórios HTTP colocam toda a configuração do sistema em cima da mesa, se alguém bisbilhotar meu tráfego acessando os espelhos do debian.

zaadeh
fonte
2
Essencialmente a mesma pergunta sobre Segurança da informação : Por que os downloads de aplicativos não são feitos rotineiramente por HTTPS?
Gilles 'SO- stop be evil'
Não precisava ... é conteúdo público ... pacotes assinaram checksums
Skaperen
ok, assim você não quer que o administrador da rede saiba quais pacotes você instala / atualiza.
21415 Skaperen
administradores ou qualquer outro interceptador.
Zaadeh 7/03

Respostas:

49

Há sim. Você precisa instalar o pacote apt-transport-https. Então você pode usar linhas como

 deb https://some.server.com/debian stable main

no seu sources.listarquivo. Mas geralmente isso não é necessário, pois todo o conteúdo é público e acrescenta sobrecarga e latência de criptografia. Como você não confia na chave pública de um invasor, até o tráfego http está protegido contra ataques do MitM. aptirá avisá-lo e falhará na instalação dos pacotes quando um invasor injetar pacotes manipulados.

EDIT: Como mencionado nos comentários, é realmente mais seguro usar o repositório TLS . Pesquisas mostram que o uso do apt em repositórios não criptografados pode realmente representar um risco à segurança, pois o transporte HTTP é vulnerável a ataques de repetição.

Marco
fonte
7
Não, a maioria dos espelhos não suporta https. Simplesmente porque não faz muito sentido criptografar esse tipo de tráfego. Os pacotes estão sendo verificados de qualquer maneira e as informações são públicas.
11133 Marco Marco
4
Posso pensar em algumas razões pelas quais ainda prefiro fazer o download através do TLS: 1) Posso me preocupar com minha privacidade ao instalar pacotes e 2) pode haver erros no código de verificação de assinatura de pacote, que um MITM poderia explorar.
Jack O'Connor
2
@ JackO'Connor, enquanto a primeira objeção à privacidade é compreensível, a segunda é como dizer que eu gosto de sites para assinar seu conteúdo com chaves PGP, porque pode haver erros no código TLS. PGP e TLS estabelecem confiança; você não precisa dos dois para isso.
Paul Draper
7
@Marco sua resposta está incorreta; vários trabalhos de pesquisa mostraram que os repositórios APT e YUM são vulneráveis ​​a ataques de repetição quando o repositório é acessado via HTTP, mesmo com assinaturas GPG. Os repositórios devem ser acessados ​​apenas via TLS, 100% do tempo.
Joe Damato 21/10
6
Aqui está o artigo que Joe Damato se refere - veja também a resposta dele aqui
SauceCode
17

Sua suposição está errada: você pode usar downloads HTTPS. Você apenas precisa encontrar um espelho que o suporte e colocar seu URL na sua lista de fontes. Você precisará instalar o apt-transport-httpspacote.

O Debian não facilita os downloads HTTPS porque há muito pouco benefício. A distribuição de pacotes Debian já inclui um mecanismo para verificar os pacotes: todos os pacotes são assinados com o Gpg . Se um man-in-the-middle ativo redirecionar seu tráfego para um servidor com pacotes corrompidos, a corrupção será detectada porque as assinaturas GPG não serão válidas. O uso do GPG em vez do HTTPS tem a vantagem de proteger contra mais ameaças: não apenas contra o intermediário ativo na conexão do usuário final, mas também contra um espelho não autorizado ou infectado ou outros problemas em qualquer lugar da cadeia de distribuição de pacotes .

O HTTPS fornece uma pequena vantagem de privacidade, pois oculta os pacotes que você baixa. No entanto, um observador passivo ainda pode detectar o tráfego entre o seu computador e um servidor de pacotes, para que eles saibam que você está baixando pacotes Debian. Eles também podem ter uma boa idéia de quais pacotes você está baixando nos tamanhos de arquivo.

O único local em que o HTTPS ajudaria é o bootstrapping trust, para obter uma imagem de instalação válida e conhecida. O Debian parece não fornecer isso: existem somas de verificação da mídia de instalação , mas apenas por HTTP.

Gilles 'SO- parar de ser mau'
fonte
Não é a versão HTTPS da mídia de instalação: cdimage.debian.org/debian-cd
Fedir RYKHTIK
2
Muito pouco benefício? E o justi.cz/security/2019/01/22/apt-rce.html ?
Aaron Franke
@AaronFranke Um bug específico que é mais fácil de explorar com HTTP do que com HTTPS conta com um benefício muito pequeno, sim. Não é como se o HTTP tivesse uma superfície de ataque maior que o HTTPS: na verdade, o próprio HTTPS tem uma superfície de ataque maior, pois envolve mais código. Portanto, nem sequer é um benefício líquido: é uma troca entre dois riscos marginais.
Gilles 'SO- stop be evil'
9

Recentemente, deparei-me com o repositório apt da minha empresa. O problema era que, se usarmos o transporte http padrão, qualquer outra pessoa poderá obter o pacote facilmente. Como a empresa está empacotando seu próprio software proprietário e não deseja compartilhá-lo com todos, o transporte http se torna um problema. Não é uma tragédia, mas um problema. Existem algumas maneiras de limitar o acesso ao pacote - firewall, restrição de acesso no nível de servidor da web, usando ssh como transporte. Pode ser encontrada aqui uma leitura bastante fácil de consumir: Restrinja o acesso ao seu repositório Debian privado

No nosso caso, decidimos usar o transporte https + autenticação de certificado de cliente. Resumidamente, basta:

  1. Preparar certificados autoassinados, cliente e servidor (usando o easy-rsa);
  2. Configure o servidor da web que está localizado no repositório para aceitar apenas https; No caso do nginx, pode parecer com:

    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;
      }
    }
    
  3. Coloque o certificado do cliente, a chave do cliente e o certificado ca em / etc / apt / ssl e, no caso do Ubuntu, adicione o arquivo 00https ao /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"; };

Lembre-se de que, se você estiver usando um certificado autoassinado, é importante desativar a verificação do host: Verify-Host "false";se você não fizer isso, verá um erro: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

E aqui vamos nós, não há mais acesso não autorizado ao repositório. Então isso é uma coisa bastante útil e poderosa.

at0S
fonte
3
Obrigado pela ótima resposta. Mas acho que a questão principal ainda está lá. HTTPS realmente deve se tornar o protocolo padrão para transferências pela Web e pacotes debian em particular. O argumento não deveria ser por que HTTPS, deveria ser por que não?
zaadeh
1
@aalizadeh, eu concordo com você, há sobrecarga ao usar https, mas não há sobrecarga maciça. Eu acho que a principal razão pela qual o https não é um transporte padrão é que algumas organizações proíbem explicitamente qualquer tráfego criptografado (como querem poder enfiar o nariz no que os funcionários estão fazendo pela Internet), o que significa que os repositórios precisam oferecer suporte. transportes http e https. Pode haver outras considerações
at0S
1
O uso de »Verify-Host" false ";« está errado, mesmo com certificados autoassinados. Você precisa informar seus clientes sobre o certificado do servidor (correto).
Axel Beckert
1
De fato, mas aqui meus clientes eram apenas sistemas internos. Então, em vez de criar toda a infraestrutura pki adequada, eu cortei a esquina. E sim, mais tarde o pki foi resolvido corretamente e o Verify-Host falso; foi removido. E sim, o ponto é válido.
at0S
1
com o ubuntu xenial, os pacotes apt são buscados como usuário não privilegiado _apt, você pode atualizar este tópico com detalhes de como você gerenciou ou resolveu os problemas de permissão de arquivo.
David
7

Observe que, devido a vulnerabilidades como

https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467

... que contorna a assinatura do InRelease, provavelmente é uma boa ideia configurar o HTTPS de qualquer maneira.

Royce Williams
fonte
1
E agora este também: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. A assinatura InRelease não é suficiente . "Mas mover todos os espelhos para HTTPS levará tempo e coordenação!". Sim. Comece agora. Esta não será a última falha do InRelease.
21418 Royce Williams
1
Aqui está outro exemplo, de um ecossistema diferente - Alpine. Seu sistema de gerenciamento de pacotes não usa HTTPS por padrão e depende apenas da assinatura para verificar a integridade do pacote ... e essa verificação teve um bug explorável remotamente em setembro de 2018: justi.cz/security/2018/09/13/alpine- apk-rce.html O Alpine deve começar agora a usar HTTPS por padrão.
Royce Williams
4

Para o caso de uso "anonimato", também existe o apt-transport-torque permite que você coloque URIs como tor+http://nos arquivos sources.list. Essa é uma proteção de anonimato muito melhor do que simplesmente criptografar a conexão com seu espelho.

Por exemplo, um observador local ainda saberia que você está atualizando ou instalando software, mesmo com HTTPS, e provavelmente pode fazer algumas suposições decentes sobre qual deles você está fazendo (e possivelmente até quais pacotes, com base no tamanho).

O Debian fornece repositórios APT via Tor "Onion services" para que você possa obter criptografia de ponta a ponta (semelhante ao TLS) sem precisar confiar no sistema de nome de domínio. Veja onion.debian.org para todos os serviços Debian disponíveis desta maneira. O principal repositório Debian FTP está emvwakviie2ienjx6t.onion

meejah
fonte