Perché non esiste un trasporto https per lo strumento debian apt?


45

Con tutta la paranoia fornita con le rivelazioni dell'NSA e tutto il resto, mi chiedo perché il meccanismo di installazione del pacchetto debian non supporti HTTPS per il suo trasporto, e tanto meno usarlo per impostazione predefinita.

So che i pacchetti debian hanno una sorta di convalida della firma usando GPG, ma ancora non penso che usare il trasporto HTTPS invece di HTTP sia troppo difficile, considerando quanto sia cruciale dal punto di vista della sicurezza.

Modifica: principalmente voglio proteggermi dagli attacchi MitM (incluso solo lo sniffing del traffico), non dagli amministratori di mirror debian. I repository HTTP mettono l'intera configurazione del sistema sul tavolo, se qualcuno si sporge sul mio traffico andando ai mirror debian.



non necessario ... è contenuto pubblico ... i pacchetti hanno firmato checksum
Skaperen

ok quindi non vuoi far sapere al tuo amministratore di rete quali pacchetti installi / aggiorni.
Skaperen,

amministratori o qualsiasi altro intercettatore.
zaadeh,

Risposte:


49

C'è. Devi installare il pacchetto apt-transport-https. Quindi puoi usare linee come

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

nel tuo sources.listfile. Ma di solito non è necessario, poiché l'intero contenuto è comunque pubblico e aggiunge sovraccarico e latenza di crittografia. Poiché non ti fidi di una chiave pubblica degli aggressori, anche il traffico http è al sicuro dagli attacchi MitM. aptavviserà l'utente e non installerà i pacchetti quando un utente malintenzionato inietta pacchetti manipolati.

EDIT: Come menzionato nei commenti, è davvero più sicuro usare il repository TLS . La ricerca mostra che l'utilizzo di apt su repository non crittografati può effettivamente comportare un rischio per la sicurezza in quanto il trasporto HTTP è vulnerabile agli attacchi di replay.


7
No, la maggior parte dei mirror non supporta https. Semplicemente perché non ha molto senso crittografare questo tipo di traffico. I pacchetti vengono comunque verificati e le informazioni sono pubbliche.
Marco

4
Mi vengono in mente un paio di motivi per cui potrei ancora preferire scaricare su TLS: 1) Potrei preoccuparmi della mia privacy durante l'installazione dei pacchetti e 2) potrebbero esserci dei bug nel codice di controllo della firma del pacchetto, che un MITM potrebbe sfruttare.
Jack O'Connor,

2
@ JackO'Connor, mentre la prima obiezione sulla privacy è comprensibile, la seconda è come dire che mi piacciono i siti Web per firmare i loro contenuti con chiavi PGP perché potrebbero esserci dei bug nel codice TLS. Sia PGP che TLS stabiliscono la fiducia; non hai bisogno di entrambi per quello.
Paul Draper,

7
@Marco la tua risposta è errata; numerosi articoli di ricerca hanno dimostrato che i repository APT e YUM sono vulnerabili agli attacchi di replay quando si accede al repository tramite HTTP, anche con firme GPG. I repository dovrebbero essere accessibili solo tramite TLS, il 100% delle volte.
Joe Damato,

6
Ecco l'articolo a cui fa riferimento @Joe Damato - vedi anche la sua risposta qui
SauceCode

17

La tua ipotesi è errata: puoi utilizzare i download HTTPS. Devi solo trovare un mirror che lo supporti e inserire il suo URL nel tuo elenco di fonti. Dovrai installare il apt-transport-httpspacchetto.

Debian non semplifica i download di HTTPS perché i vantaggi sono pochi. La distribuzione dei pacchetti Debian include già un meccanismo per verificare i pacchetti: tutti i pacchetti sono firmati con Gpg . Se un man-in-the-middle attivo reindirizza il tuo traffico verso un server con pacchetti danneggiati, il danneggiamento verrà rilevato perché le firme GPG non saranno valide. L'uso di GPG anziché HTTPS ha il vantaggio di proteggere da più minacce: non solo contro l'attivo man-in-the-middle sulla connessione dell'utente finale, ma anche contro un mirror non autorizzato o infetto o altri problemi in qualsiasi punto della catena di distribuzione dei pacchetti .

HTTPS offre un leggero vantaggio in termini di privacy in quanto oscura i pacchetti scaricati. Tuttavia un osservatore passivo può ancora rilevare il traffico tra il tuo computer e un server di pacchetti, quindi saprebbero che stai scaricando i pacchetti Debian. Potrebbero anche avere una buona idea di quali pacchetti si stanno scaricando dalle dimensioni del file.

L'unico punto in cui HTTPS sarebbe di aiuto è la fiducia nell'avvio del boot, per ottenere un'immagine di installazione valida e nota. Debian non sembra fornire questo: ci sono checksum dei supporti di installazione , ma solo su HTTP.


Esiste la versione HTTPS del supporto di installazione: cdimage.debian.org/debian-cd
Fedir RYKHTIK il

2
Pochissimi benefici? Che dire di justi.cz/security/2019/01/22/apt-rce.html ?
Aaron Franke il

