Die Solaris Fingerprint Database - Neuauflage in Solaris 11

Einige erinnern sich sicher an die Solaris Fingerprint Database. Sie war eine hervoragende Moeglichkeit, um die Integritaet eines Solaris Binaries zu pruefen.  Leider wurde sie zusammen mit dem Rest von Sunsolve abgeschaltet und im Nachfolger "My Oracle Support" nicht wieder in Betrieb genommen.  Die gute Nachricht nun ist:   In Solaris 11 gibt es sie wieder, und besser als jemals zuvor!

Um die alte Datenbank zu benutzen, musste man den MD5 Fingerprint eines Binaries auf der Webseite der Datenbank eingeben und pruefen.  Es gab zwar ein Tool fuer die Massenpruefung, aber umstaendlich war das allemal.

In Solaris 11 ist alles das in den Paket-Manifesten von IPS integriert.  Diese Manifeste enthalten u.A. die SHA1 and ggf. ELF Hashes aller Binaries und Scripte, die in dem jeweiligen Paket enthalten sind.  Damit ist eine manuelle Pruefung bereits moeglich.  IPS geht aber weiter und stellt auch eine Methode zur Verfuegung, mit der die Integritaet der gesamten Installation geprueft werden kann.  Hier einige Beispiele, was damit moeglich ist:

  • Was ist der SHA1 Fingerprint eines Binaries?
    digest -a sha1 /usr/bin/vim
  • Aus welchem Paket stammt es?
    pkg search -f $(digest -a sha1 /usr/bin/vim)
    (Die Option "-f" braucht man, damit das Paket auch dann gefunden wird, wenn das Binary aus einer aelteren Version stammt.)
  • Gibt es noch mehr Details?
    pkg info -r $(pkg search -f -H -o pkg.fmri $(digest -a sha1 /usr/bin/vim))

Falls das alles funktioniert hat, ist das die Bestaetigung, dass das Binary, in diesem Fall "vim" gueltig ist und aus dem Paket "vim-core" stammt.

Die Daten fuer diese Pruefungen liefert der im System konfigurierte Publisher.  Welcher das ist, kann mit dem Kommando "pkg publisher" nachgesehen werden.  Eine typische Ausgabe waere dabei:

PUBLISHER TYPE STATUS URI
solaris origin online https://pkg.oracle.com/solaris/support/

Natuerlich kann man einen einzelnen SHA1 Digest auch direkt auf der Webseite des Publishers nachschlagen.  Das geht direkt im Browser auf der URL des Publishers.  Ganz aehnlich hatte das auch mit der alten Fingerprint Database funktioniert.  IPS kann allerdings noch sehr viel mehr als das:

Mit dem Kommando "pkg verify" kann man jedes einzelne installierte Paket gegen das entsprechende Repository pruefen lassen.  Je nachdem, um was fuer Dateien es sich handelt (Binary, Script, Konfigurationsdatei), werden dabei unterschiedliche Verfahren angewandt:

  • Binaries werden mittels eines ELF Hashes geprueft.
  • Scripts dagegen mit ihrem SHA1 Hash.
  • Konfigurationsdateien koennen, ihrem Wesen entsprechend, nicht geprueft werden.  Sie sind ja gerade dazu gedacht, von einem Administrator veraendert zu werden.
  • Darueber hinaus werden auch Besitzer, Gruppe und Rechte aller Dateien geprueft.

Die Ausgabe von "pkg verify" wird jede Abweichung von den Vorgaben aus dem Paket-Manifest melden.  Damit werden z.B. veraenderte Scripte oder Binaries oder geaenderte Ausfuehrungsrechte aufgedeckt.  Diese Pruefung kann man gegen die gesamte Installation, aber auch fuer ein einzelnes Paket durchfuehren lassen.  Je nach Ergebnis kann man dann entscheiden, wie weiter verfahren werden soll:

  • Nichts tun
  • Abweichungen von Hand reparieren, bspw. weil man weiss, wie sie zustande gekommen sind.
  • Die Abweichungen automatisch durch das Paketsystem reparieren lassen.

