AIDE

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page AIDE and the translation is 100% complete.


AIDE (Advanced Intrusion Detection Environment) ist ein Host-basiertes Intrusion Detection System. AIDE scannt Dateien und andere Ressourcen und speichert Informationen über diese Dateien in einer Datenbank. Zu den gespeicherten Informationen gehören wichtige Dateiattribute wie Hash-Ausgabe, Dateigröße, Eigentümer, Änderungszeit, Erstellungszeit und mehr. Nachdem die erste Datenbank erstellt wurde, führt AIDE einen erneuten Scan des Systems durch und vergleicht die erneuten Scanergebnisse mit den zuvor gespeicherten Werten. Weichen die Werte ab, wurde die Datei geändert und die Änderung wird gemeldet. Die Idee hinter der Verwendung von AIDE ist es, einen Schnappschuss eines Systems zu erstellen und diesen Schnappschuss mit einem anderen Schnappschuss zu vergleichen, um gefährdete Dateien zu finden.

Installation

USE-Flags

Es ist einfach, app-forensics/aide zu installieren, nachdem Sie die USE-Flags entsprechend gesetzt haben.

USE flags for app-forensics/aide AIDE (Advanced Intrusion Detection Environment) is a file integrity checker

acl Add support for Access Control Lists
audit Enable support for Linux audit subsystem using sys-process/audit
curl Use curl for http,https and ftp backends
e2fs Enable support for checking file attributes on ext2/ext3/ext4 filesystems
mhash Add support for the mhash library
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
xattr Add support for extended attributes (filesystem-stored metadata)

USE-Flag-Änderungen, die sich auf ein bestimmtes Paket beziehen, sollten in der Datei /etc/portage/package.use oder einer Textdatei in einem Verzeichnis namens /etc/portage/package.use definiert werden. Wenn Sie zum Beispiel eine /etc/portage/package.use Datei haben:

DATEI /etc/portage/package.useAktivieren der zlib-Unterstützung für AIDE
app-forensics/aide zlib

Emerge

Nachdem die USE-Flags gesetzt wurden, installieren Sie die Software:

root #emerge --ask app-forensics/aide

Konfiguration

Übersicht

Die Konfigurationsdatei für app-forensics/aide ist nicht so entmutigend, wie sie auf den ersten Blick erscheinen mag. Die Standarddatei ist unter /etc/aide/aide.conf gespeichert, aber Administratoren können bei Bedarf leicht mehrere Konfigurationsdateien erstellen. Neben ein paar Variablen enthält die Konfigurationsdatei Kurzbezeichnungen dafür, nach welchen Aspekten von Dateien gescannt werden soll (nur Hashes oder auch Inode-Informationen usw.) und welche Dateien gescannt werden sollen.

Schauen Sie sich die Datenbankvariablen an:

DATEI aide.confKonfigurationsvariablen der AIDE-Datenbank
database=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new

Die erste Zeile im obigen Beispiel (database) definiert den Speicherort der Datenbank, die die bekannten Werte enthält. Die zweite Zeile (database_out) legt fest, wo neue Datenbanken gespeichert werden sollen, wenn eine weitere generiert wird. Es wird allgemein davon abgeraten, diese Variablen auf dieselbe Datenbank verweisen zu lassen (gleiche Pfade für jede Variable). Wenn eine Datenbank eine andere überschreiben soll, ist es am besten, die erzeugte Datenbank manuell von einem Ort zum anderen zu "kopieren". Um zum Beispiel die erste Datenbank mit der zweiten zu überschreiben, könnte dieser Befehl verwendet werden:

root #cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Lassen Sie die Datenbankvariablen vorerst so, wie sie sind; sie werden später in diesem Artikel ausführlicher behandelt.

Als Nächstes betrachten wir die Variablen, die Kurzbezeichnungen dafür sind, welche Informationen in der Datenbank gespeichert werden sollen.

DATEI aide.confAIDE-Konfiguration unter Verwendung der Kurzschreibweise
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
Logs = p+i+n+u+g+S
...
Hinweis
Es sollte offensichtlich sein, dass md5 und sha1 bedeuten, dass MD5- bzw. SHA-1-Prüfsummen genommen werden.

Die Buchstaben sind in der Standarddatei aide.conf beschrieben, aber der Einfachheit halber gibt die folgende Tabelle einen Überblick über die gängigsten Optionen:

Abkürzung Beschreibung
p Berechtigungen
i Inode-Nummer
n Anzahl an (hard)links
u Informationen zum Benutzer
g Informationen zur Gruppe
s Größe
S Größe (nur melden, wenn die Größe plötzlich kleiner ist - Wachstum ist erlaubt)
b Blockanzahl
m Änderungszeit

