Wie kann die Integrität und Sicherheit gewährleistet werden, indem signiertes, nicht geändertes RPM-Paket erzwungen wird?

7

Es gibt eine Möglichkeit, Dateien, die sich auf ein bestimmtes Paket beziehen, anhand des ursprünglichen RPM-Inhalts zu überprüfen:

# Verify `vsftpd` package.
rpm -V vsftpd

Wie vervollständige ich die Kette und stelle rpmsicher , dass der Befehl selbst nicht geändert wurde?

Wenn ich rpmdurch ein Skript ersetze, das immer erfolgreich ist, wird diese Art der Überprüfung niemals fehlschlagen.

uvsmtid
quelle

Antworten:

6

Dies stellt sich als ziemlich schwieriges Problem heraus, wenn Sie sich auf das einzelne System beschränken, das Sie validieren möchten.

Glücklicherweise leben wir in der realen Welt, in der es mehr als einen Computer gibt!

Einige Möglichkeiten zur Überprüfung der Binärdatei sind:

  • Verwenden Sie ein anderes Referenzsystem, auf dem dieselbe Paketversion von RPM installiert ist, und nehmen Sie einen Hash der Binärdatei und vergleichen Sie ihn auf jedem System.

    Installieren Sie das signierte Paket aus Sicherheitsgründen erneut aus den Repositorys auf dem Referenzsystem, bevor Sie den Vergleich durchführen.

    Beispiel:

    # yum reinstall rpm
    ...
    Complete!
    
    # rpm -q rpm
    rpm-4.11.3-17.el7.x86_64
    
    # sha256sum /usr/bin/rpm
    743810f3c3a9e5eea8ba9bc87351db6b4e8c6393018b9bb56beb873a64ae5431  /usr/bin/rpm
    
  • Verwenden Sie ein hostbasiertes Intrusion Detection-System wie OSSEC oder Tripwire, um unerwartete Änderungen an Ihrem Dateisystem zu erkennen. Dies garantiert natürlich nicht, dass Ihre Binärdateien unverändert sind, aber wenn es richtig gemacht wird, können Sie gewarnt werden, dass ein Angriff ausgeführt wird.

Beachten Sie, dass beide fehlschlagen, wenn die Vorverknüpfung verwendet wird. Dies ist ein Grund, warum sie auf neueren Systemen im Allgemeinen nicht mehr standardmäßig aktiviert ist.

Michael Hampton
quelle
Ich habe auch vermutet, dass der allgemeine Ansatz darin besteht, die Prüfsumme (lokal oder remote) zu verteilen. Dies macht es für Angreifer sehr schwierig, sie an allen Standorten konsistent zu ändern. Der einzelne Offline-Host ist ein echtes Problem. Wenn Kopien der Binärdatei oder ihrer Prüfsumme im Dateisystem versteckt sind, werden in regelmäßigen Software-Aktualisierungssitzungen möglicherweise nur Änderungen angezeigt. Jede Möglichkeit, die Authentizität von Paketen für proprietäre Software zu erzwingen, wird jedoch sofort als Angriff entlarvt. Alle zusätzlichen Offline-Methoden (möglicherweise etwas Sicherheit durch Dunkelheit) werden nicht lange dauern.
Uvsmtid
2
# rpm -K rpm-2.3-1.i386.rpm
rpm-2.3-1.i386.rpm: size pgp md5 OK

Von http://www.rpm.org/max-rpm/s1-rpm-checksig-using-rpm-k.html

dmourati
quelle
Woher wissen Sie, dass ich rpm nicht durch eine Binärdatei ersetzt habe, die vorgibt, alles zu validieren?
Michael Hampton
Hmm, dann ein Problem, das die Kette übertrifft. Sie müssen dies in einer vertrauenswürdigen Umgebung tun, bevor der Host manipuliert wird, und die Ergebnisse aufzeichnen, die ich vermute.
dmourati
2
Diese Anforderung wurde in der ursprünglichen Frage angegeben.
Michael Hampton