ubuntuusers.de

integrit

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

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

Diese Revision wurde am 11. Januar 2023 14:05 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, System, Server, Sicherheit, Ubuntu