Integrit – Integrität des Dateisystems überwachen

Hallo Leute,

in diesem Blogpost möchte ich euch das Tool „Integrit“ vorstellen. Damit lässt sich ein Snapshot des Dateisystems erstellen und zu späteren Zeitpunkten überprüfen, ob sich Dateien geändert haben.

Die Installation und Konfiguration

Das Programm gibt es als Paket in den meisten Paketquellen, sodass man es einfach installieren kann:

sudo apt-get install integrit

Danach findet man zwei Konfigurationsdateien in /etc/integrit/

ls /etc/integrit 
insgesamt 16K
drwxr-xr-x 2 root root 4,0K Nov 30 16:43 .
drwxr-xr-x 117 root root 4,0K Dez 1 00:00 ..
-rw------- 1 root root 2,3K Nov 30 16:43 integrit.conf
-rw------- 1 root root 836 Nov 30 16:10 integrit.debian.conf

Eine ausführliche Dokumentation der Konfiguration bzw. Nutzung von Integrit findet man hier: http://integrit.sourceforge.net/texinfo/integrit.html

In der „integrit.debian.conf“ sollte man unbedingt die folgenden zwei Variablen setzen:

CONFIGS="/etc/integrit/integrit.conf"
EMAIL_RCPT="meine@email.tld"

Danach muss man sich an die Hauptkonfiguration setzen. Diese ist meiner Meinung nach ganz gut kommentiert. Man kommentiert die Optionen „known“ und „current“ aus:

known=/var/lib/integrit/known.cdb
current=/var/lib/integrit/current.cdb

Danach kann man sich überlegen, welches das Wurzelverzeichnis der zu überprüfenden Dateien sein soll. Ich hab mich mal auf „/var/www/virtual“ beschränkt, um nur die Webseiten zu überwachen.

root=/var/www/virtual

Falls man bestimmte Unterverzeichnisse ignorieren möchte, so schreibt man die Pfade mit einem vorangesetzten Ausrufezeichen in die Datei:

!/var/www/virtual/meine.website/tmp
!/var/www/logs/accces_log

Erste Ausführung

Integrit nutzt zwei separate Datenbanken für die Überprüfung. Die erste der Datenbanken ist die Ausgangsdatenbank „known.cdb“, welche die zu überwachenden Dateien in einem sicheren Ausgangszustand beinhaltet. Diese sollte man nach Möglichkeit auf einem schreibgeschützten Medium aufbewahren.

Um diese Datenbank zu erstellen, geht man folgendermaßen vor:

sudo integrit -C /etc/integrit/integrit.conf -u

Nun erstellt Integrit die zweite Datenbank namens „current.cdb“, in der die aktuellen Dateiinformationen gespeichert werden. Nachdem der erste Durchlauf erfolgreich durchgelaufen ist, macht man die „current.cdb“ zur „known.cdb“:

sudo mv /var/lib/integrit/current.cdb /var/lib/integrit/known.cdb
sudo chmod -w /var/lib/integrit/known.cdb
sudo chattr +i /var/lib/integrit/known.cdb

Die letzten beiden Kommandos sorgen dafür, dass man die Datei nicht so leicht wieder bearbeiten kann. (Das ist aber immer noch keine Ausrede für ein getrenntes Backup ;))

Automatische Überprüfung

Bei der Installation wird direkt die Datei /etc/cron.daily/integrit angelegt. Diese lädt bei der Ausführung die /etc/integrit/integrit.debian.conf, welche wiederum die dort eingetragenen Konfigurationsdateien einbindet.

Emailbenachrichtigung

Hat man in der /etc/integrit/integrit.debian.conf eine Email angegeben, so wird einem der Überprüfungsbericht per Email zugeschickt:

start: integrit -C /etc/integrit/integrit.conf -cu
integrit: ---- integrit, version 4.1 -----------------
integrit:                      output : human-readable
integrit:                   conf file : /etc/integrit/integrit.conf
integrit:                    known db : /var/lib/integrit/known.cdb
integrit:                  current db : /var/lib/integrit/current.cdb
integrit:                        root : /var/www/virtual
integrit:                    do check : yes
integrit:                   do update : yes
changed: /var/www/virtual/meine.website   m(20141115-212730:20141201-100653) c(20141115-230630:20141201-100653) 
new:     /var/www/virtual/meine.website/foo   p(644) t(100000) u(0) g(0) z(0) m(20141201-100653) 
new:     /var/www/virtual/meine.website/foo   s(9c1185a5c5e9fc54612808977ee8f548b2258d31) 
integrit: checking for missing files --------------
integrit: current-state db RMD160 -------------- 
integrit: 9dde6c7cf3f5def49702a2513211f0e4ebf170bd  /var/lib/integrit/current.cdb
exit: 1

So hat man immer im Blick, ob sich Dateien geändert haben.

~ Sebastian