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