[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] Das Programm [https://integrit.sourceforge.net integrit] {en} ü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 [wikipedia:Wordpress: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 [wikipedia:Dropzone:] nutzt. Dieses Programm ist, im Gegensatz zu [github:/Tripwire/tripwire-open-source:Tripwire], welches eine ähnliche Funktionalität bietet, bewusst einfach gehalten. Daher erfüllt integrit eher das [wikipedia:KISS-Prinzip:]. systemd bietet mit der [:systemd/Path Units: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 = {{{#!vorlage Paketinstallation integrit, universe }}} 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: {{{#!vorlage 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 [:Cron#Anacron-Anac-h-ronistic-Cron:Daily Anacronjob] == integrit.debian.conf == Hier werden die grundlegenden Einstellungen zur Überwachung getätigt. {{{#!vorlage Tabelle 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: {{{#!code bash 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. {{{#!vorlage Tabelle Option Funktion +++ root Zu überwachendes Verzeichnis +++ known Datenbank der Dateien des letzten Durchlaufs +++ current Datenbank der Dateien bei dem aktuellem Lauf }}} Beispiel: {{{#!code bash 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: {{{#!code bash 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:cp-Befehl] hinzugefügt werden. Es folgt der Ausschnitt der Datei mit der entsprechenden Zeile mit Kommentar davor. {{{#!code bash 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 = * [https://integrit.sourceforge.net/texinfo/integrit.html Anleitung des Projektes] {en} #tag: Netzwerk, Ubuntu, System, Sicherheit, Server