Ein File Integrity Check
ist ein wesentlicher Bestandteil der Systemsicherheit, um die Integrität kritischer Dateien und Verzeichnisse zu gewährleisten. Insbesondere in exponierten Umgebungen wie öffentlich zugänglichen Systemen oder sicherheitsrelevanten Umgebungen kann es vorkommen, dass böswillige Akteure versuchen, unbemerkt Änderungen an Systemdateien vorzunehmen, um Schwachstellen auszunutzen oder Schadsoftware zu platzieren.
Regelmäßige Integritätsprüfungen ermöglichen es Administratoren, solche Manipulationen frühzeitig zu erkennen und entsprechend zu reagieren. Hier unterstützt AIDE
(Advanced Intrusion Detection Environment
), indem es den aktuellen Zustand des Dateisystems mit einer zuvor erstellten Datenbank vergleicht und alle unerwarteten Veränderungen wie geänderte Dateiinhalte, Berechtigungen oder neue/verlorene Dateien bei der nächsten Prüfung erkennt und meldet. Damit trägt AIDE
wesentlich zur Systemhärtung und zum Schutz vor unberechtigten Zugriffen bei.
Installation
AIDE
ist in Debian-basierten Distributionen im APT-Repository enthalten und kann über das apt install
Kommando installiert werden:
$ sudo apt install aide
Programme und Tools
Das AIDE
-Paket besteht im Grunde nur aus dem Binary aide
:
/usr/bin/aide
Konfigurationsdateien
/etc/default/aide:
Die Konfigurationsdatei/etc/default/aide
enthält systemweiteglobale Einstellungen
, die für den Start oder den Betrieb vonAIDE
verwendet werden, wie z.B. Startoptionen oder Umgebungsvariablen./etc/aide/aide.conf:
Die Datei/etc/aide/aide.conf
ist die Hauptkonfigurationsdatei des Programms, die die spezifischen Betriebsregeln festlegt. Sie enthält detaillierte Anweisungen, wie das Programm arbeitet, welche Dateien es überwacht oder wie es sich verhält. Diese Konfigurationsdatei wird direkt vom Programm selbst verwendet, um dieBetriebsparameter
festzulegen, nach denen es arbeiten soll./etc/aide/aide.conf.d/:
Das Verzeichnis/etc/aide/aide.conf.d/
enthält eine Vielzahl an Konfigurationsdateien, die vonAIDE
für eine modularisierte und erweiterbare Konfiguration verwendet werden. Diese Dateien sind dazu gedacht, bestimmte Konfigurationsregeln fürAIDE
zu spezifizieren und zu strukturieren./etc/aide/aide.settings.d/:
Das Verzeichnis/etc/aide/aide.settings.d/
enthält Skripte zur modularen Vorbereitung der Überwachung bestimmter Systemkomponenten oder Anwendungen durchAIDE
. Sie initialisieren Variablen, die später mit Verzeichnissen oder Dateien gefüllt werden können, um die Integrität wichtiger Dienste wieAPT
,SVN
,Torrus
oderTrac
zu überwachen.
Kompilierungsoptionen, verfügbare Funktionen und Standardwerte
Die Ausgabe des Kommandos aide -v
liefert detaillierte Informationen über die AIDE-Installation, insbesondere über die Kompilierungsoptionen, verfügbare Funktionen und Standardwerte:
Default config values
Diese Standardwerte legen fest, welche Konfigurationsdateien und Datenbanken verwendet werden, wenn keine expliziten Pfade angegeben werden. In diesem Fall sind keine Standardwerte festgelegt (also „none“), was bedeutet, dass die Konfigurationsdateien und Datenbanken manuell spezifiziert werden müssen (z.B. mit der Option --config
):
Default config values: config file: <none> database_in: <none> database_out: <none>
Available compiled-in attributes
Dies zeigt an, welche Attributtypen AIDE
überwachen kann:
Available compiled-in attributes: acl: yes xattrs: yes selinux: yes e2fsattrs: yes caps: yes
Available hashsum attributes
Dies listet alle verfügbaren kryptografischen Hash-Algorithmen auf, die AIDE
verwenden kann, um die Integrität von Dateien zu prüfen:
Available hashsum attributes: md5: yes sha1: yes sha256: yes sha512: yes rmd160: yes tiger: yes crc32: yes crc32b: yes haval: yes whirlpool: yes gost: yes stribog256: no stribog512: no
Default compound groups
Diese vordefinierten Gruppen (R, L, >, H, X) sind kombinierte Gruppen von Attributen, die AIDE
verwendet, um Dateien zu überwachen:
Default compound groups: R: l+p+u+g+s+c+m+i+n+md5+acl+selinux+xattrs+ftype+e2fsattrs+caps L: l+p+u+g+i+n+acl+selinux+xattrs+ftype+e2fsattrs+caps >: l+p+u+g+s+i+n+acl+selinux+xattrs+ftype+e2fsattrs+caps+growing H: md5+sha1+rmd160+tiger+crc32+haval+gost+crc32b+sha256+sha512+whirlpool X: acl+selinux+xattrs+e2fsattrs+caps
R
: Eine umfassende Gruppe von Attributen (Berechtigungen, Benutzer, Gruppen, Inode, Größe, Zeitstempel, Hashes wie MD5, ACLs, SELinux-Kontexte, etc.).L
: Weniger umfangreich alsR
, aber enthält ähnliche Attribute (ohnesize
undctime
).>
: Speziell für growing Dateien (z.B. Logdateien), die weiter wachsen dürfen, aber dennoch auf andere Attribute wie Berechtigungen und Inode geprüft werden.H
: Eine Gruppe von kryptografischen Hash-Algorithmen (MD5, SHA1, RMD160, etc.), um die Integrität des Dateiinhalts zu überprüfen.X
: Eine spezielle Gruppe für erweiterte Attribute wie ACLs, SELinux-Kontexte, Extended Attributes, Ext-Dateisystemattribute und POSIX-Fähigkeiten.
Logfiles
/var/log/aide/aideinit.log:
Diese Logdatei enthält die Initialisierungsprotokolle von AIDE, die während der Erstellung der ersten Datenbank geschrieben werden. WennAIDE
zum ersten Mal ausgeführt wird oder wenn die AIDE-Datenbank neu erzeugt wird (z.B. mit dem Befehlsudo aideinit
), speichertAIDE
den aktuellen Zustand des Dateisystems in einer Datenbank. Dieser Vorgang wird inaideinit.log
festgehalten./var/log/aide/aide.log:
Diese Logdatei enthält die Protokolle der laufendenAIDE-Prüfungen
(Checks), bei denen das aktuelle Dateisystem mit der vorhandenen Datenbank verglichen wird. Bei jedemAIDE-Check
(z.B. mit dem Befehlsudo aide --check
) wird das Ergebnis des Vergleichs inaide.log
geschrieben.
Hilfsprogramme
/var/lib/aide/aide.db.new:
Der Befehlsudo aideinit
erzeugt eine initiale Datenbank unter/var/lib/aide/aide.db.new
. Außerdem wird bei jeder Aktualisierung der Datenbank (--update
) eine neue Datenbank angelegt.-
/var/lib/aide/aide.db:
Die manuelle Umbenennung vonaide.db.new
inaide.db
ermöglicht es dem Systemadministrator, die neue Datenbank zu überprüfen, bevor sie aktiv verwendet wird. Der Administrator kann sicherstellen, dass die neue Datenbank keine unerwarteten oder fehlerhaften Einträge enthält und auf einem vertrauenswürdigen Systemzustand basiert.
$ sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Der Prozess, bei dem AIDE die Datenbank zunächst als aide.db.new
erstellt und sie dann manuell in aide.db
umbenannt werden muss, hat sowohl Sicherheits- als auch praktische Gründe:
- Vermeidung von unvollständigen oder fehlerhaften Datenbanken.
- Schutz der Integritätsüberprüfung während der Datenbankinitialisierung.
- Ermöglicht eine manuelle Überprüfung durch den Administrator.
- Sicherstellung der Trennung zwischen alter und neuer Datenbank.
Ausschlussregeln
Die Ausgabe von AIDE
ist sehr detailliert und zeigt eine gründliche Analyse aller Änderungen zwischen dem Dateisystem und der AIDE-Datenbank
. Diese Art der Ausgabe ist für eine gründliche Prüfung nützlich, aber in der Regel werden nicht alle Details benötigt, insbesondere wenn viele kryptografische Hash-Werte oder kleinere erwartete Änderungen angezeigt werden. Die Ausgabe kann mit Hilfe von Ausschlussregeln
in der Datei aide.conf
sinnvoll eingeschränkt werden.
Eine erste sinnvolle Maßnahme könnte z.B. sein, die Datei .lesshst
und Logdateien wie *.log
von der AIDE
-Prüfung auszuschließen, indem man in der Konfigurationsdatei aide.conf
bestimmte Regeln hinzufügt:
!/home/*/.lesshst !/root/.lesshst !/var/log/*.log
Um die Datenbank mit nachträglich hinzugefügten Ausschlüssen zu aktualisieren, sollte die Datenbank entweder mit einem --init
oder einem --update
Kommando neu aufgebaut werden, da AIDE
sonst die neue Konfiguration mit der alten Datenbank vergleicht und so Inkonsistenzen erkennt. Nach einem --init
oder --update
muss die neu erstellte Datenbank aide.db.new
auch wieder in aide.db
umbenannt werden. (Mehr dazu im nächsten Abschnitt).
Initialisierung und Konfiguration
Die Initialisierung von AIDE
erfolgt mit dem Kommando sudo aideinit
unter Verwendung des AIDE-Binary, das sich unter /usr/bin/aide
befindet. Dieses Kommando erzeugt eine erste Datenbank des aktuellen Dateisystems, indem es alle relevanten Dateiattribute erfasst. Die resultierende Datenbank wird zunächst als aide.db.new
gespeichert und muss nach einer Überprüfung manuell in aide.db
umbenannt werden. Dies wird typischerweise nach einer Installation oder einem System-Upgrade durchgeführt, um eine vertrauenswürdige Ausgangsbasis für zukünftige Integritätsprüfungen zu schaffen.
$ sudo aideinit
$ sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check
Nach der Initialisierung
und Umbenennung
der Datenbank wird in der Regel regelmäßig der Befehl aide --check
ausgeführt. Bei einem Check vergleicht AIDE
den aktuellen Zustand des Dateisystems mit der gespeicherten Datenbank. Es prüft, ob Dateien geändert, hinzugefügt oder gelöscht wurden. Dabei untersucht AIDE
verschiedene Attribute wie Dateigröße, Berechtigungen, Änderungszeitstempel und Hashwerte.
Wenn Unterschiede festgestellt werden, protokolliert AIDE
diese und meldet sie, damit der Administrator entscheiden kann, ob es sich um legitime Änderungen oder potenzielle Sicherheitsverletzungen handelt.
$ sudo aide --config=/etc/aide/aide.conf --check
Start timestamp: 2024-10-12 20:58:27 +0200 (AIDE 0.18.3) AIDE found differences between database and filesystem!! Ignored e2fs attributes: EINV Summary: Total number of entries: 44509 Added entries: 0 Removed entries: 1 Changed entries: 2 --------------------------------------------------- Removed entries: --------------------------------------------------- f-----------------: /var/lib/aide/aide.db.new --------------------------------------------------- Changed entries: --------------------------------------------------- f .ug . .. . : /var/lib/aide/aide.db f >.... mc..H.. . : /var/lib/dhcp/dhclient.ens33.leases --------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /var/lib/aide/aide.db Uid : 995 | 0 Gid : 995 | 0 File: /var/lib/dhcp/dhclient.ens33.leases Size : 4504 | 4998 Mtime : 2024-10-12 20:42:47 +0200 | 2024-10-12 20:56:34 +0200 Ctime : 2024-10-12 20:42:47 +0200 | 2024-10-12 20:56:34 +0200 MD5 : ZSuk/1HtekPYmwco5dRpHA== | nmD4KGfIWFaOWbrBKoI3Gw== SHA1 : 3z+EgvRrb32azt6ch56EFxchlfg= | 7R9powPwe7Sk+HRfWC6qiIKroDA= SHA256 : zd4oSAv009CFZXG6snMqRs0jR0uzbwLi | CFUWyxpRtcyBXR90lNGXDgh+JwVqASaX vGTCWXxkMfc= | uC1qVVDB84M= SHA512 : GSgXZsdj2TVU9xjqo/5ZpjJvTqVFQbpg | ipFG6TSCZ/lTHdmmNAJNPREIdVoCzEI5 LCaDraa6oz1do12Xyao74RGg15rqJBIn | 75cEPA/rEBoZuUgweyk4BmY7++FyML6B /KgXYHlGMSoyYo0pCldeaA== | A0UMY4pkIYA8x0eBEn5kZQ== RMD160 : 5lf8Vt5Huhjm4RGU0ivRw+pX4ZU= | zbd9ApXMCkj7W6bzwBScAvhsyHA= TIGER : Z8ul2PTNlKAunC9bDbjjNBQ0MFpuNTXi | /aIL+A1BrXsxbvwQYzjndXleS5sUdpiH CRC32 : ONftKg== | +NDF3w== CRC32B : PZPSWQ== | yYrUBA== HAVAL : 4ZJNGgeGd2wgZHR0rHqZeShaPPzBHQ/n | ZEs2jDDnLav/NNyNEv3rYHuHB4ngr8ch rIfREGG3FOc= | YHwbfxst3nU= WHIRLPOOL : cOxwCsuu2d0f2LIVj2yVG0HBALkxuc5G | bYJF06ecmj9YUmIsXF4++WCRFFu+/AdB 7QUiOrQopqiVOvga56Gte0nWRBIcPZEK | kF+8qWG97+RHn2HW1pNHtgJKcZWEQHNw Ju4LmPv09ndFMDwx4iTh1w== | ZG+b5orF3ClpbWWQb73lHg== GOST : YL9KxnbAWLo/CN2IR3NX+BVXRE6lkuTK | UKPw0RlyyU8vaSDkEa5i2/7+HIcL3kTn Cq/DLEn3QPw= | O4QtSyiwYfQ= --------------------------------------------------- The attributes of the (uncompressed) database(s): --------------------------------------------------- /var/lib/aide/aide.db MD5 : TyM6ddCRMKFKtWkhco8u+w== SHA1 : N7fHMauMm/5dF/g28/5lkp2qhj8= SHA256 : UJToRjyYm6RTUoNRr2yKuo4aFYXCzay7 SDDsKdXduMA= SHA512 : 0InLIQDcpPKkI9cmtD/l3IzKN7LtQxq8 +J7a+kSJo4/g+8vzlnd/WpR6jJc9r2F3 dpzxnGho1U6WP40+9SYkgQ== RMD160 : Ua9d+lmCqlvNgxOv3G7xQRTLxV8= TIGER : yUHFtsAu81vdBlO0d16X4pmtTaXKS7Lz CRC32 : XgIuOQ== CRC32B : iX4ILQ== HAVAL : +vUSJeq0zOcOL5zKC1oGavzIub77ZcqU aj5ajCmK2P4= WHIRLPOOL : oIdJc3cwFY9UbxLiP+UskDeEsvsMXXxo pqy+cHJOhFTZUwQQTY7xblMeN7XCcpx1 3GAu5ujrNYKVvKXIjHpBLQ== GOST : gK8HzQEkwCJCwWEqqRUZ1dcRrGEJyqIA 8knKDANa5V0= End timestamp: 2024-10-12 21:00:41 +0200 (run time: 2m 14s)
Es ist sinnvoll, diese Überprüfung regelmäßig über Cron
auszuführen. Der folgende Eintrag in der Root-Crontab
(sudo crontab -e
) führt das Kommando --check
täglich um 02_00 Uhr aus und schreibt die Ausgabe in die Log-Datei:
0 2 * * * /usr/bin/aide --config=/etc/aide/aide.conf --check > /var/log/aide/aide-check.log 2>&1
Wenn Sie ein System mit E-Mail-Reporting verwenden, kann die Ausgabe auch per E-Mail an eine vordefinierte E-Mail-Adresse gesendet werden:
0 2 * * * /usr/bin/aide --config=/etc/aide/aide.conf --check | mail -s "File Integrity Check" root