Einbruchserkennung mit mtree(8)
Table of Contents
mtree(8) als Dateisystemintegritätsprüfer einsetzen.
Was ist ein Dateisystemintegritätsprüfer?
Ein Dateisystemintegritätsprüfer erstellt einen Fingerabdruck einer Dateihierarchie in dem er bspw Größe, Mode, Besitzer und kryptographische Signaturen der Dateien abspeichert. Zu einem späteren Zeitpunkt kann man eine aktuelle Datenbank erstellen lassen und gegen die alte vergleichen, so das veränderte Dateien aufgespürt werden können. Der Hauptzweck ist somit Manipulationen an wichtigen Dateien bspw. durch Einbrecher oder rootkits aufzudecken.
Was ist mtree?
mtree ist ein Instrument um eine Dateihierarchie gegen eine Spezifikation abzugleichen. Eingesetzt wird es vor allem im build.sh Framework um die installierten Binärdateien gegen eine vorher spezifizierte Liste abzugleichen. Seit NetBSD 1.6 verfügt mtree auch über kryptographische Prüfsummen und ist somit ein ideales Werkzeug zur Dateisystemintegrätitsprüfung.
Konfiguration
mtree -c erstellt standardmäßig Liste mit Dateieigenschaften ausgehend vom aktuellen Verzeichnis aus. ein Beispiel:
ypbind size=390 time=1016771641.0
yppasswdd size=446 time=1016771641.0
ypserv size=495 time=969368679.
mtree verfügt über einige Schlüsselwörter, die entsprechende Dateieigenschaften repräsentiert, einige wichtige sind:
- ignore N
- alles unter N soll ignoriert werden
- gid,gname,uid,uname
- gibt die Gruppen/User ID bzw. Name wieder
- md5,rmd160,sha1
- erzeugt die entsprechende Prüfsumme über der Datei
- mode
- oktaler Dateimodus (rwxrwxrwx)
- size
- Größe in b
- time
- letzter Modifizierungszeitpunkt
diese Schlüsselwörter können als kommaseparierte Liste und Argument für -K übergeben werden.
- -L allen Links folgen
- -p PFAD PFAD als Startpfad einsetzen
- -X DATEI Pfade/Dateinamen (relativ zu PFAD) in DATEI sollen ausgeschlossen werden
Einsatz
mtree -L -c -K sha1,rmd160,gname,uname,mode -p / -X /etc/mtree.excl > /root/mtree.orig
Erzeugt nun eine Liste mit den entsprechenden Dateieigenschaften, wobei die Pfade in /etc/mtree.excl
ausgeschlossen werden.
Um die Datenbank effektiv einsetzen zu können, muss sie vor einem möglichen Einbrecher geschützt werden, die
geschieht am einfachsten mit einer kryptographischen Signatur (PGP oder OpenSSL) oder in dem sie verschlüsselt
abgelegt wird. Ebenfalls möglich ist es bei einem entfernten Rechner Prüfsummen (sha1, rmd160, md5) über die
Datenbank zu erstellen und auszudrucken oder aufzuschreiben.
mtree -L -p / -X /etc/mtree.excl -f /root/mtree.orig
Stimmen laufendes und originales System überein, gibt mtree nichts aus. Anders sieht es aus wenn Dateien verändert wurden:
stefan@fenris > cd mtreetest/3/;
stefan@fenris > rm 7 8 9 ; touch 1 2; date >> 3; date > new1; date > new2
stefan@fenris > mtree -p mtreetest/ -L -f init-db
3: modification time (Wed Feb 9 18:49:07 2005, Wed Feb 9 18:55:16 2005)
3/1: modification time (Wed Feb 9 18:36:51 2005, Wed Feb 9 18:54:47 2005)
3/2: modification time (Wed Feb 9 18:36:51 2005, Wed Feb 9 18:54:48 2005)
3/3: size (6460, 6489)
modification time (Wed Feb 9 18:48:17 2005, Wed Feb 9 18:54:52 2005)
rmd160 (0xf30de94ae188d9114a00118e80bbedf8e2c6c6ed, 0x6a5b3781799b09e2b8d8037e89fe03957ebca247)
sha1 (0x4c499470dcaed01c2681eb0676ddac8cf3024d5a, 0xc04159927a4e9ca5f521161d2cc8daa019fca19a)
extra: 3/new1
extra: 3/new2
missing: ./3/7
missing: ./3/8
missing: ./3/9
stefan@fenris >
Einsatzautomatisierung
NetBSD verfügt mit daily.conf(5) und security.conf(5) über Mechanismen, die per cron täglich
bestimmte Verwaltungsmaßnahmen und Sicherheitsstest durchführt. Dabei gibt es in
/etc/defaults/daily.conf
den Schalter run_security=YES
,
der security.conf
ausführt. /etc/defaults/security.conf
wiederum
startet mittels check_mtree=YES
einen mtree-Lauf. Standardmäßig verwendet mtree dazu
die Datenbanken in /etc/mtree/
. Hierin kann der Benutzer eigene Datenbanken als
VERZEICHNIS.secure
hinzufügen.