AIDE - File Integrity Check

Lesedauer: 10 Minuten

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

AIDE ist Freeware und steht unter der GNU General Public License (GPL). Es ist konsolenbasiert und hat keine Abhängigkeiten zu GUI-Komponenten.

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 systemweite globale Einstellungen, die für den Start oder den Betrieb von AIDE 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 die Betriebsparameter 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 von AIDE für eine modularisierte und erweiterbare Konfiguration verwendet werden. Diese Dateien sind dazu gedacht, bestimmte Konfigurationsregeln für AIDE 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 durch AIDE. Sie initialisieren Variablen, die später mit Verzeichnissen oder Dateien gefüllt werden können, um die Integrität wichtiger Dienste wie APT, SVN, Torrus oder Trac 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 als R, aber enthält ähnliche Attribute (ohne size und ctime).
  • >: 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. Wenn AIDE zum ersten Mal ausgeführt wird oder wenn die AIDE-Datenbank neu erzeugt wird (z.B. mit dem Befehl sudo aideinit), speichert AIDE den aktuellen Zustand des Dateisystems in einer Datenbank. Dieser Vorgang wird in aideinit.log festgehalten.
  • /var/log/aide/aide.log: Diese Logdatei enthält die Protokolle der laufenden AIDE-Prüfungen (Checks), bei denen das aktuelle Dateisystem mit der vorhandenen Datenbank verglichen wird. Bei jedem AIDE-Check (z.B. mit dem Befehl sudo aide --check) wird das Ergebnis des Vergleichs in aide.log geschrieben.

Hilfsprogramme

  • /var/lib/aide/aide.db.new: Der Befehl sudo 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 von aide.db.new in aide.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

Dieser Prozess kann z.B. mit einem APT-Hook nach einem automatischen Systemupdate sinnvoll automatisiert werden, um eine große Anzahl von False Positives zu vermeiden.

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.

Ein Datenbank-Update ist erforderlich, wenn sichergestellt werden muss, dass die Änderungen am System rechtmäßig sind, z. B. nach einem geplanten System-Upgrade oder nach dem Hinzufügen neuer Dateien/Software, wenn sichergestellt werden muss, dass der neue Systemstatus als Referenz für künftige Prüfungen verwendet wird.

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.

Gehen Sie zunächst sparsam mit den Ausschlussregeln um. In der ersten Phase ist es hilfreich, das Verhalten von AIDE zu analysieren, um festzustellen, welche Dateien von welchen Parametern erfasst 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

Loading

Updated on 12. Oktober 2024
Was this article helpful?

Related Articles