yum install http - ist das sicher?

10

Ich bin nicht sehr vertraut mit der Verwendung von yum zum Installieren von Paketen. In einem früheren Leben habe ich apt verwendet.

Derzeit sehe ich mir einige Anweisungen zum Ausführen an

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

die anscheinend ein bestimmtes Repository abonnieren, von dem weitere Pakete heruntergeladen werden können. Ist das eine sichere Sache?

Zum Vergleich weiß ich, dass apt-Pakete GPG-Signaturen haben, was bedeutet, dass Downloads über http kein Problem darstellen. Wie hier beschrieben . Wenn Sie Pakete mit apt außerhalb der Hauptrepositorys herunterladen, können Sie manuell einen GPG-Schlüssel hinzufügen, den apt akzeptiert, um sicherzustellen, dass nicht standardmäßige Pakete dieselbe vertrauenswürdige Quelle haben.

Wenn ich den obigen Befehl ausführe, werde ich Sie dann bitten, einen GPG-Schlüssel zu akzeptieren, bevor er mit der Installation beginnt, oder könnte er einfach irgendetwas installieren?

Falls es relevant ist, /etc/yum.confenthält meine Datei gpgcheck=1innerhalb des [main]Abschnitts.

SauceCode
quelle

Antworten:

11

Es gibt ein bisschen zu erklären mit Ihrer Frage.

Zunächst ist es wichtig zu verstehen, wie YUMund rpmzusammenarbeiten:

  1. RPM ist ein Paketformat und es gibt ein ähnlich benanntes Befehlszeilentool, rpmdas einzelne RPM-Pakete installiert. Sie können sich das rpmBefehlszeilentool als analog zum dpkgBefehlszeilentool vorstellen, da beide einzelne Pakete ohne ihre Abhängigkeiten installieren.
  2. yumist ein übergeordnetes Programm, das ein RPM-Paket und seine Abhängigkeiten installiert. Sie können sich den yumBefehl so analog vorstellen, apt-getwie er ein Paket und alle seine Abhängigkeiten installieren kann.
  3. Wenn Sie ausführen yum install, sollten Sie den Paketnamen und nicht die URL verwenden. Zum Beispiel: yum install packageÄhnlich wie Sie es ausführen würden : apt-get install package.
  4. Wenn Sie eine Paket-URL haben, können Sie diese ausführen rpm -i https://url. Wenn Sie jedoch die Abhängigkeiten des Pakets nicht installiert haben, müssen Sie sie entweder einzeln mit rpm -i(schmerzhaft) oder mit yumund einem konfigurierten Repository installieren .

Was GPG betrifft, gibt es einige Dinge zu verstehen, die sowohl für das Debian- als auch für das RPM-Verpackungssystem gelten. Die wichtigsten Dinge, die zu verstehen sind, sind:

  1. Beide Systeme verfügen über zwei Sätze von GPG-Signaturen: GPG-Signaturen auf den Paketen selbst und GPG-Signaturen auf den Repositorys.
  2. Bei Debian-Paketen werden die GPG-Signaturen nicht überprüft, und die offiziellen Pakete aus den Ubuntu- und Debian-Projektrepositorys sind nicht GPG-signiert.
  3. Beide Systeme sind anfällig für eine Reihe von GPG-Wiederholungsangriffen, wenn sie über Klartext-HTTP verwendet werden. Sie sollten Ihre Pakete unbedingt zu 100% über HTTPS und nicht über HTTP im Klartext installieren, wenn dies überhaupt möglich ist.