Diese letzte Moeglichkeit ist in diesem Zusammenhang das eigentliche "Power Feature" von IPS.  Da das Paketsystem genau weiss, wie die Dinge sein sollten kann man es auffordern, diesen definierten Zustand wieder herzustellen.  Im Vergleich zu den Moeglichkeiten von BART und der Fingerprint Database ein enormer Fortschritt.

Insgesamt kann IPS damit eine bestehende Installation mit den Originaldaten des verwendeten Repositories vergleichen.  Die Integritaet des Repositories selbst muss jedoch zusaetzlich gesichert werden.  Beim "Master Repository" wird dies durch Oracle sichergestellt.  Die Pakete selbst, genauso wie die Binaries, sind kryptographisch signiert.  Bei einem eigenen, lokalen Repository sollte man das ISO-Image mittels der bereitgestellten SHA1/MD5 Fingerprints pruefen, bevor man das Repository aufbaut.  Fuer den Schutz desselben ist man dann selbst zustaendig - BART hilft hier ggf. weiter.

Zum Schluss noch ein kleines Beispiel fuer all die erwaehnten Dinge:

 root@benjaminchen:/usr/bin# ls -l vim

-r-xr-xr-x   1 root     bin      2225532 Feb 23 14:31 vim
root@benjaminchen:/usr/bin# digest -a sha1 vim
f2495fa19fcc4b8a403e0bd4fef809d031296c68
root@benjaminchen:/usr/bin# pkg search -f f2495fa19fcc4b8a403e0bd4fef809d031296c68
INDEX                                    ACTION VALUE       PACKAGE
f2495fa19fcc4b8a403e0bd4fef809d031296c68 file   usr/bin/vim pkg:/editor/vim/vim-core@7.3.254-0.175.0.0.0.2.537
root@benjaminchen:/usr/bin# pkg verify -v vim-core
PACKAGE                                                                                                    STATUS
pkg://solaris/editor/vim/vim-core                                           OK
root@benjaminchen:/usr/bin# cp vim vim.org
root@benjaminchen:/usr/bin# cp ls vim
root@benjaminchen:/usr/bin# pkg verify -v vim-core
PACKAGE                                                                 STATUS 
pkg://solaris/editor/vim/vim-core                                        ERROR
    file: usr/bin/vim
        Elfhash: 20acbb006d5331660dc026483533c29137318673 should be f301bd9d798c4bdd8edebb001fbf4317380383a9
root@benjaminchen:/usr/bin# pkg fix --accept vim-core
Verifying: pkg://solaris/editor/vim/vim-core                    ERROR          
    file: usr/bin/vim
        Elfhash: 20acbb006d5331660dc026483533c29137318673 should be f301bd9d798c4bdd8edebb001fbf4317380383a9
Created ZFS snapshot: 2012-02-29-09:27:49
Repairing:
 pkg://solaris/editor/vim/vim-core                 
                                                                             
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                  1/1         1/1      0.8/0.8
PHASE                                        ACTIONS
Update Phase                                     1/1 
PHASE                                          ITEMS
Image State Update Phase                         2/2 
 root@benjaminchen:/usr/bin# ls -l vim vim.org
-r-xr-xr-x   1 root     bin      2225532 Feb 29 10:28 vim
-r-xr-xr-x   1 root     root     2225532 Feb 29 10:27 vim.org
root@benjaminchen:/usr/bin# digest -a sha1 vim
f2495fa19fcc4b8a403e0bd4fef809d031296c68
Kommentare:

Senden Sie einen Kommentar:
Kommentare sind ausgeschaltet.
About

Neuigkeiten, Tipps und Wissenswertes rund um SPARC, CMT, Performance und ihre Analyse sowie Erfahrungen mit Solaris auf dem Server und dem Laptop.

This is a bilingual blog (most of the time). Please select your prefered language:
.
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Search

Categories
Archives
« April 2014
MoDiMiDoFrSaSo
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Heute