Come usare https con apt-get?


51

Non apt-getusare https o qualsiasi tipo di crittografia? C'è un modo per configurarlo per usarlo?


3
Nota che a causa di vulnerabilità come bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ... che aggira la firma di InRelease, è probabilmente una buona idea configurare HTTPS comunque.
Royce Williams,

whydoesaptnotusehttps.com è una pagina Web che risponde in modo preciso e completo a questa domanda.
m.raynal,

1
C'è una ragione più banale per cui questo sarebbe utile. Sono spesso su una connessione Internet con un proxy "trasparente" rotto che tende a bloccare alcuni download deb (probabilmente attivano uno stupido blocco malware). Ma su https, il proxy non sa cosa sto scaricando e quindi non interferisce.
Nate Eldredge,

Risposte:


53

apt-get(e altri comandi di manipolazione dei pacchetti, che sono un front-end per le stesse librerie APT) possono usare HTTP, HTTPS e FTP (e filesystem montati). Se si specificano gli https://URL in /etc/apt/sources.liste /etc/apt/sources.list.d/*, quindi APT utilizzerà HTTPS.

APT verifica la firma dei pacchetti. Quindi non è necessario disporre di una forma di trasporto che fornisca l'autenticazione dei dati. Se un utente malintenzionato modifica i file che stai scaricando, questo verrà notato. Usare una verifica della firma è meglio che usare una connessione HTTPS, perché rileverà un attacco al server da cui stai scaricando, non solo un attacco in transito.

Più precisamente, il flusso di dati (semplificato) per un pacchetto è il seguente:

  1. Il pacchetto viene prodotto su una macchina build.
  2. Il pacchetto è firmato sulla macchina di compilazione.
  3. Il pacchetto firmato viene copiato in un mirror di download.
  4. Scarica il pacchetto.

HTTPS garantisce che il passaggio 4 si svolga correttamente. Le firme del pacchetto assicurano che i passaggi da 2 a 4 si svolgano correttamente.

In effetti, HTTPS presenta un piccolo vantaggio per il passaggio 4: le firme del pacchetto assicurano solo che il pacchetto sia autentico. Un utente malintenzionato nel passaggio 4 potrebbe impersonare un server legittimo e servire versioni obsolete del pacchetto. Ad esempio, l'attaccante potrebbe impedirti di scaricare eventuali aggiornamenti di sicurezza, nella speranza di sfruttare una vulnerabilità sul tuo computer che avresti patchato se non fosse stato per l'attacco. Questo non è uno scenario molto realistico, perché richiede un attaccante attivo (quindi dovrebbe essere qualcuno che controlla la tua connessione Internet), ma potrebbe accadere in linea di principio.

L'altro vantaggio di HTTPS sarebbe se stai cercando di nascondere il fatto che stai scaricando i pacchetti Ubuntu da qualcuno che fa la ficcanaso sulla tua connessione di rete. Anche in questo caso, l'ascoltatore poteva vedere a quale host ti stai collegando; se ti connetti a un mirror Ubuntu e scarichi centinaia di megabyte, è chiaro che stai scaricando i pacchetti Ubuntu. L'ascoltatore potrebbe anche principalmente capire quali pacchetti stai scaricando dalla dimensione dei file. Quindi HTTPS sarebbe utile solo se stai scaricando da un server che offre anche altri file di dimensioni simili - non vedo alcun punto tranne i pacchetti di terze parti, e solo in circostanze molto insolite.

Per ribadire: il solito vantaggio di HTTPS, ovvero che sai di essere connesso al vero server, è inutile quando scarichi i pacchetti Ubuntu. La verifica della firma sui pacchetti offre una garanzia più forte di quella che HTTPS può fornire.


11
Non è che sia meno sicuro, è che è meno rilevante per quello che stai cercando di proteggere. Con APT, crittografare i contenuti della tua transazione non è così importante, perché ciò che stai scaricando è molto controverso: sono solo gli stessi pacchetti Ubuntu che molte persone scaricano. Ma ciò che è importante è garantire che i file man mano che li ricevi non siano stati manomessi.
thomasrutter,

3
Alcune settimane fa ho provato a cambiare le fonti in https e semplicemente non ha funzionato, apt-get updateavrebbe segnalato un errore quando si tentava di accedere ai collegamenti. Con ppas: lo stesso. Qualcuno l'ha provato?
Strapakowsky,