Als nächstes folgt eine Überblick darüber, welche Verzeichnisse gescannt werden sollen und wonach zu suchen ist. Im folgenden Drei-Zeilen-Beispiel wird AIDE angewiesen, die Verzeichnisse /bin und /sbin anhand der in der Binlib-Kurzbeschreibungsvariable festgelegten Maßnahmen zu überprüfen. In der Datei /var/log werden die in der oben definierten Variable Logs definierten Scan-Maßnahmen angezeigt.

DATEI aide.confOptionen für das Scan-Ziel
/bin Binlib
/sbin Binlib
/var/log Logs
...

AIDE unterstützt reguläre Ausdrücke und die Benutzer können Übereinstimmungen "entfernen". Um zum Beispiel /var/log zu scannen, aber nicht /var/log/portage, setzen Sie einen Ausschluss, indem Sie das ! (Ausrufezeichen) vor den ausgeschlossenen Pfad(en) verwenden:

DATEI aide.confAndere Scan-Ziele
/var/log Logs
!/var/log/portage

Detaillierte Optionen

Die Konfigurationsdatei basiert auf regulären Ausdrücken, Makros und Regeln für Dateien und Verzeichnisse. Benutzer, die bereits Erfahrung mit Tripwire haben, werden keine Schwierigkeiten haben, mit der Konfigurationsdatei von AIDE umzugehen. Die folgenden Makros sind verfügbar:

Makro Beschreibung Syntax
ifdef Wenn definiert @@ifdef "name"
ifndef Wenn nicht definiert @@ifndef "name"
define Definieren einer Variable @@define "name" "value"
undef Undefinieren einer Variable @@undef "name"
ifhost Wenn "hostname" @@ifhost "hostname"
ifnhost Wenn nicht "hostname" @@ifnhost "hostname"
endif Endif muss nach jedem der oben genannten Makros außer define und undef verwendet werden @@endif

Dies Makros sind sehr praktisch, wenn man mit mehreren Gentoo-Rechnern arbeitet und auf allen die gleiche Konfiguration verwendet. Nicht auf allen Rechnern laufen die gleichen Dienste oder haben sogar die gleichen Benutzer.

Als nächstes haben wir eine Reihe von Flags, welche die Berechtigungen, Dateieigenschaften, Prüfsummen, kryptografische Hashes, ... für Dateien und Verzeichnisse angeben, welche überprüft werden sollen.

Flag Beschreibung
p Berechtigungen
i inode
n Anzahl von Links
u Benutzer
g Gruppe
s Größe
b Blockanzahl
m mtime
a atime
c ctime
S Prüfung auf zunehmende Größe
md5 MD5-Prüfsumme
sha1 SHA1-Prüfsumme
rmd160 rmd160-Prüfsumme
tiger tiger-Prüfsumme
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Leere Gruppe
> Wachsende Logdatei p+u+g+i+n+S

Wenn AIDE mit mhash-Unterstützung kompiliert wurde, dann können die folgenden Flags ebenfalls verwendet werden:

Flag Beschreibung
haval Haval-Prüfsumme
gost Gost-Prüfsumme
crc32 CRC32-Prüfsumme

Initialisierung und häufiges Scannen

Für eine grundlegenden AIDE-Einrichtung muss eine Datenbank initialisiert werden. Dies wird mit der Option --init durchgeführt. Um sicherzustellen, dass AIDE die in den vorangegangenen Abschnitten definierten Konfigurationseinstellungen verwendet, müssen Sie die Option --config übergeben, die auf die richtige Konfigurationsdatei zeigt:

root #aide --init --config=/etc/aide/aide.conf
AIDE, version 0.14.2
  
### AIDE database at /var/lib/aide/aide.db.new initialized.

Nach der Initialisierung können alle bereits vorhandenen Datenbankdateien kopiert werden:

root #cd /var/lib/aide; cp aide.db.new aide.db

Wenn eine neue Datenbank verfügbar ist, können die Einträge mit der Option --check erneut überprüft werden (jetzt oder zu einem späteren Zeitpunkt). Dadurch wird eine weitere Datenbank erstellt, die alle Änderungen enthält, die seit der Erstellung der ersten Datenbank am Dateisystem vorgenommen wurden. Stellen Sie sicher, dass Sie die Option --config verwenden, die auf dieselbe Konfigurationsdatei zeigt, mit der die erste Datenbank erstellt wurde:

root #aide --check --config=/etc/aide/aide.conf
AIDE, version 0.14.2
  
### All files match AIDE database. Looks okay!

Wenn eine oder mehrere Datei(en) geändert wurden, wird eine Benachrichtigung verschickt, wenn noch keine ursprüngliche Datenbank existiert, wird eine Warnung ausgegeben, wie z.B:

