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.
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.
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 lsmd5 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.
$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
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.