@AaronFranke Un bug specifico che è più facile da sfruttare con HTTP che con HTTPS conta un vantaggio molto piccolo, sì. Non è come se HTTP avesse una superficie di attacco più grande di HTTPS: infatti HTTPS stesso ha una superficie di attacco più grande poiché coinvolge più codice. Quindi non è nemmeno un vantaggio netto: è un compromesso tra due rischi marginali.
Gilles 'SO- smetti di essere malvagio' il

9

Proprio di recente ho riscontrato il problema con il repository apt della mia azienda. Il problema era che se usiamo il trasporto http standard chiunque altro può ottenere facilmente il pacchetto. Poiché la società sta confezionando il proprio software proprietario e non desidera condividerlo con tutti, il trasporto http diventa un problema. Non una tragedia ma un problema. Esistono due modi per limitare l'accesso al pacchetto: firewalling, limitazione dell'accesso a livello di server Web, utilizzo di ssh come trasporto. Si può trovare abbastanza facile da leggere su questo argomento qui: Limitare l'accesso al proprio repository Debian privato

Nel nostro caso, abbiamo deciso di utilizzare https transport + autenticazione certificato client. In breve, tutto ciò che serve è:

  1. Preparare certificati, client e server autofirmati (usando easy-rsa);
  2. Configurare il server web che repository di fronti per accettare solo https; In caso di nginx potrebbe apparire come:

    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. Metti il ​​certificato client, la chiave client e il certificato ca su / etc / apt / ssl e, nel caso con Ubuntu, aggiungi il file 00https a /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"; };

Tieni presente che se stai utilizzando un certificato autofirmato, è importante disattivare la verifica dell'host: in Verify-Host "false";caso contrario, verrà visualizzato un errore: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

E qui andiamo, non c'è più accesso non autorizzato al repository. Quindi questa è una cosa abbastanza utile e potente.


3
Grazie per la magnifica risposta. Ma penso che il problema principale sia ancora lì. HTTPS dovrebbe davvero diventare il protocollo predefinito per i trasferimenti via web e pacchetti debian in particolare. L'argomento non dovrebbe essere il motivo per cui HTTPS, dovrebbe essere perché no?
zaadeh,

1
@aalizadeh, sono d'accordo con te, c'è un sovraccarico quando si usa https, ma non c'è un enorme sovraccarico. Penso che il motivo principale per cui https non sia un trasporto predefinito è che alcune organizzazioni proibiscono esplicitamente qualsiasi traffico crittografato (poiché vogliono essere in grado di attaccare il naso a ciò che i dipendenti stanno facendo su Internet), il che significa che i repository devono supportare trasporti sia http che https. Potrebbero esserci altre considerazioni
at0S

1
L'uso di »Verify-Host" false ";« è errato, anche con certificati autofirmati. È invece necessario sensibilizzare i client al certificato (corretto) del server.
Axel Beckert,

1
Anzi, ma qui i miei clienti erano solo sistemi interni. Quindi, invece di creare tutta l'infrastruttura pki corretta, ho tagliato l'angolo. E sì, in seguito pki è stato risolto correttamente e Verify-Host false; è stato rimosso. E sì, il punto è valido.
at0S,

1
con Ubuntu Xenial i pacchetti apt vengono recuperati come _apt utente non privilegiato, puoi aggiornare questo thread con i dettagli su come hai gestito o risolto i problemi di autorizzazione dei file.
David

7

Si noti che a causa di vulnerabilità simili

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

... che elude la firma di InRelease, è probabilmente una buona idea configurare HTTPS comunque.


1
E ora anche questo: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. La firma InRelease non è sufficiente . "Ma spostare tutti i mirror su HTTPS richiederà tempo e coordinamento!". Sì. Parti ora. Questo non sarà l'ultimo errore di InRelease.
Royce Williams,

1
Ecco un altro esempio, da un diverso ecosistema - Alpino. Il suo sistema di gestione dei pacchetti non utilizza HTTPS per impostazione predefinita e si basa esclusivamente sulla firma per verificare l'integrità del pacchetto ... e tale verifica ha avuto un bug sfruttabile a distanza a settembre 2018: justi.cz/security/2018/09/13/alpine- apk-rce.html Alpine dovrebbe iniziare ora a utilizzare HTTPS per impostazione predefinita.
Royce Williams,

4

Per il caso d'uso "anonimato" esiste anche un altro apt-transport-torche consente di inserire gli URI come tor+http://nei file sources.list. Questa è una protezione molto migliore dell'anonimato rispetto alla semplice crittografia della connessione al tuo mirror.

Ad esempio, un osservatore locale saprebbe ancora che stai aggiornando o installando software anche con HTTPS e probabilmente può fare qualche ipotesi decente su quale di quelli che stai facendo (e possibilmente anche su quali pacchetti, in base alle dimensioni).

Debian fornisce repository APT tramite Tor "Onion services" in modo da poter ottenere la crittografia end-to-end (simile a TLS) senza affidarsi al sistema dei nomi di dominio. Vedi onion.debian.org per tutti i servizi Debian disponibili in questo modo. Il principale repository FTP Debian è suvwakviie2ienjx6t.onion

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.