root #aide --init --config=/etc/aide/aide.conf
Couldn't open file /var/lib/aide/aide.db.new for writing

Dies ist kein echter Fehler, sondern eine einfache Meldung von AIDE, dass keine Datenbank gefunden wurde und eine erstellt werden muss.

root #aide --check --config=/etc/aide/aide.conf
AIDE found differences between database and filesystem!!
Start timestamp: 2013-04-11 15:31:02
  
Summary:
  Total number of files:        318
  Added files:                  0
  Removed files:                0
  Changed files:                2
  
  
---------------------------------------------------
Changed files:
---------------------------------------------------
  
changed: /etc/pam.d
changed: /etc/pam.d/run_init
  
---------------------------------------------------
Detailed information about changes:
---------------------------------------------------
  
  
Directory: /etc/pam.d
  Mtime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
  Ctime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
  
File: /etc/pam.d/run_init
  Size     : 205                              , 208
  Mtime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:00
  Ctime    : 2013-04-09 22:11:18              , 2013-04-11 15:31:01
  Inode    : 394203                           , 394053
  MD5      : Mm0KPzpPt63eqGClTJ/KaQ==         , eLUrP2BsIq25f3AZX+dlBA==
  SHA1     : NrQtsUeOsXS4RHUq+ejYBne5V6E=     , 5A6ef6VJCcMiqEjKQ7e9xkBNZB8=

Bewährte Verfahren

Seien Sie sich im Klaren darüber, was zu scannen ist

Die Standardkonfiguration von AIDE ist nützlich, muss aber an die Bedürfnisse der Benutzer angepasst werden. Es ist wichtig zu wissen, welche Dateien gescannt werden sollen und warum.

Um beispielsweise nach allen authentifizierungsbezogenen Dateien zu suchen, aber nicht nach anderen Dateien, verwenden Sie eine Konfiguration wie diese:

DATEI aide.confauthentifizierungsbezogene Prüfungsziele
# SELinux-Richtlinie und -Einstellungen
/etc/selinux ConfFiles
# Authentifizierungsdatenbanken
/etc/passwd ConfFiles
/etc/shadow ConfFiles
/etc/nsswitch.conf ConfFiles
# Konfiguration der Authentifizierung
/etc/pam.d ConfFiles
/etc/securetty ConfFiles
/etc/security ConfFiles
# PAM-Bibliotheken
/lib(64)?/security Binlib

Die Datenbank offline und schreibgeschützt halten

Ein zweiter wichtiger Aspekt ist, dass die Ergebnisdatenbank offline gespeichert werden sollte, wenn sie nicht benötigt wird, und schreibgeschützt verwendet werden sollte, wenn die Datenbank benötigt wird. Dies bietet einen gewissen Schutz gegen einen böswilligen Benutzer, der in den Rechner eingedrungen sein könnte, um die Ergebnisdatenbank zu ändern. Stellen Sie die Ergebnisdatenbank beispielsweise auf einem schreibgeschützten NFS-Mount (für Server) oder einem schreibgeschützten Medium (wenn physischer Zugriff auf den Rechner möglich ist) wie einer CD/DVD oder einem schreibgeschützten USB-Laufwerk bereit.

Nachdem Sie die Datenbank an einem schreibgeschützten Ort gespeichert haben, aktualisieren Sie die Datei aide.conf, damit database auf diesen neuen Ort zeigt.

Offline-Scan durchführen

Versuchen Sie gegebenenfalls, Offline-Scan-Methoden für das System zu verwenden. Bei virtuellen Plattformen könnte es möglich sein, einen Snapshot des Systems zu erstellen, diesen Snapshot einzuhängen (schreibgeschützt) und dann den AIDE-Scan auf dem eingegangenen Dateisystem durchzuführen.

root #losetup /dev/loop0 /srv/virt/gentoo.img
root #vgscan
root #vgchange -ay
root #mount -o ro /dev/volgrpX/volumeY /mnt/image
root #chroot /mnt/image
root #aide --check --config=/path/to/aide.conf
root #exit
root #umount /mnt/image
root #vgchange -an /dev/volgrpX
root #losetup -d /dev/loop0

Der obige Ansatz verwendet chroot. Dies ist erforderlich, wenn das ursprüngliche Dateisystem vom Live-System aus gescannt wurde und der Administrator eine Offline-Validierung durchführen möchte. Wenn der erste Scan offline durchgeführt wurde, verweist die Datei aide.conf bereits auf den Einhängepunkt und die Datenbank verwendet diese Pfade sofort, so dass kein Chroot erforderlich ist.

Siehe auch

Externe Ressourcen