8
Il repository (server di aggiornamento) deve supportare https / SSL affinché funzioni. Il principale archive.ubuntu.com no . Puoi controllare nel tuo browser se un server lo supporta prefissando https: // all'URL e vedendo se ottieni un elenco di directory, ecc.
ish

7
"Un utente malintenzionato nel passaggio 4 potrebbe impersonare un server legittimo e servire versioni obsolete del pacchetto." In realtà, proteggiamo da ciò dando una data di scadenza alle informazioni sul pacchetto. APT avviserà dopo questa data che il tuo mirror è stantio.
tumbleweed,

4
Ecco un elenco di tutti i 15 mirror che supportano HTTPS insieme a uno script che genera l'elenco: pastebin.com/QY2TQ1dq
Shnatsel

13

Con APT, in genere ciò che è più importante non è che la tua connessione sia crittografata, ma che i file che stai ricevendo non siano stati manomessi.

APT ha una verifica della firma integrata per garantire ciò.

La crittografia impedirebbe agli intercettatori di vedere ciò che stai scaricando, ma ciò che stai effettivamente scaricando (e richiedendo) è abbastanza controverso: sarà lo stesso di quello che stanno scaricando migliaia di altri utenti Ubuntu e i file non contengono nulla che non sia t liberamente disponibile su molti server. Tuttavia, se hai bisogno di privacy su quali pacchetti in particolare stai scaricando, puoi usare HTTPS (specificalo nel tuo elenco di fonti).

La verifica della firma integrata in APT assicurerà che i file ricevuti non siano stati manomessi. Non importa da dove provengono i file ed è anche possibile avere proxy o proxy inversi tra te e il server per ridurre il carico del server o accelerare. La verifica della firma garantisce comunque che stai ottenendo il file non modificato, abbinando la firma che potrebbe essere prodotta solo crittograficamente con il file originale e una copia della chiave privata di Ubuntu.

Se passi a HTTPS, non sarai in grado di sfruttare i server proxy per accelerare l'accesso o ridurre il carico. E non aggiungerebbe ulteriori garanzie di non manomissione che la verifica della firma di APT non fornisce già. Ciò significherebbe, tuttavia, che gli intercettatori (come il tuo ISP) non saranno in grado di vedere quali pacchetti stai scaricando (che non è probabile che siano confidenziali e, come ha sottolineato Gilles, potrebbero indovinare dalla dimensione del file).


3
HTTPS non garantirà molta privacy, poiché la dimensione dei file è visibile. In effetti, l'HTTPS presenta un piccolo vantaggio, ovvero che garantisce che un utente malintenzionato che controlla la connessione di rete non possa inserire silenziosamente dati non aggiornati. È un po 'inverosimile.
Gilles 'SO- smetti di essere malvagio' il

6
Punti buoni. Per "dati non aggiornati" presumo che tu intenda una configurazione man-in-the-middle che crea una versione del mirror di Ubuntu composta da versioni leggermente precedenti, ma ancora inalterata da ciò che Ubuntu aveva firmato in quel momento.
thomasrutter,

5
Sì è quello. Non esitate a sottolineare se sono un po 'gergo: devo tenere presente che si tratta di Ask Ubuntu e non di Information Security .
Gilles 'SO- smetti di essere malvagio' il

Sembra esserci un grosso buco in apt - quando tu apt updatee c'è un uomo nel mezzo che ti fornisce indici fasulli, apt prende felicemente qualunque cosa ti dia l'uomo nel mezzo e lo scrive in / var / lib / apt / lists. Questo non è solo con un uomo malvagio nel mezzo, ma come se tu fossi sul WiFi dell'hotel e venissi reindirizzato a una pagina di accesso, se corri apt updateprima di aver effettuato l'accesso, le tue liste / var / lib / apt / verranno spazzate via con l'homepage dell'hotel HTML. BOGUS! In ogni caso, il controllo del certificato TLS di base lo escluderebbe immediatamente.
Marius,

@Marius questo non dovrebbe essere possibile a causa della verifica, che copre gli elenchi e i pacchetti. Se l'hai riprodotto con un'installazione Apt standard, devi segnalarlo al manutentore.
thomasrutter,

1

Le versioni APT recenti hanno il supporto TLS integrato, quindi è sufficiente sostituire gli URL mirror del repository di pacchetti con httpsquelli preimpostati. Per Debian, potrebbe apparire così:

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