Soweit RPM- und YUM-GPG-Signaturen:

  1. Zunächst können Sie den Pfad oder die URL zum GPG-Schlüssel in der Konfigurationsdatei mit: gpgkey=https://example/gpg.keyoder angeben gpgkey=/usr/share/example/gpg.key. Sie können mehrere GPG-Schlüssel angeben, wenn mehr als 1 benötigt wird.
  2. Zweitens gibt es zwei Möglichkeiten: gpgcheck=1und repo_gpgcheck=1. Die erste Option bewirkt yum install, dass die GPG-Signatur auf dem Paket selbst überprüft wird, die zweite Option überprüft die GPG-Signatur des Repositorys. Idealerweise sollten Sie beide verwenden, aber viele Repositorys sind nicht richtig konfiguriert, um beide zu unterstützen.
  3. Das erste Mal , wenn Sie laufen yum install, yumwird versuchen , die GPG - Schlüssel bei aufgelistet zu importieren , gpgkeywenn sie noch nicht eingeführt worden. Sie werden aufgefordert, zu akzeptieren oder abzulehnen.
  4. Sie müssen das pygpgmePaket auf Ihrem System installiert haben, damit die GPG-Signaturen überprüft werden können. Bei den neuesten Versionen von RHEL und CentOS pygpgmewird automatisch eine Abhängigkeit von installiert yum, Sie sollten jedoch überprüfen, ob sie auf Ihrem System installiert ist.
  5. Es gibt kein Äquivalent zu apt-transport-https, yumkann sofort über HTTPS sprechen, aber Sie sollten sicherstellen, dass für die von yumIhnen verwendete Version die sslverifyOption standardmäßig aktiviert ist. Einige Versionen von yumtun dies nicht. Wenn Ihre Version dies nicht tut, sollten Sie sie auf aktiviert setzen. Es ist wichtig, SSL-Zertifikate zu überprüfen.

Selbst mit GPG-Signaturen sowohl auf den Paketen als auch auf den Repositorys sind Repositorys immer noch anfällig für Wiederholungsangriffe. Sie sollten nach Möglichkeit über HTTPS auf Ihre Repositorys zugreifen. Die kurze Erklärung für einen Angriff lautet, dass ein böswilliger Angreifer zu einem bestimmten Zeitpunkt Snapshot-Repository-Metadaten und die zugehörige GPG-Signatur erstellen und diese Metadaten und Signaturen einem Client wiedergeben kann, der sie anfordert, wodurch verhindert wird, dass der Client aktualisierte Pakete sieht. Da die Metadaten nicht berührt werden, ist die GPG-Signatur gültig. Der Angreifer kann dann einen Exploit gegen einen bekannten Fehler in der Software verwenden, der nicht aktualisiert wurde, um den Computer anzugreifen. Weitere Informationen zu Angriffen auf Paketmanager finden Sie in diesem Dokument .

Ich habe zwei umfangreiche Blog-Beiträge über GPG und YUM / U / min sowie GPG und APT geschrieben .

Bitte hinterlassen Sie einen Kommentar, wenn Sie weitere Fragen haben, die ich beantworten kann. Paketverwaltung ist unglaublich schwer richtig zu machen.

Joe Damato
quelle
Nett. Hier gibt es viel zu absorbieren. Eine spezielle Frage: "Wenn Sie ausführen yum install, sollten Sie den Paketnamen und nicht die URL verwenden." - Stimmen Sie zu, das würde ich normalerweise mit apt machen. Aber was würden Sie angesichts der URL tun? Vielleicht ist das offensichtlich, aber können Sie das Repo einfach manuell hinzufügen http://example.comund dann tun yum install package?
SauceCode
"Beide Systeme sind anfällig für eine Reihe von GPG-Wiederholungsangriffen, wenn sie über Klartext-HTTP verwendet werden." Interessant - können Sie hier auf eine weitere Lektüre verweisen? Und gibt es ein leckeres Äquivalent von apt-transport-https?
SauceCode
@SauceCode Ich habe meine Antwort aktualisiert, um Ihre Fragen zu beantworten und einen Link zu einem Dokument mit weiteren Sicherheitsinformationen zum Paketmanager zu erstellen.
Joe Damato
Beachten Sie, dass aptRepositorys jetzt Gültigkeitsdaten in ihren ReleaseDateien haben, wodurch die Dauer der Wiederholungsangriffe begrenzt wird. (Wenn ich mich richtig erinnere, wurde dies aufgrund des in der Antwort verlinkten Papiers implementiert.) Die Verwendung von TLS ist jedoch eine bessere Lösung!
Stephen Kitt
@StephenKitt Ja, Valid-Untilwurde hinzugefügt, um Wiederholungsangriffe zu verhindern. Es ist jedoch nicht zumutbar, Repository-Benutzer aufzufordern, die Metadaten für ein neues Repo herunterzuladen und manuell zu überprüfen, um sicherzustellen, dass der Header vorhanden ist. Es ist viel einfacher, den Leuten zu sagen, dass sie immer TLS verwenden sollen.
Joe Damato