AIDE Host Based Intrusion Detection System Installation

Nachfolgend geht es um das HIDS – Host Based Intrusion Detection System AIDE (Advanced Intrusion Detection Environment). Für AIDE habe ich mich entschieden, da mir die Integrität der Dateien wichtig ist. Weiterhin eine möglichst einfache Installation und Wartung sowie ein schonender Umgang mit den Systemressourcen. Ob all dies von AIDE erfüllt wird, werden die nächsten Wochen im Einsatz zeigen. In diesem Artikel beschreibe ich die Installation und Konfiguration von AIDE 0.16 unter Debian Jessie.

AIDE wurde ursprünglich von Rami Lehti und Pablo Virolainen 1999 programmiert. Zwischen 2003 und 2010 wurde die Software von Richard van den Berg betreut. Seit 2010 ist Hannes von Haugwitz der Projektleiter.

Die Funktionsweise ist wie bei den meisten anderen HID Systemen. AIDE erstellt eine Datenbank die nach der Vorgabe von Regulärenausdrücken /-regeln aus der Konfigurationsdatei, erstellt wird. Die Regeln werden auf die angegebenen Dateien und Verzeichnisse angewandt und dienen als Soll-Wert. Ist dieser Datenbestand einmal erstellt worden, kann jede weitere Prüfung den IST-Wert der Dateien mit dem Soll-Wert vergleichen. Neben einer Datei- und Ordner- Integritätsprüfung, hilft AIDE auch bei der Suche nach Rootkits.

AIDE – Features

  • Unterstützung der Algorithmen: md5, sha1, rmd160, tiger, crc32, sh256, whirlpool
  • Unterstützte Dateiattribute: Berechtigungen, Inode, Uid, Gid, Link Name, Size, Block Count, Number of Links, Mtime, Ctime und Atime
  • Konfiguration und Datenbank in Plaintext
  • Reguläre Ausdrücke für selektive Wahl von Dateien und Verzeichnissen
  • Datenbank mit gzip Kompression wenn zlib in AIDE enthalten ist
  • uvw.

AIDE Installation

Die Installation von AIDE erfolgt unter Debian Jessie, in Version 0.16. Da sie wie bei vielen anderen Distributionen bereits als Paketquellen vorliegt, ist die Installation einfach und schnell. AIDE sollte normalerweise direkt nach der Installation des Betriebssystems erfolgen, da hier die Wahrscheinlichkeit einer Komprimitierung am geringsten ist.

# aptitude install aide

AIDE Version prüfen

# aide -v
Aide 0.16a2-19-g16ed855

Compiled with the following options:

WITH_MMAP
WITH_POSIX_ACL
WITH_SELINUX
WITH_XATTR
WITH_E2FSATTRS
WITH_LSTAT64
WITH_READDIR64
WITH_ZLIB
WITH_MHASH
WITH_AUDIT
CONFIG_FILE = „/dev/null“

AIDE Dateien

  • /etc/default/aide – allgemeine Konfiguration
  • /etc/aide/aide.conf – Konfigurationsdatei
  • /etc/aide/aide.conf.d/ – Verzeichnis mit Konfigurationsdateien für verschiedene Dienste
  • aideinit – erstellt eine neue AIDE Datenbank
  • aide.wrapper – ruft die AIDE Binaries für Debian auf
  • aide.attributes – dekodiert und vergleicht hex-encoded Attributenummern
  • /etc/cron.daily/aide – täglicher Cronjob um 6:25 Uhr zur Prüfung und Mailing von AIDE
  • /var/lib/aide.conf.autogenerated – Konfigurationsdatei mit den Prüfregeln
  • /var/lib/aide.db – Datenbank mit den IST-Werten
  • /var/lib/aide.db.new – Datenbank mit den SOLL-Werten

Nachfolgend die ersten Schritte mit der Standardkonfiguration von AIDE

Die Konfiguration und somit die Erstellung der Datenbank mit dem Soll-Stand, sollte direkt nach der Installation von AIDE erfolgen.

AIDE Datenbank erstellen

Die Datenbank wird unter /var/lib/aide erstellt.

# aideinit

sonst Fehler: AIDE –init return code 17. Bei ca. 64.509 Einträgen ist die AIDA DB bei mir 12MB groß.

AIDE Prüfung der Datenbank

