yum installa http - è sicuro?


10

Non ho molta familiarità con l'utilizzo di yum per installare i pacchetti. In una vita precedente ho usato apt.

Attualmente, sto cercando alcune istruzioni per l'esecuzione

# yum install http://example.com/package.rpm

che apparentemente si abbonerà a un particolare repository, dal quale è possibile scaricare ulteriori pacchetti. È una cosa sicura da fare?

Per fare un confronto, so che i pacchetti apt hanno firme gpg, il che significa che i download su http non sono un problema. Come descritto qui . E quando si scaricano pacchetti al di fuori dei repository principali con apt, è possibile aggiungere manualmente una chiave gpg affinché apt accetti, per assicurarsi che tutti i pacchetti non standard abbiano la stessa fonte attendibile.

Se eseguo il comando sopra, yum mi chiederà di accettare una chiave gpg prima che inizi a installare le cose o potrebbe semplicemente installare qualcosa?

Nel caso sia rilevante, il mio /etc/yum.conffile contiene gpgcheck=1all'interno della [main]sezione.

Risposte:


11

C'è qualcosa da spiegare con la tua domanda.

Innanzitutto, è importante capire come YUMe rpmlavorare insieme:

  1. RPM è un formato pacchetto e esiste uno strumento da riga di comando con nome simile rpmche installa singoli pacchetti RPM. Puoi pensare allo rpmstrumento da riga di comando come analogo allo dpkgstrumento da riga di comando, poiché entrambi installano i singoli pacchetti senza le loro dipendenze.
  2. yumè un programma di livello superiore che installa un pacchetto RPM e le sue dipendenze. Puoi pensare al yumcomando come analogo a apt-getcome entrambi possono installare un pacchetto e tutte le sue dipendenze.
  3. Quando esegui yum install, dovresti usare il nome del pacchetto, non l'URL. Ad esempio: yum install package, simile a come si dovrebbe eseguire: apt-get install package.
  4. Se disponi di un URL del pacchetto, puoi eseguirlo rpm -i https://url, ma se non hai installato le dipendenze del pacchetto, dovrai installarle una per una con rpm -i(doloroso) o con yume un repository configurato.

Ora, per quanto riguarda GPG, ci sono alcune cose da capire che si applicano sia ai sistemi di packaging Debian che RPM, ma le cose più importanti da capire sono:

  1. Entrambi i sistemi hanno 2 set di firme GPG: firme GPG sui pacchetti stessi e firme GPG sui repository.
  2. I pacchetti Debian non hanno le firme GPG controllate e i pacchetti ufficiali dei repository di progetti Ubuntu e Debian non sono firmati GPG.
  3. Entrambi i sistemi sono vulnerabili a una serie di attacchi di replay GPG se utilizzati su HTTP in chiaro; dovresti assolutamente installare i tuoi pacchetti al 100% tramite HTTPS e , se possibile, non HTTP in testo normale.

Per quanto riguarda le firme GPG RPM e YUM:

  1. Innanzitutto, è possibile specificare il percorso o l'URL della chiave GPG nel file di configurazione con: gpgkey=https://example/gpg.keyo gpgkey=/usr/share/example/gpg.key. È possibile specificare più chiavi GPG, se è necessario più di 1.
  2. In secondo luogo, ci sono due opzioni: gpgcheck=1e repo_gpgcheck=1. La prima opzione provoca la yum installverifica della firma GPG sul pacchetto stesso, la seconda opzione verifica la firma GPG del repository. Idealmente, dovresti usare entrambi, ma molti repository non sono configurati correttamente per supportare entrambi.
  3. La prima volta che eseguirai yum install, yumtenterai di importare le chiavi GPG elencate gpgkeyse non sono state ancora importate. Ti verrà richiesto e ti verrà chiesto di accettare o rifiutare.
  4. È necessario che il pygpgmepacchetto sia installato sul sistema per verificare le firme GPG. Nelle versioni più recenti di RHEL e CentOS pygpgmeviene installata automaticamente una dipendenza di yum, ma è necessario verificare che sia installato sul sistema.
  5. Non esiste un equivalente di apt-transport-https, yumpuò parlare su HTTPS immediatamente, ma è necessario assicurarsi che la versione di cui yumsi sta utilizzando abbia l' sslverifyopzione predefinita abilitata; alcune versioni di yumno. In caso contrario, è necessario impostarlo su abilitato. È fondamentale verificare i certificati SSL.

Anche con le firme GPG sia sui pacchetti che sui repository, i repository sono ancora vulnerabili agli attacchi di replay; dovresti accedere ai tuoi repository su HTTPS se possibile. La breve spiegazione di un attacco è che un utente malintenzionato può eseguire l'istantanea dei metadati del repository e della firma GPG associata in un determinato momento e riprodurre i metadati e la firma su un client che lo richiede, impedendo al client di vedere i pacchetti aggiornati. Poiché i metadati non vengono toccati, la firma GPG sarà valida. L'aggressore può quindi utilizzare un exploit contro un bug noto nel software che non è stato aggiornato per attaccare la macchina. Puoi leggere ulteriori informazioni sugli attacchi ai gestori di pacchetti in questo documento .

Ho scritto due ampi post sul blog su GPG e YUM / rpm , nonché GPG e APT .

Si prega di lasciare un commento se avete ulteriori domande a cui posso rispondere; la gestione dei pacchetti è incredibilmente difficile da eseguire correttamente.


Bello. C'è molto da assorbire qui. Una domanda specifica: "Quando esegui yum install, dovresti usare il nome del pacchetto, non l'URL." - D'accordo, questo è quello che normalmente farei con apt. Ma dato l'URL, cosa faresti? Forse questo è ovvio, ma puoi semplicemente aggiungere manualmente il repository http://example.come poi farlo yum install package?
SauceCode

"Entrambi i sistemi sono vulnerabili a una serie di attacchi di replay GPG se utilizzati su HTTP in chiaro". Interessante: puoi indicare ulteriori letture qui? E c'è un equivalente di yum di apt-transport-https?
SauceCode

@SauceCode Ho aggiornato la mia risposta per rispondere alle tue domande e collegarmi a un documento con ulteriori informazioni sulla sicurezza del gestore pacchetti.
Joe Damato,

Si noti che i aptrepository ora hanno date di validità nei loro Releasefile, il che limita il periodo di tempo in cui gli attacchi di replay rimangono validi. (Se ricordo bene questo è stato implementato come risultato del documento collegato nella risposta.) Ma usare TLS è una soluzione migliore!
Stephen Kitt,

@StephenKitt Sì, è Valid-Untilstato aggiunto per prevenire gli attacchi di riproduzione. tuttavia, è irragionevole chiedere agli utenti del repository di scaricare i metadati per un nuovo repository e controllarli manualmente per assicurarsi che sia presente l'intestazione. Molto più semplice dire alle persone di usare sempre TLS.
Joe Damato,
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.