AIDE - Advanced Intrusion Detection System

Dem bekannten Vorbild Tripwire nachempfunden, ist AIDE seine Nachfolge unter GPL angetreten.

* Wozu AIDE? (Index)

AIDE dient der hostbasierten Intrusion Detection (HIDS), d.h. es gegneriert
einen Fingerabdruck des Systems. Diese Datenbank kann dann gegen
das System abgeglichen werden um Veränderungen in Dateien anzuzeigen und daraus
Rückschlüsse auf z.B.Hacks, Würmer oder Rootkits zu ziehen.
Damit die erzeugte Datenbank zuverlässig eingesetzt werden kann sollte sie
erzeugt werden bevor der Rechner in ein Netzwerk eingebunden wird.

* Wie? (Index)

AIDE durchläuft die vorher definierten Verzeichnisse und erstellt besagte
Datenbank mit verschiedenen ebenfalls übergebenen Optionen / Dateiattributen.

Diese Optionen sind : (Regelzeichen und Bedeutung )
p : Dateirechte
i : INODE
n : Anzahl der Links
u : Nutzer
g : Group
s : Size
b : Block
m : mtime, Erstellzeitpunkt
a : atime, Zugriffszeitpunkt
c : ctime, Veränderungszeitpunkt
S : auf wachsende Größe prüfen
md5 : MD5 Checksumme
sha1 : SHA1 Checksumme
rmd160 :rmd160 Checksumme
tiger : Tiger Checksumme
R : p+i+n+u+g+s+m+c+md5
L : p+i+n+u+g
E : Empty group
> : Growing logfile p+u+g+i+n+S

die ersten Optionen p - S sind selbsterklärend, da es aber möglich ist diese Daten
zu fälschen, (z.B. mittels Kernelmodifikation oder Rootkit) verwendet AIDE noch
weitere Möglichkeiten, nämlich 4 verschiedene Prüfsummenverfahren (md5, sha1,
rmd160, tiger).Diese Prüfsummenverfahren bestehen aus verschiedenen mathematischen
Methoden die eine eindeutige Summe über die Attribute einer Datei erzeugen, daher
können Manipulationen nahezu ausgeschlossen werden.

* Ein Beispiel anhand von MD5 (Index)

MD5 ist ein kryptographischer Alghoritmus, der zwar in der Kryptologie als
veraltet gilt (SHA1 wird empfohlen),als Prüfsumme aber ausreicht.
Das Grundprinzip ist recht einfach, wenn man einen Text verschlüsseln will, muß
der Algorithmus bijektiv sein, d.h. man muß einen Text codieren können und
natürlich auch wieder rückwärts aus dem Code den Originaltext entschlüsseln
können. Das bedeutet das es zu jedem Text einen *eindeutigen* Code und umgekehrt
(bijektiv) gibt. Also lassen sich damit Daten verifizieren wie z.B. bei der
PGP-Signatur.
MD5 bildet eine 128 Bit Prüfsumme, also gibt es exakt 2^128 (ca. 1x10^39)
verschiedene Prüfsummen, dies bedeutet das bei mehr als 1x10^39 Dateien Menge
an eindeutigen Prüfsummen erschöpft ist und mehrere identische Prüfsummen vergeben
werden. Bis heute ist es allerdings nicht gelungen zu einer vorgegebenen MD5 Summe
die passende Datei zu rekonstruieren, trotzdem wurde bereits 1996 eine Kollision
in der MD5 Komprimierungsmethode von Hans Dobbertin gefunden.
SHA-1
(auch SHS genannt) ist ein Algorithmus der von der US Regierung herausgebracht
wurde. Er generiert einen 160 Bit Hashaus einem beliebigen String.
RIPEMD-160
RMD-160 produziert einen 160 Bit Hash, läuft ziemlich schnell (ca. 45 MB/S auf
einem PI/100) und ist Public Domain.
Tiger
von Anderson und Biham.
Die Geschwindigskeitunterschiede der Algorithmen sollten sich auf normalen Heimsystemen
in Grenzen halten, hier einige Vergleichswerte für das Initiieren der Datenbank
P1/100 32MB RAM, SuSE 7.2, /usr Verzeichnis, 160MB, 993 Dateien
RMD160 : 18 sek - Tiger : 19 sek
MD5 : 20 sek - SHA1 : 17 sek
DEC Alpha 21066, 48MB RAM, NetBSD 1.5.2 Alpha, /usr Verzeichnis,
RMD160 : 12 sek - Tiger : 11 sek
MD5 : 11 sek - SHA1 : 10 sek
auf einem "großen" Produktionsserver können sich natürlich durchaus Unterschiede
bemerkbar machen, es empfiehlt sich hier einfach einen Testlauf zu machen und zu
sehen welcher Algorithmus am schnellsten ist (ich tendiere in Richtung SHA1 und RMD 160).
Man kann die Prüfverfahren natürlich beliebig kombinieren und so mehrere
Prüfsummendatenbanken erstellen, welche zu fälschen unmöglich sein sollte, oder
verschiedene Konfigurationen erstellen, die per cron durchlaufen, z.B. einen
einfachen Dateiattributecheck bei jedem Start und nachts oder am Wochenende einen
Durchlauf mit allem Prüfsummen.
Probleme und Gefahren
AIDE soll dazu dienen Backdoors und Rootkits zu entdecken, Rootkits sind Scripts
die auf einem penetrierten System installiert werden um die Anwesenheit des
Einbrechers zu vertuschen. Dazu gehören Kernelmodifikationen, austauschen verschiedener
Systemprogramme wie ls md5 oder lsof und natürlich auch die
Gefahr der Modifikation der AIDE Datenbank oder gar des AIDE Binary. Daher sollte
die AIDE Datenbank auf einem hardwaremäßig schreibgeschützten Medium
(CD, Floppy mit Schreibschutz) liegen. In der Regel sollte die DB auf eine Floppy
passen oder nach Verzeichnissen getrennt auf mehrere Disketten verteilt werden,
man kann auch das Binary und conf-File auf eine Diskette bannen und das Paket
mittels pkg_delete aide-x.x (oder dem rpm-Pendant) deinstallieren,
so erfährt ein Einbrecher nicht unmittelbar von der Existenz AIDEs.