Als nächstes kann der Soll-Ist-Vergleich ausgeführt werden, um so nach eine Veränderung im Dateisystem zu schauen:

# aide.wrapper –check

sonst Fehler: Couldn’t open file /var/lib/aide/please-dont-call-aide-without-parameters/aide.db for reading

AIDE Aktualisierung der Datenbank

Sollte es zu gewollten Veränderungen im Dateisystem gekommen sein, so muss die Datenbank, der Soll-Zustand, aktualisiert werden:

# aideinit -f -y

  • f oder –force = erzwingt das überschreiben der alten Datenbank mit der neuen
  • y oder –yes = überschreibt die vorhandene Datenbank mit den neuen Werten

Das waren die groben Schritte die Out-of-the-Box nach der Installation ausgeführt werden können. Mit den Standardregeln überprüft AIDE das gesamte System, liefert aber auch jede Menge False-Positiv Meldungen. Daher muss man auf jedne Fall nachjustieren. AIDE bietet aber jede Menge weiterer Möglichkeiten, die man im Detail und für seine eigenen Anforderungen prüfen und vornehmen muss.

AIDE Konfiguration – Systemvariablen

Damit AIDE als Cron-Dienst regelmäßig läuft und die Benachrichtigungen per E-Mail funktionieren, muss die spezielle Konfiguration erfolgen. Die Datei hiefür liegt unter /etc/default/aide. Folgende Optionen können angepasst werden:

  • #CRON_DAILY_RUN=yes
  • # FQDN=
  • MAILSUBJ=“Daily AIDE report for $FQDN“
  • MAILTO=root
  • #QUIETREPORTS=no
  • #SILENTREPORTS=no
  • COMMAND=update
  • COPYNEWDB=no
  • TRUNCATEDETAILS=no
  • FILTERUPDATES=no
  • FILTERINSTALLATIONS=no
  • LINES=1000
  • NOISE=““
  • AIDEARGS=““
  • CRONEXITHOOK=““

HIer kann auch festgelegt werden, dass die neu erzeugte Datenbank, der IST-Zustand, kopiert wird und zum Soll-Zustand wird.

Änderungen abschließend übernehmen: # update-aide.conf

AIDE Konfiguration

Das Regelwerk für Dateien und Verzeichnisse von AIDE lässt sich umfangreich und detailiert konfigurieren. Es gibt drei Typen von Konfigurationsdateien:

  • Zeilen mit der eigentlichen Konfiguration und den Optionen
  • (eingeschränkt) Zeilen mit den Datei- und Verzeichnisangaben die in der Datenbank aufgenommen werden
  • Macro-Zeilen die Variablen festlegen oder deaktivieren
  • # – Raute deaktiviert die Zeilen bzw. dient als Kommentator

Nachfolgend die Art wie AIDE die regulären Ausdrücke in der Konfiguration handhabt:

  • Zeilen für reguläre Ausdrücke beginnen mit „/“ einem Slash
  • Zeilen mit Vergleichen beginnen mit „=“ einem Gleichheitszeichen
  • Zeilen mit mit negativen Auswahlen also Verneinungen beginnen mit „!“ einem Ausrufezeichen

Folgende Regeln sind in AIDE zur Prüfung enthalten:
#p: permissions
#ftype: file type
#i: inode
#n: number of links
#l: link name
#u: user
#g: group
#s: size
#b: block count
#m: mtime
#a: atime
#c: ctime
#S: check for growing size
#I: ignore changed filename
#md5: md5 checksum
#sha1: sha1 checksum
#sha256: sha256 checksum
#sha512: sha512 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum
#haval: haval checksum
#crc32: crc32 checksum
#R: p+ftupe+i+l+n+u+g+s+m+c+md5
#L: p+ftype+i+l+n+u+g
#E: Empty group
#>: Growing file p+ftype+l+u+g+i+n+S
#The following are available if you have mhash support enabled:
#gost: gost checksum
#whirlpool: whirlpool checksum
#The following are available and added to the default groups R, L and >
#only when explicitly enabled using configure:
#acl: access control list
#selinux SELinux security context
#xattrs: extended file attributes
#e2fsattrs: file attributes on a second extended file system

Vordefinierte Gruppen sehen dann wie oben so aus: R: p+ftupe+i+l+n+u+g+s+m+c+md5, wobei nur noch R als Option angegben werden muss. Eigene Gruppen können ebenso definiert werden, wobei die Parameter aber immer mit einem Plus (+) getrennt werden müssen.

