integrit
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das Programm integrit 🇬🇧 überwacht angegebene Verzeichnisse auf Veränderungen. So können durch Angreifer verursachte Veränderungen festgestellt und per Email gemeldet werden. Durch das Melden der Veränderungen kann eine Infektion eines Systems frühzeitig erkannt werden und entsprechend reagiert werden. Wenn man zum Beispiel /var/www, welches eine Wordpress-Instanz enthält, überwachen würde könnte man eine Übernahme der Webseite mitbekommen, auch wenn die Optik und die Administration der Seite immer noch unverändert ist. Dies wäre zum Beispiel der Fall, wenn jemand die Wordpress-Instanz als Dropzone nutzt. Dieses Programm ist, im Gegensatz zu Tripwire, welches eine ähnliche Funktionalität bietet, bewusst einfach gehalten. Daher erfüllt integrit eher das KISS-Prinzip. systemd bietet mit der Unit Path ebenso eine direkt im System integrierte Alternative unter Verwendung von inotify. Im Gegensatz zu andere ähnlicher Software, meldet integrit nicht jede Veränderung sofort, sondern startet einmal am Tag und fasst alle Veränderungen seit dem letzten Lauf in einer Email zusammen. Wenn man bedenkt, dass es auch gewünschte Änderungen in den überwachten Verzeichnissen gibt, könnte eine Email pro Änderung schnell in 100+ Emails pro Tag münden, daher erzeugt integrit eine Zusammenfassung.
Installation¶
integrit (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install integrit
Oder mit apturl installieren, Link: apt://integrit
Um die Meldungen von integrit als Email zu erhalten, benötigt man außerdem einen über den Befehl mail ansprechbaren MTA (mail transfer agent). Ob auf dem System bereits ein solcher installiert ist, erfährt man mit diesem Befehl:
which mail || echo kein MTA verfügbar
Wenn mail nicht verfügbar ist, erhält man durch Aufruf des nicht vorhandenen Befehls Vorschläge zur Installation. Zum Beispiel Postfix. Der MTA muss passend konfiguriert werden, was nicht Teil dieses Artikels ist.
Konfiguration¶
Die Konfiguration erfolgt in den Dateien unter /etc/integrit/. Der tägliche Start erfolgt über einen automatisch angelegten Daily Anacronjob
integrit.debian.conf¶
Hier werden die grundlegenden Einstellungen zur Überwachung getätigt.
Option | Funktion |
CONFIGS | Leerzeichen getrennte Auflistung der Überwachungskonfigurationen |
EMAIL_RCPT | Email Empfänger als Email-Adresse oder Benutzername |
EMAIL_SUBJ | Definition des Emailbetreffs |
ALWAYS_EMAIL | Soll immer eine Email versandt werden oder nur bei festgestellten Dateiänderungen. Wert: true oder false |
Beispiel:
1 2 3 4 | CONFIGS="/etc/integrit/integrit.conf" EMAIL_RCPT="EXAMPLE@EXAMPLE.COM" EMAIL_SUBJ="[integrit] `hostname -f`: report on changes in the filesystems" ALWAYS_EMAIL=true |
integrit.conf¶
In dieser Datei wird das zu überwachende Verzeichnis und die Datenbankspeicherorte festgelegt. Sollen mehrere Verzeichnisse überwacht werden, müssen mehrere solche Dateien angelegt werden und in der integrit.debian.conf als Überwachungskonfiguration angegeben werden.
Option | Funktion |
root | Zu überwachendes Verzeichnis |
known | Datenbank der Dateien des letzten Durchlaufs |
current | Datenbank der Dateien bei dem aktuellem Lauf |
Beispiel:
1 2 3 | root=/var/www known=/var/lib/integrit/known.cdb current=/var/lib/integrit/current.cdb |
Automatische Aktualisierung der Known-DB¶
Normalerweise muss man nach Änderungen an Dateien in den überwachten Verzeichnissen manuell die known db
neu setzen:
1 | cp CURRENTDB.cdb KNOWNDB.cdb |
Das ganze kann man automatisieren, indem man integrit anweist dies nach Erstellung des Berichtes zu tun. Hierzu muss in der Datei /etc/cron.daily/integrit nahe am Ende der Datei ein cp-Befehl hinzugefügt werden. Es folgt der Ausschnitt der Datei mit der entsprechenden Zeile mit Kommentar davor.
1 2 3 4 5 6 7 | if test "$RC" -eq 0; then test -e "$known" || cp "$current" "$known" else rc="$RC" # Überschreiben der DB der bekannten Dateien durch die DB der aktuellen Dateien. cp "$current" "$known" fi |
Beispiel¶
Im folgenden sieht man den Inhalt einer Email von integrit. Es gibt eine neue Datei und eine veränderte.
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 integrit: do check : yes integrit: do update : yes new: /var/www/test p(644) t(100000) u(0) g(0) z(0) m(20230102-233920) new: /var/www/test s(9c1185a5c5e9fc54612808977ee8f548b2258d31) changed: /var/www/test2 m(20230102-172157:20230103-060249) c(20230102-172157:20230103-060249) integrit: checking for missing files -------------- integrit: current-state db RMD160 -------------- integrit: 744f77e119f317717125efde29c2b81fc85b057f /var/lib/integrit/current.cdb exit: 1
Links¶