* Initiieren der Datenbank: (Index)

$aide -i
generiert eine neue Datenbank, welche standardmäßig unter /usr/pkg/etc/aide.db.new liegt.
Vorgaben entnimmt Aide der Konfigurationstdatei /usr/pkg/etc/aide.conf
$aide -C
Überprüft die Datenbank, erzeugt einen Report
$aide -u
Überprüfen der Datenbank und automatisches Update
$aide -c foo.bar
Konfigurationsdatei foo.bar soll verwendet werden

* Optionen in aide.conf sind unter anderem: (Index)

database = file:///etc/aide.db
% Speicherort der Datenbank im URL-Format (also % file:///pfad/zur/datei)
database_new = file:///etc/aide.db.new
% Speicherort der zu erstellenden Datenbank
report_url = file:///root/aide.report
% Speicherort des generierten Reports, kann auch per -r übergeben werden
heavy = p+i+n+g+u+s+S+rmd160+md5
% Definition des "Makros" heavy, es können beliebige Optionen übergeben werden
/bin heavy
% Das Verzeichnis /bin soll mit den Optionen heavy geprüft werden
/dev u+g+i+s+S
% Das Verzeichnis /bin soll mit den Optionen u g i s S geprüft werden
!/var/spool/
% Das Verzeichnis /var/spool soll nicht geprüft werden
% Es bietet sich an Verzeichnisse die sich oft ändern nicht (zu
% paranoid) zu prüfen.

Kleines Beispiel aus einer Datenbank:

# This file was generated by Aide, version 0.6
# Time of generation was 2002-03-01 16:21:17
@@db_spec name uid gid size inode perm count md5 rmd160
/* verwendete Attribute */ /usr 0 0 512 2 40755 14 0 0
/usr/bin 0 0 4608 26368 40755 2 0 0
/usr/bin/Mail 0 0 110880 26369 100555 3 imGFDbIE2vmgcor1KxliHg== wnBz4gYF68eNgR5v0whfRt2+BJM=
/usr/bin/apply 0 0 10416 26370 100555 1 Cm8vqBULhAszAtgvD2idAQ== oGh2RGqujlh1Hm1sU2VjAs+HZgg=
/usr/bin/apropos 0 0 13040 26371 100555 1 K2mwO7ixww/UHU7l245QZA== kDPnhB+TE3bLj5/aTssurDBx2t8=
/usr/bin/at 0 0 32216 26372 104555 4 NowA6KW8osFIQ5sivNVShA== Hpi7dZJpLWPygcu9U0fwxplapPQ=
/usr/bin/atq 0 0 32216 26372 104555 4 NowA6KW8osFIQ5sivNVShA== Hpi7dZJpLWPygcu9U0fwxplapPQ=
/usr/bin/atrm 0 0 32216 26372 104555 4 NowA6KW8osFIQ5sivNVShA== Hpi7dZJpLWPygcu9U0fwxplapPQ=

net-tex.de, Index
\$Id: aide.html,v 1.30 2014/08/21 09:24:02 stefan Exp $


$Log: aide.html,v $ Revision 1.30 2014/08/21 09:24:02 stefan Umlaute und Makefile clean up

Autor: Stefan Schumacher für net-tex.de/cryptomancer.de, PGP-Key 0xB3FBAE33

Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com