Under Construction
Hinzufügen von Datei-Definitionen
Bei den bisherigen Beispielen wurden die Attribute für den hinzuzufügenden Datensatz über die angegebene Datei ermittelt. Es ist aber auch möglich den vollständigen Datensatz in einer Definitions-Datei zu hinterlegen und diesen Datensatz dann der TSD hinzuzufügen. Eine Ermittlung von Attributen über die Datei für welche der Datensatz hinzugefügt wird, erfolgt dann nicht. Die Attribute werden genau so wie sie in der Definitions-Datei stehen übernommen.
Die kann in einer Reihe von Situationen sehr praktisch sein:
- Die Attribute, inklusive Hash-Wert und Signatur, sind schon bekannt, z.B. von einem anderen System oder über ein Fileset oder Backup.
- Einzelne Datensätze können damit wieder hergestellt werden, auch wenn der Private-Key nicht verfügbar ist.
- Backup und Restore einzelner Datensätze ist damit leicht möglich.
Als Beispiel betrachten wir den Datensatz für das Kommando /usr/bin/ls. Dieser wurde versehentlich gelöscht:
# trustchk -d /usr/bin/ls
#
Da es sich bei /usr/bin/ls um eine dem Betriebssystem AIX zugehörige Datei handelt, gibt es keine Möglichkeit die ursprüngliche Signatur selber zu berechnen. Dafür würde die von IBM verwendete Private-Key Datei notwendig sein. Diese wird aber nicht von IBM zur Verfügung gestellt. Das würde auch das Trusted Execution System anfällig für Manipulationen machen. Der korrekte TSD-Eintrag für /usr/bin/ls kann aber leicht auf einem anderen AIX System mit dem gleichen Versionsstand ermittelt werden. Dazu muss man lediglich das Kommando „trustchk -q /usr/bin/ls“ auf diesem System ausführen:
other # trustchk -q /usr/bin/ls
/usr/bin/ls:
owner = bin
group = bin
mode = 555
type = FILE
hardlinks =
symlinks =
size = 29389
cert_tag = 49424d4149583a30344232302d30334233303a324b3a41
signature = 20e9e76eae8cad24dd57a1076f4b4f08acfdd0984960c109cddc2e5d2f3696f4404515da159fa33aedae4d7af7416a30e9d1fabe1afd6c069e42bd582304d1b2dc7f397ac93f29fd65b85f0067be46b36f09edc9ce94b43159ae79ac9ffb280969a6ece7393e07e549fc82c4d746e8c813e6aba30e398aa33381961a53b8e2db895932890caa7fdf353f8a2380dbdb095bdfe2a02d2ce38ba6a4d4dde203ab65c75727f675907756c0fc185613956b0eeef2adadb6881998e68183d77c9400455972c012393a06738f4ea178d4f46cdd5d6655c4343b0386140a4afe51335ef0e1de287637bebe82cca91b23293f2c91292b3f1bb62296b756708c46ef230940
hash_value = df389b0e52e59ea8bee03e511d10efe6f86625578f9c8d3347b5f70b45b33da9
minslabel =
maxslabel =
intlabel =
accessauths = aix.fs.object.list
innateprivs = PV_DAC_R,PV_DAC_X
inheritprivs =
authprivs =
secflags = FSF_EPS
t_innateprivs = PV_MAC_R,PV_MIC
other #
Die Ausgabe hat schon das richtige Format für die Definitions-Datei. Wir leiten daher die Ausgabe in eine Datei namens ls.def um:
other # trustchk -q /usr/bin/ls >ls.def
other #
Die so gewonnene Definitions-Datei kopieren wir dann auf das System auf dem der Eintrag fehlt (versehentlich gelöscht wurde). Der TSD-Eintrag kann dann auf diesem System ganz einfach wiederhergestellt werden, indem bei der Option „-a“ die Definitions-Datei mit der zusätzlichen Option „-f“ angegeben wird:
# trustchk -a -f ls.def
#
Hinweis: Es erfolgt an dieser Stelle keine Überprüfung ob der Eintrag korrekt ist!
Eine Überprüfung mittels „trustchk -q“ zeigt das der Eintrag wieder vorhanden ist, und mit dem Eintrag auf dem anderen System übereinstimmt:
# trustchk -q /usr/bin/ls
/usr/bin/ls:
owner = bin
group = bin
mode = 555
type = FILE
hardlinks =
symlinks =
size = 29389
cert_tag = 49424d4149583a30344232302d30334233303a324b3a41
signature = 20e9e76eae8cad24dd57a1076f4b4f08acfdd0984960c109cddc2e5d2f3696f4404515da159fa33aedae4d7af7416a30e9d1fabe1afd6c069e42bd582304d1b2dc7f397ac93f29fd65b85f0067be46b36f09edc9ce94b43159ae79ac9ffb280969a6ece7393e07e549fc82c4d746e8c813e6aba30e398aa33381961a53b8e2db895932890caa7fdf353f8a2380dbdb095bdfe2a02d2ce38ba6a4d4dde203ab65c75727f675907756c0fc185613956b0eeef2adadb6881998e68183d77c9400455972c012393a06738f4ea178d4f46cdd5d6655c4343b0386140a4afe51335ef0e1de287637bebe82cca91b23293f2c91292b3f1bb62296b756708c46ef230940
hash_value = df389b0e52e59ea8bee03e511d10efe6f86625578f9c8d3347b5f70b45b33da9
minslabel =
maxslabel =
intlabel =
accessauths = aix.fs.object.list
innateprivs = PV_DAC_R,PV_DAC_X
inheritprivs =
authprivs =
secflags = FSF_EPS
t_innateprivs = PV_MAC_R,PV_MIC
#
Man sollte dann auch sofort überprüfen ob die Datei /usr/bin/ls mit dem TSD-Eintrag übereinstimmt:
# trustchk -n /usr/bin/ls
#