AIDE Beispiele

  1. prüfen von /etc/ nach Permission, Inode, User und Group -änderungen
    /etc p+i+u+g
  2. prüfen aller Dateien
    / R # aller Dateien unter / mit obigen Regelwerk R: p+ftupe+i+l+n+u+g+s+m+c+md5
  3. prüfen von /var/log/messages, aber nicht den älteren Versionen mit .0 .1 etc.
    =/var/log/messages$ R+a #nur die Dateien in /var/log/messages
    !/var/log/messages\.[0-9]$ #nicht die Archivierungen von /var/log/messages.0-9
  4. nicht prüfen von /var/spool/.*
    !/var/spool/.*
  5. nur Verzeichnis /home/bilder, nicht die darunter liegenden Verzeichnisse in die Datenbank aufnehmen
    =/home/bilder
  6. nicht das Verzeichnis /dev aufnehmen
    !/dev

AIDE definierte Variablen

AIDE hält bereits vordefinierte Variablen bereit. Diese erleichtern die Konfiguration und tragen zur besseren Lesbarkeit bei. Die Variablen sind in der /etc/aide/aide.conf zu finden.

AIDE Variablen

# check permissions, owner, group and file type
OwnerMode = p+u+g+ftype

# Check size and block count
Size = s+b

# Files that stay static
InodeData = OwnerMode+n+i+Size+l+X
StaticFile = m+c+Checksums

# Files that stay static but are copied to a ram disk on startup
# (causing different inode)
RamdiskData = InodeData-i

# Check everything
Full = InodeData+StaticFile

# Files that change their mtimes or ctimes but not their contents
VarTime = InodeData+Checksums

# Files that are recreated regularly but do not change their contents
VarInode = VarTime-i

# Files that change their contents during system operation
VarFile = OwnerMode+n+l+X

# Directories that change their contents during system operation
VarDir = OwnerMode+n+i+X

# Directories that are recreated regularly and change their contents
VarDirInode = OwnerMode+n+X

# Directories that change their mtimes or ctimes but not their contents
VarDirTime = InodeData

Die Verwendung ist recht einfach: z.B. /home/ VarDir, was den Owner (p+u+g+ftype), die Anzahl der Links (n) sowie den Namen der Links (l).

AIDE eigene Konfiguration

Im Verzeichnis /etc/aide/aide.conf.d/ liegen diverse Konfigurationsdateien die vom Aide-Wrapper verwendet werden. Möchte man eine eigene Konfiguration erstellen, wird hier einfach eine Datei wie z.B. 50_aide_custom_rule_texte angelegt. Dort kann das Regelwerk für die Verzeichnisse und Dateien abgelegt werden. Z.b.

  1. # touch /etc/aide/aide.conf.d/50_aide_custom_rule_texte
  2. Inhalt:
    text=s+m+b+p+i+n+g+u+c+l+sha256
    /home/max/daten/texte text
    !/home/max/daten/texte/temp text
  3. Test der Konfiguration mit: # aide -c /etc/aide/aide.conf |less

Das volle Handbuch ist unter: # man aide.conf zu finden

Generell ist es gut die Vereichnisse auszuschließen die sich häufig ändern, wie Logverzeichnisse oder Druckerspoolverzeichnisse. Eine Empfehlung ist es, die Datenbank außerhalb des Servers abzulegen. Z.b. auf eine CD brennen oder auf ein anderes System mittels SFTP zu kopieren. Gleiches gilt für die Konfigurationsdatei, die nur zur Erstellung und dem Vergleich benötigt wird.

Ebenso ist es mit AIDE möglich die Datenbanken von den Servern zu sichern, die Checks z.B. 1x nächtlich laufen zu lassen und dann den Soll-IST-Vergleich (aide –compare) dezentral auf einem anderen Server durchzuführen.

Die Sicherheit der Datenbank und der Konfiguration kann durch eine Signierung dieser erhöht werden. Falls die Datenbank so manuell geändert wird, wird AIDE den Vergleich ablehnen und melden.

AIDE Handbuch: http://aide.sourceforge.net/stable/manual.html

weitere HIDS Tools: integrit, tripwire, tiger,rkhunter, samhain, ossec, debsum, fcheck …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.