Questo è utile, anche se APT include il proprio protocollo di firma per garantire che i pacchetti non vengano manomessi, poiché possono esserci dei bug in APT (come sono stati: CVE-2016-1252 , CVE-2019-3462 ). I protocolli HTTP / TLS e le loro cifre sono soggetti a un attento controllo, quindi una grave vulnerabilità a zero-day è molto meno probabile se si aggiunge questo livello di sicurezza.


Oops, mi rendo conto solo ora che questo sito è Chiedi a Ubuntu. :) Non sono riuscito a trovare una soluzione CDN simile per Ubuntu.
Leif Arne Storset,

0

Penso che questa domanda potrebbe usare una risposta con le istruzioni per il profano, quindi ...

APT non utilizza ancora HTTPS per impostazione predefinita nelle build quotidiane di Ubuntu 19.10 (Eoan) (che è ancora in fase di sviluppo). È possibile verificarlo esaminando il file /etc/apt/sources.list e notando che tutti gli URL di origine utilizzano lo schema URL "http:".

Per configurarlo per utilizzare HTTPS, è possibile seguire le seguenti istruzioni:

Innanzitutto , trova un mirror dell'archivio Ubuntu ufficiale affidabile che supporti HTTPS:

  1. Passare alla pagina Web degli archivi ufficiali per Ubuntu .
  2. Nella tabella di quella pagina Web, identifica i mirror che sono (A) ospitati su siti Web che ritieni affidabili, (B) hanno un mirror "http:" e, facoltativamente, (C) soddisfano la vicinanza geografica, la velocità del server e l'aggiornamento preferenze di freschezza.
  3. Nella tabella in quella pagina Web, fare clic su un collegamento "http" di un mirror identificato nel passaggio (2) per visitare la versione "http:" del mirror.
  4. Nella barra degli indirizzi del browser, modifica manualmente "http:" nell'URL della pagina web in "https:".
  5. Passare nuovamente al mirror (tramite l'URL "https:") per vedere se si risolve.

Ad esempio, ritengo affidabile la Wikimedia Foundation, quindi ho visitato l' URL http://mirrors.wikimedia.org/ubuntu/ mirror e successivamente l'ho cambiato in https://mirrors.wikimedia.org/ubuntu/ , che si risolve correttamente.

Se usi Firefox (67.0.4) e l' estensione HTTPS Everywhere (2019.6.27) è installata con la funzione "Encrypt All Sites Eligible" abilitata (tramite il pannello dei pulsanti della barra degli strumenti), i passaggi (4) e (5) possono essere omessi perché l'estensione modificherà automaticamente l'URL per utilizzare HTTPS, consentendo a uno di determinare immediatamente se la versione "https:" dell'URL verrà risolta.

Due , aggiorna il tuo elenco di fonti APT:

  1. Eseguire il comando sudo cp /etc/apt/sources.list /etc/apt/sources.list.backupper eseguire il backup dell'elenco delle fonti di aggiornamento.
  2. Sostituisci l'URL di base del mirror — mostrato qui come https://mirrors.wikimedia.org — nel comando sudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.listcon l' URL di base del mirror del tuo mirror preferito e, quindi, esegui il comando.

In terzo luogo , dovresti esaminare il contenuto della directory /etc/apt/sources.list.d/ per le fonti "http:" che potrebbero essere cambiate in "https:" dopo aver installato il software al di fuori dell'archivio Ubuntu.

Ad esempio, il pacchetto Codice Visual Studio di Microsoft aggiunge un file vscode.list a questa directory che specifica un URL "http:". La semplice modifica dello schema URL da "http:" a "https:" consente gli aggiornamenti su HTTPS.

Prendi in considerazione il backup di tali file di origine prima di modificarli.

Infine , esegui un aggiornamento per assicurarti che gli aggiornamenti funzionino correttamente:

  1. Esegui il sudo apt-get updatecomando.
  2. Se il problema persiste, ripristinare i file dell'elenco di origini di backup creati eseguendo il sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listcomando.

Vale anche la pena notare che esiste un pacchetto apt-transport-https per aggiungere il supporto HTTPS ad APT. Tuttavia, questo pacchetto non è apparentemente necessario secondo la pagina web https://launchpad.net/ubuntu/eoan/+package/apt-transport-https e non è necessario dall'APT 1.5 secondo le informazioni mostrate dopo aver eseguito il comando apt-cache show apt-transport-https.

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.