yum install http - est-ce sûr?

10

Je ne suis pas très familier avec l'utilisation de yum pour installer des paquets. Dans une vie antérieure, j'utilisais apt.

Actuellement, je regarde quelques instructions pour exécuter

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

qui, apparemment, s'abonnera à un référentiel particulier, à partir duquel d'autres packages peuvent être téléchargés. Est-ce une chose sûre à faire?

À titre de comparaison, je sais que les packages apt ont des signatures gpg, ce qui signifie que les téléchargements via http ne sont pas un problème. Comme décrit ici . Et lorsque vous téléchargez des packages en dehors des référentiels principaux avec apt, vous pouvez ajouter manuellement une clé gpg pour apt à accepter, pour vous assurer que tous les packages non standard ont la même source de confiance.

Si j'exécute la commande ci-dessus, yum me demandera-t-il d'accepter une clé gpg avant de commencer à installer des choses, ou pourrait-il simplement installer quelque chose?

Dans le cas où cela est pertinent, mon /etc/yum.conffichier contient gpgcheck=1à l'intérieur de la [main]section.

SauceCode
la source

Réponses:

11

Il y a un peu à expliquer avec votre question.

Tout d'abord, il est important de comprendre comment YUMet rpmtravailler ensemble:

  1. RPM est un format de package et il existe un outil de ligne de commande nommé de façon similaire rpmqui installe les packages RPM individuels. Vous pouvez considérer l' rpmoutil de ligne de commande comme analogue à l' dpkgoutil de ligne de commande car les deux installent des packages individuels sans leurs dépendances.
  2. yumest un programme de niveau supérieur qui installe un package RPM et ses dépendances. Vous pouvez considérer la yumcommande comme analogue apt-getcar les deux peuvent installer un package et toutes ses dépendances.
  3. Lorsque vous exécutez, yum installvous devez utiliser le nom du package, pas l'URL. Par exemple: yum install package, semblable à la façon dont vous courriez: apt-get install package.
  4. Si vous avez une URL de package, vous pouvez l'exécuter rpm -i https://url, mais si vous n'avez pas installé les dépendances du package, vous devrez les installer une par une avec rpm -i(douloureux) ou avec yumet un référentiel configuré.

Maintenant, en ce qui concerne GPG, il y a quelques choses à comprendre qui s'appliquent aux systèmes de conditionnement Debian et RPM, mais les choses les plus importantes à comprendre sont:

  1. Les deux systèmes ont 2 ensembles de signatures GPG: les signatures GPG sur les packages eux-mêmes et les signatures GPG sur les référentiels.
  2. Les paquets Debian n'ont pas leurs signatures GPG vérifiées et les paquets officiels des référentiels de projets Ubuntu et Debian ne sont pas signés GPG.
  3. Les deux systèmes sont vulnérables à une gamme d'attaques de relecture GPG lorsqu'ils sont utilisés sur HTTP en texte clair; vous devez absolument installer à 100% vos packages via HTTPS et pas du texte brut HTTP si possible.

En ce qui concerne les signatures RPM et YUM GPG:

  1. Tout d'abord, vous pouvez spécifier le chemin ou l'URL de la clé GPG dans le fichier de configuration avec: gpgkey=https://example/gpg.keyou gpgkey=/usr/share/example/gpg.key. Vous pouvez spécifier plusieurs clés GPG, si plus d'une clé est nécessaire.
  2. Deuxièmement, il existe deux options: gpgcheck=1et repo_gpgcheck=1. La première option permet yum installde vérifier la signature GPG sur le package lui-même, la deuxième option vérifie la signature GPG du référentiel. Idéalement, vous devez utiliser les deux, mais de nombreux référentiels ne sont pas correctement configurés pour prendre en charge les deux.
  3. La première fois que vous exécutez yum install, yumtentera d'importer les clés GPG répertoriées à gpgkeysi elles n'ont pas encore été importées. Vous serez invité et invité à accepter ou à refuser.
  4. Vous devez avoir pygpgmeinstallé le package sur votre système pour que les signatures GPG soient vérifiées. Sur les versions les plus récentes de RHEL et CentOS pygpgmeest automatiquement installé une dépendance de yum, mais vous devez vérifier qu'il est installé sur votre système.
  5. Il n'y a pas d'équivalent de apt-transport-https, yumpeut parler sur HTTPS hors de la boîte, mais vous devez vous assurer que la version que yumvous utilisez a l' sslverifyoption par défaut activée; certaines versions de yumne le font pas. Si votre version ne fonctionne pas, vous devez la définir sur activé. Il est essentiel de vérifier les certificats SSL.

Même avec des signatures GPG sur les packages et les référentiels, les référentiels sont toujours vulnérables aux attaques de réexécution; vous devez accéder à vos référentiels via HTTPS si possible. La courte explication d'une attaque est qu'un attaquant malveillant peut prendre un instantané des métadonnées du référentiel et de la signature GPG associée à un moment particulier et rejouer ces métadonnées et la signature à un client qui en fait la demande, empêchant le client de voir les packages mis à jour. Étant donné que les métadonnées ne sont pas touchées, la signature GPG sera valide. L'attaquant peut alors utiliser un exploit contre un bogue connu du logiciel qui n'a pas été mis à jour pour attaquer la machine. Vous pouvez en savoir plus sur les attaques contre les gestionnaires de packages dans ce document .

J'ai écrit deux articles de blog complets sur GPG et YUM / rpm ainsi que GPG et APT .

Veuillez laisser un commentaire si vous avez des questions supplémentaires auxquelles je peux répondre; la gestion des packages est incroyablement difficile à faire correctement.

Joe Damato
la source
Agréable. Il y a beaucoup à absorber ici. Une question spécifique: "Lorsque vous exécutez, yum installvous devez utiliser le nom du package, pas l'URL." - D'accord, c'est ce que je ferais normalement avec apt. Mais compte tenu de l'URL, que feriez-vous? C'est peut-être évident, mais pouvez-vous simplement ajouter manuellement le dépôt http://example.comet ensuite le faire yum install package?
SauceCode
"Les deux systèmes sont vulnérables à une gamme d'attaques de rejeu GPG lorsqu'ils sont utilisés sur HTTP en texte clair". Intéressant - pouvez-vous indiquer d'autres lectures ici? Et y a-t-il un équivalent yum de apt-transport-https?
SauceCode
@SauceCode J'ai mis à jour ma réponse pour répondre à vos questions et créer un lien vers un document contenant plus d'informations sur la sécurité du gestionnaire de paquets.
Joe Damato
Notez que les aptréférentiels ont désormais des dates de validité dans leurs Releasefichiers, ce qui limite la durée de validité des attaques par relecture. (Si je me souviens bien, cela a été mis en œuvre à la suite du document lié à la réponse.) Mais l'utilisation de TLS est une meilleure solution!
Stephen Kitt
@StephenKitt Oui, a Valid-Untilété ajouté pour empêcher les attaques par rejeu. cependant, il n'est pas raisonnable de demander aux utilisateurs du référentiel de télécharger les métadonnées d'un nouveau référentiel et de l'inspecter manuellement pour s'assurer que l'en-tête est présent. Il est beaucoup plus facile de dire aux gens de toujours utiliser TLS.
Joe Damato