Mit inotify das Dateisystem überwachen

Nein, kein neues Programm von Apple, die anscheinend den Anfangsbuchstaben i für sich gepachtet haben, denn bei inotify handelt es sich um einen Mechanismus, um unter Linux Veränderungen im Dateisystem zu beobachten. Leider findet man im Internet nicht allzuviel zu dem Thema, ausser ein paar älteren Artikeln wie z.B. Monitor Linux file system events with inotify. Mittlerweile ist inotify ab Version 2.6.13 im Kernel enthalten und es gibt auch kein Device /dev/inotify mehr und es erscheint auch keine Meldung mehr beim Booten. Die einzigen Möglichkeit festzustellen, ob inotify aktiviert ist, besteht darin einmal in die Kernel-Konfiguration zu schauen.

Bei grep -i inotify /boot/config-`uname -r` (Debian, Ubuntu) oder grep -i inotify /proc/config.gz (Suse) sollte CONFIG_INOTIFY=y erscheinen,was aber bei halbswegs aktuellen Distributionen der Fall sein sollte.

Aber was kann man nun damit anfangen? Hauptgrund für die Einführung waren Datei-Manager wie Nautilus oder Desktop-Suchmaschinen wie Beagle oder Kat, aber auch der IMAP-/POP3-Server Dovecot bietet mittlerweile Unterstützung für inotify, wobei der Zugriff auf folgende Informationen möglich ist:

  • access – file was accessed
  • modify – file was modified
  • attrib – file attributes changed
  • close_write – file closed, after being opened in writeable mode
  • close_nowrite – file closed, after being opened in read-only mode
  • close – file closed, regardless of read/write mode
  • open – file was opened
  • move – a file within watched directory was moved
  • create – a file was created within watched directory
  • delete – a file was deleted within watched directory
  • delete_self – the watched file was deleted
  • unmount – file system on which watched file exists was unmounted

Wer ein wenig damit spielen möchte, dem empfehle ich die inotify-tools von Rohan McGovern (thank you rohan for your fast responses!) und das dazugehörige Blog-Posting, indem auch ein paar schöne Beispiele für die Nutzung in Shell-Scripten beschrieben sind.

Viel besser als der Einsatz in irgendwelchen Grafikmonstern gefällt mir die Idee mit inotify darüber zu wachen, ob jemand in das System eingebrochen ist und versucht ein Rootkit zu installieren. Mit ein paar Zeilen erhält man eine kurze Email, wenn jemand versucht in /bin sein Unwesen zu treiben:

#!/bin/sh

while { inotifywait -e modify -e close_write -e create /bin; }; do

        echo "/bin" | mail -s "Security Breach" joern@aumund.org
done

Natürlich ist das kein Heilmittel, weil es schon zu spät ist, wenn man eine Email erhält. Es ist aber bedeutend schneller, als es die normalen File-Integrity Scanner mit Prüfsummen-Erstellung je seien können. Mir würde ein kleines Tool gefallen, dem man ein paar Verzeichnisse und Dateien vorgibt und das im Hintergrund darüber wacht, das gegen bestimmte Vorgaben nicht verstossen wird. Vielleicht findet sich da mal jemand…

Siehe auch Teil 2

Verwandte Artikel

  • No Related Post
Leave a comment

8 Comments.

  1. Danke, sowas hab ich schon was länger gesucht.

  2. Die inotify-tools waren mir neu, sieht tatsaechlich sehr praktisch aus fuer die Alarm-Mail im Notfall, so flott wird der Angreifer nicht sein, dass er die noch abfaengt.

    Also, EDV hat was fuer jedermann, sozusagen die ein Blog fuer die ganze Familie. :)

  3. Ich hab das bei mir via Kernel-Parameter “noinotify” wieder abgeklemmt, weil’s das System ausgebremst hat. Sicher wird das nicht die Schuld vom Kernel selbst gewesen sein sondern von zu vielen Anwendungen (allen voran Beagle), die davon scheinbar regen Gebrauch machen. War mir aber auch egal. Was das System traege macht (ausser KDE) fliegt runter ;)

  4. Hab ein ebuild für Gentoo gebastelt …
    … und Link auf Rohan McGovern’s Blog liefert eine 404.

  5. Danke für den Tip.

    inotify bremst hier nichts aus :

    10:44:30 up 1 day, 7:28, 7 users, load average: 0.02, 0.01, 0.00

  6. Noch ein tip für Leute die sich selber Debian packages bauen wollen :

    http://www.manpage.ch/slackware/checkinstall.php

  7. schau mal http://s2.enemy.org/~cahya/IWatch
    Ich habe da ein perl script gebastelt die das ganze filesystem monitoring vereinfachen koennte :)
    man braucht nur die liste der directories/files in config file (als xml)
    zu schreiben, und der script starten.

Trackbacks and Pingbacks: