Im Rahmen der BSI Zertifizierung wird unter Punkt M 4.93 eine regelmäßige Integritätsprüfung gefordert.
Textauszug : Verantwortlich für Initiierung: Leiter IT, IT-Sicherheitsmanagement Verantwortlich für Umsetzung: Administrator
Eine regelmäßige Kontrolle des Dateisystems auf unerwartete Veränderungen hilft dabei, Inkonsistenzen zu erkennen. Dadurch können auch Angriffe zeitnah entdeckt werden. Sollte tatsächlich ein Angriff vorliegen, ist es wichtig, das Vorgehen des Angreifers zu rekonstruieren. Dies dient einerseits dazu, sicherzustellen, dass die Benutzer nicht auf verfälschte Daten zurückgreifen, andererseits dazu, verborgene Hintertüren zu erkennen, die ein Angreifer für einen späteren Zugriff auf den Rechner installiert haben könnte. Dazu können Programme genutzt werden, die kryptographische Prüfsummen über einen Großteil der Dateien des Dateisystems berechnen. Unter Unix bieten z. B. Programme wie tripwire oder aide diese Funktionalität. Vergleichbare Programme sind auch für alle anderen verbreiteten Betriebssysteme verfügbar, z.B. für Windows 2000 / Windows XP das Tool „File Checksum Integrity Verifier“ (FCIV.EXE), das von Microsoft im Internet kostenlos zur Verfügung gestellt wird. Tripwire und ähnliche Programme können jede Veränderung am Dateisystem feststellen, da die Prüfsummen bei einer Veränderung nicht mehr übereinstimmen. Dabei testen sie meist nicht nur, ob die Datei selbst modifiziert wurde, sondern auch eine Veränderung der Zugriffsrechte oder ein Löschen mit anschließendem Zurückspielen wird festgestellt. Mit einer speziellen Einstellung kann in vielen Fällen auch ein nur lesender Zugriff auf die Datei bemerkt werden. Neben dem Dateisystem sollte es auch möglich sein, weitere wichtige Elemente der Systemkonfiguration (beispielsweise unter Windows die Registry) einer Integritätsprüfung zu unterziehen. Um zu verhindern, dass das Programm oder die Prüfsummendatei von einem Angreifer verfälscht werden können, sollten sich diese auf einem Datenträger befinden, der wahlweise nur einen lesenden Zugriff gestattet. Allerdings muss die Prüfsummendatei bei Veränderungen am Dateisystem ebenfalls geändert werden, so dass sich bei kleinen Dateisystemen Disketten, bei größeren Wechselplatten empfehlen. Eine Integritätsprüfung sollte regelmäßig, beispielsweise jede Nacht, durchgeführt werden. Eine Benachrichtigung über das Ergebnis sollte, auch wenn keine Veränderungen festgestellt wurden, automatisch per E-Mail an den Administrator erfolgen.
„File Checksum Integrity Verifier“ (FCIV) ist ein Befehlszeilenprogramm, das kryptografische Datei-Hashwerte berechnet und überprüft. FCIV kann die kryptographischen Hashwerte MD5 oder SHA-1 berechnen. Diese Werte können auf dem Bildschirm angezeigt werden oder in einer XML-Dateidatenbank zur späteren Verwendung und Überprüfung gespeichert werden
Dieser Artikel beschreibt das Programm „File Checksum Integrity Verifier (FCIV)“.
Das Programm „Microsoft File Checksum Integrity Verifier (FCIV)“ ist ein nicht-unterstütztes Befehlszeilenprogramm, das kryptographische Hashwerte MD5 oder SHA-1 für Dateien berechnet. Das Programm „File Checksum Integrity Verifier (FCIV)“ kann MD5 oder SHA-1-Hashwerte für Dateien erzeugen, um diese gegen einen bekannten korrekten Wert zu überprüfen. „FCIV“ kann Hashwerte überprüfen, um sicherzustellen, dass die Dateien nicht geändert wurden.
Mit dem FCIV-Programm können Sie auch die Hashes aller Ihrer kritischen Dateien berechnen und diese Werte in einer XML-Dateidatenbank speichern. Wenn Sie den Verdacht haben, dass Ihr Computer beeinträchtigt wurde und wichtige Dateien geändert wurden, können Sie eine Überprüfung Ihrer Dateisystemdateien gegen die XML-Datenbank durchführen, um festzustellen, welche Dateien geändert wurden.
Das Programm „FCIV“ kann auf Microsoft Windows 2000, Windows XP und Windows Server 2003 ausgeführt werden.
Usage: fciv.exe [Commands] <Options>
Commands: ( Default -add )
-add <file | dir> : Compute hash and send to output (default screen).
dir options:
-r : recursive.
-type : ex: -type *.exe.
-exc file: list of directories that should not be computed.
-wp : Without full path name. ( Default store full path)
-bp : base path. The base path is removed from the path name of each entry
-list : List entries in the database.
-v : Verify hashes.
: Option: -bp basepath.
-? -h -help : Extended Help.
Options:
-md5 | -sha1 | -both : Specify hashtype, default md5.
-xml db : Specify database format and name.
To display the MD5 hash of a file, type fciv.exe filename
Compute hashes:
fciv.exe c:\mydir\myfile.dll
fciv.exe c:\ -r -exc exceptions.txt -sha1 -xml dbsha.xml
fciv.exe c:\mydir -type *.exe
fciv.exe c:\mydir -wp -both -xml db.xml
List hashes stored in database:
fciv.exe -list -sha1 -xml db.xml
Verifications:
fciv.exe -v -sha1 -xml db.xml
fciv.exe -v -bp c:\mydir -sha1 -xml db.xml
Das Programm „File Checksum Integrity Verifier“ (FCIV) kann Einträge in einer XML-Datenbankdatei speichern. Wenn „FCIV“ darauf konfiguriert wird, die Hashwerte in einer XML-Datenbankdatei zu speichern, werden die hexadezimalen Hashwerte im base64-codierten Format gespeichert. Wenn Sie die XML-Datenbank direkt anzeigen lassen, stimmt die in base64-codierte Darstellung des Hashwertes visuell nicht mit dem hexadezimalen Wert überein, den die Konsole darstellt. „FCIV“ decodiert die base64-codierten Hashes bei der Darstellung der Datenbankinhalte auf dem Bildschirm. Daher stellt es den korrekten hexadezimalen Wert dar.
Folgende Strategie soll umgesetzt werden, die Dateiintigrität festzustellen und periodisch zu überprüfen.
Beispielscript:
Net use y: \\server\c$ fciv.exe y:\winnt\system32 –xml server_system32.xml net use y: /delete
Net use y: \\server\c$ fciv.exe y:\winnt\system32 –xml server_system32.xml –v C:\fciv>fciv Y:\winnt\system32 -xml server_system32.xml -v // // File Checksum Integrity Verifier version 2.05. // Starting checksums verification : 05/02/2006 at 13h11'46 All files verified successfully End Verification : 05/02/2006 at 13h11'56 net use y: /delete
Die Überprüfung erfolgt über den NRPE_NT Dienst vom Nagios heraus:
C:\programme\nrpe_nt\bin\commands.cfg
command[fciv_Files1]=D:\FCIV\Prog\file1.bat command[fciv_Files2]=D:\FCIV\Prog\file2.bat command[fciv_Files3=D:\FCIV\Prog\file3.bat
@ECHO OFF CLS REM ------------------------------------------------------------ REM Name: file1.bat REM Autor: Ingo von Itter REM Datum: 18.05.2006 REM REM ------------------------------------------------------------ REM Verzeichnis mappen REM Aufruf des Objekt Identifierers und prüfen gegen DB d:\fciv\prog\fciv.exe w:\Programme\hmhm\bin\ -xml D:\FCIV\DailyDB\file1.xml -v >d:\fciv\prog\log\file.log REM Übermittlung, ob Check erfolgreich if errorlevel == 3 goto sub1error if errorlevel == 2 goto sub1error if errorlevel == 1 goto sub1error IF errorlevel == 0 goto sub1ok :sub1error set check1=1 goto weiter1 :sub1ok set check1=0 goto weiter1 :weiter1 d:\fciv\prog\fciv.exe w:\Programme\Programm\cfg\ -xml D:\FCIV\DailyDB\file1cfg.xml -v >d:\fciv\prog\log\file1cfg.log REM Übermittlung, ob Check erfolgreich if errorlevel == 3 goto sub2error if errorlevel == 2 goto sub2error if errorlevel == 1 goto sub2error IF errorlevel == 0 goto sub2ok :sub2error set check2=1 goto weiter2 :sub2ok set check2=0 goto weiter2 :weiter2 if %check1%==1 goto error if %check2%==1 goto error :ok echo OK Konsistenzpruefung erfolgreich exit 0 :error echo CRITICAL Konsistenzpruefung SYSTEM fehlerhaft exit 2
fciv_erstellen.cmd
cd d:\ cd \fciv\prog\ del D:\FCIV\DailyDB\*.xml fciv.exe w:\Programme\file1\bin\ -xml D:\FCIV\DailyDB\file1.xml fciv.exe w:\Programme\file2\bin\ -xml D:\FCIV\DailyDB\file2.xml
Service Template : (/usr/local/nagios/etc/servicetemplates.cfg)
## FCIV NRPE Einträge
##############################################
define service {
use Default
name NRPE_FCIV_File1
service_description FCIV File1
check_command check_nrpe_ssl!fciv_file1
normal_check_interval 60
register 0
}
(/usr/local/nagios/etc/services.cfg)
define service {
use NRPE_FCIV_File1
name fciv_file1
service_description Konsistenzpruefung_File1
host_name SERVER
}
Wie bereits erläutert, werden bei der Konsistenzprüfung die Hash Werte von Dateien mit Hashwerten, die in einer „Master“ Datenbank hinterlegt werden, verglichen. Manipuliert jemand diese „Master“ Datenbank, würde eine Veränderung unentdeckt bleiben. Um dieses zu Verhindern, wird eine Strategie vorgestellt, die dieses verhindern sollen.