{"id":3644,"date":"2023-11-06T07:00:00","date_gmt":"2023-11-06T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3644"},"modified":"2024-03-29T16:06:56","modified_gmt":"2024-03-29T15:06:56","slug":"einfuehrung-in-das-advanced-intrusion-detection-environment-aide","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/einfuehrung-in-das-advanced-intrusion-detection-environment-aide\/","title":{"rendered":"Einf\u00fchrung in das Advanced Intrusion Detection Environment (AIDE)"},"content":{"rendered":"\n<p>Diese Einf\u00fchrung gibt Antworten auf die folgenden Fragen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Was ist ein Intrusion Detection System?<\/li>\n\n\n\n<li>Was ist AIDE?<\/li>\n\n\n\n<li>Wie installiert und konfiguriert man es?<\/li>\n\n\n\n<li>Wie nutzt man AIDE?<\/li>\n<\/ul>\n\n\n\n<p>In dieser Einf\u00fchrung verwendete Betriebssysteme:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debian 12 (Bookworm)<\/li>\n\n\n\n<li>Red Hat Enterprise Linux (RHEL) 9<\/li>\n<\/ul>\n\n\n\n<p>Um dieser Einleitung folgen zu k\u00f6nnen, solltet ihr mit den Grundlagen der Linux-Systemadministration vertraut sein und zumindest mit den folgenden Begriffen etwas anfangen k\u00f6nnen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Unix-Dateirechte\">Linux und Unix-Dateirechte<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/einfuehrung-in-das-grundlegende-konzept-von-selinux\/\" data-type=\"post\" data-id=\"1647\">Grundlagen SELinux<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Inode\">Inode<\/a><\/li>\n\n\n\n<li>Vertraulichkeit<\/li>\n\n\n\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Integrit%C3%A4t_(Informationssicherheit)\">Integrit\u00e4t als Ziel der Informationssicherheit<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Ein <strong>Intrusion Detection System<\/strong> (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Englische_Sprache\">englisch<\/a> <em>intrusion<\/em> \u201eEindringen\u201c, <strong>IDS<\/strong>) bzw. <strong>Angriffserkennungssystem<\/strong> ist ein System zur Erkennung von Angriffen, die gegen ein <a href=\"https:\/\/de.wikipedia.org\/wiki\/Computersystem\">Computersystem<\/a> oder <a href=\"https:\/\/de.wikipedia.org\/wiki\/Rechnernetz\">Rechnernetz<\/a> gerichtet sind. Das IDS kann eine <a href=\"https:\/\/de.wikipedia.org\/wiki\/Firewall\">Firewall<\/a> erg\u00e4nzen oder auch direkt auf dem zu \u00fcberwachenden Computersystem laufen und so die Sicherheit von Netzwerken und Computersystemen erh\u00f6hen. Erkannte Angriffe werden meistens in Log-Dateien gesammelt und Benutzern oder Administratoren mitgeteilt; hier grenzt sich der Begriff von <a href=\"https:\/\/de.wikipedia.org\/wiki\/Intrusion_Prevention_System\">Intrusion Prevention System<\/a> (<a href=\"https:\/\/de.wikipedia.org\/wiki\/Englische_Sprache\">englisch<\/a> <em>prevention<\/em> \u201eVerhindern\u201c, <strong>IPS<\/strong>) ab, welches ein System beschreibt, das Angriffe automatisiert und aktiv verhindert.<\/p>\n<cite>Quelle: <a href=\"https:\/\/de.wikipedia.org\/wiki\/Intrusion_Detection_System\">https:\/\/de.wikipedia.org\/wiki\/Intrusion_Detection_System<\/a> (Letzter Abruf: 2023-09-08)<\/cite><\/blockquote>\n\n\n\n<p>Die Gruppe der Intrusion Detection Systems (IDS) untergliedert sich in:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Host-basierte<\/strong> IDS, welche auf einem Host installiert und betrieben werden<\/li>\n\n\n\n<li><strong>Netz-basierte<\/strong> IDS, welche auf Netzwerkkomponenten installiert werden und die Kommunikation auf Netz-Ebene \u00fcberwachen<\/li>\n\n\n\n<li><strong>Hybride<\/strong> IDS, welche die Komponenten aus den vorstehend genannten Gruppen kombinieren<\/li>\n<\/ul>\n\n\n\n<p>Beim <a href=\"https:\/\/de.wikipedia.org\/wiki\/Advanced_Intrusion_Detection_Environment\">AIDE<\/a> handelt es sich um ein Host-basiertes IDS. Es ist unter der <a href=\"https:\/\/de.wikipedia.org\/wiki\/GNU_General_Public_License\">GPL-2.0<\/a> lizenziert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zweck und Nutzen des AIDE<\/h2>\n\n\n\n<p>Aus dem vorhergehenden Abschnitt ist bekannt, dass es sich bei AIDE um ein Host-basiertes System zur Angriffs- bzw. Einbruchserkennung f\u00fcr Linux-Systeme handelt. Es stellt ein kosteng\u00fcnstiges Werkzeug dar, mit dem die Integrit\u00e4t eines Systems \u00fcberpr\u00fcft werden kann.<\/p>\n\n\n\n<p>Es soll dem Administrator helfen, zu erkennen, ob Dateien oder Verzeichnisse eines Systems hinsichtlich ihres Inhalts und bzw. oder ihrer Eigenschaften wie z.B. Berechtigungen, SELinux-Kontext, erweiterte Attribute, etc. ver\u00e4ndert wurden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grundlegende Funktionsweise des AIDE<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die zu \u00fcberwachenden Dateien und Verzeichnisse werden durch regul\u00e4re Ausdr\u00fccke in der Konfigurationsdatei bestimmt<\/li>\n\n\n\n<li>Basierend auf diesen Regeln wird eine Datenbank erstellt<\/li>\n\n\n\n<li>Nach dem Initialisieren der Datenbank kann AIDE dazuverwendet werden, die Integrit\u00e4t der Dateien und Verzeichnisse zu \u00fcberpr\u00fcfen\n<ul class=\"wp-block-list\">\n<li>Die initial erstellte Datenbank dient dabei als Referenz<\/li>\n\n\n\n<li>Bei folgenen \u00dcberpr\u00fcfungen wird eine neue Datenbank erstellt und mit der Referenzdatenbank verglichen<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u00c4nderungen an \u00fcberwachten Dateien und Verzeichnissen werden in der Logdatei <code>\/var\/log\/aide\/aide.log<\/code> protokolliert<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"schwaechen\">Schw\u00e4che von AIDE und Host-basierter IDS im Allgemeinen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Programm, Konfigurationsdatei(en), Datenbank und Logdatei liegen lokal auf dem jeweiligen Host<\/li>\n\n\n\n<li>Angreifer, welche lokale Dateien ver\u00e4ndern k\u00f6nnen, k\u00f6nnen potenziell auch die zu AIDE geh\u00f6renden Dateien ver\u00e4ndern<\/li>\n\n\n\n<li>Dadurch muss die Integrit\u00e4t der zur Integrit\u00e4tspr\u00fcfung eingesetzten IDS bezweifelt werden<\/li>\n<\/ul>\n\n\n\n<p>Um diese Schw\u00e4che zu minimieren, sind folgende Ma\u00dfnahmen durch Administratoren in Erw\u00e4gung zu ziehen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Logdateien an einen zentralen Loghost senden<\/li>\n\n\n\n<li>Die AIDE-Referenzdatenbank au\u00dferhalb des zu \u00fcberwachenden Hosts speichern<\/li>\n\n\n\n<li>Den Abgleich gegen die AIDE-Referenzdatenbank au\u00dferhalb des zu \u00fcberwachenden Hosts durchf\u00fchren<\/li>\n<\/ul>\n\n\n\n<p>Wie diese Ma\u00dfnahmen umgesetzt werden k\u00f6nnen, beschreibe ich in einem folgenden Beitrag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Auswirkungen auf die eigene Arbeitsweise<\/h3>\n\n\n\n<p>Werden beispielsweise Konfigurationsdateien unterhalb von <code>\/etc<\/code> auf \u00c4nderungen hin \u00fcberwacht, wird auch jede beabsichtige \u00c4nderung protokolliert. Das Programm kann zwischen legitimen und unautorisierten \u00c4nderungen nicht unterscheiden.<\/p>\n\n\n\n<p>Daher ist nach jeder legitimen \u00c4nderungen die Referenzdatenbank zu aktualisieren. Ich empfehle, dies als einen Schritt in den Konfiguration-Management-Workflow zu integrieren und diese Aufgabe einen Automaten wie Ansible, Chef, Puppet o.\u00e4. erledigen zu lassen. Dies erscheint mir weniger fehleranf\u00e4llig zu sein als bei einer manuellen Durchf\u00fchrung, wo dieser Schritt sicher gern einmal vergessen wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Installation von AIDE<\/h2>\n\n\n\n<p>AIDE ist in den Paketquellen der meisten Distributionen vorhanden und kann wie folgt installiert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RHEL 9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo dnf in aide\n&#91;sudo] password for tronde: \nUpdating Subscription Management repositories.\nLast metadata expiration check: 2:26:44 ago on Fri 08 Sep 2023 08:16:28 PM CEST.\nDependencies resolved.\n================================================================================\n Package Arch      Version            Repository                           Size\n================================================================================\nInstalling:\n aide    x86_64    0.16-100.el9       rhel-9-for-x86_64-appstream-rpms    154 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 154 k\nInstalled size: 354 k\nIs this ok &#91;y\/N]: \n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Obiger Code-Block zeigt die Installationsanweisung f\u00fcr RHEL 9<\/li>\n\n\n\n<li>Die Konfigurationdatei <code>\/etc\/aide.conf<\/code> besitzt im Auslieferungszustand bereits 303 Zeilen; ohne Kommentare und Leerzeilen sind es immerhin noch 161<\/li>\n\n\n\n<li>Den Aufbau der Datei erkl\u00e4rt die Manpage <code>aide.conf(5)<\/code><\/li>\n\n\n\n<li>Um AIDE sinnvoll nutzen zu k\u00f6nnen, sollte sich jeder Administrator mit dem Inhalt von <code>\/etc\/aide.conf<\/code> vertraut machen; oder w\u00fcrdet ihr einem Firewall-Regelwerk vertrauen, das ihr nicht kennt?<\/li>\n\n\n\n<li>Im Abschnitt <a href=\"#gedanken-konfiguration\">\u201eGedanken zur Konfiguration von AIDE\u201c<\/a> findet ihr meine Gedanken und Hinweise zur Konfiguration<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Debian 12 (Bookworm)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install aide\n&#91;sudo] password for jkastning: \nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nThe following additional packages will be installed:\n  aide-common liblockfile-bin liblockfile1 libmhash2\nSuggested packages:\n  figlet\nThe following NEW packages will be installed:\n  aide aide-common liblockfile-bin liblockfile1 libmhash2\n0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 372 kB of archives.\nAfter this operation, 1064 kB of additional disk space will be used.\nDo you want to continue? &#91;Y\/n]<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Obiger Code-Block zeigt die Installationsanweisung f\u00fcr Debian 12<\/li>\n\n\n\n<li>Neben <code>aide<\/code> werden noch die Pakete <code>aide-common<\/code>, <code>liblockfile-bin<\/code>, <code>liblockfile1<\/code> und `libmhash2` installiert\n<ul class=\"wp-block-list\">\n<li>Neben der Konfigurationdatei <code>\/etc\/aide\/aide.conf<\/code> installiert Debian auch das Verzeichnis <code>\/etc\/aide\/aide.conf.d<\/code>, in welchem sich direkt nach der Installation schon etliche Konfigurationsdateien befinden:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ls -l \/etc\/aide\/aide.conf.d\/ | wc -l\n212<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Auch hier empfehle ich Administratoren, sich mit der Konfiguration zu besch\u00e4ftigen und sich damit vertraut zu machen (siehe dazu auch aide.conf(5))<\/li>\n\n\n\n<li>Im folgenden Abschnitt <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-admin\/post.php?post=3644&amp;action=edit#gedanken-konfiguration\">\u201eZur Konfiguration von AIDE\u201c<\/a> findet ihr meine Gedanken und Hinweise zur Konfiguration<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"gedanken-konfiguration\">Zur Konfiguration von AIDE<\/h2>\n\n\n\n<p>W\u00e4hrend AIDE in RHEL \u00fcber eine einzige Datei (<code>\/etc\/aide.conf<\/code>) konfiguriert wird, gibt es in Debian eine Konfigurationsdatei (<code>\/etc\/aide\/aide.conf<\/code>) und die Verzeichnisse <code>\/etc\/aide\/aide.conf.d<\/code> sowie <code>\/etc\/aide\/aide.settings.d<\/code>, welche weitere Dateien zur Konfiguration und Einstellungen beinhalten.<\/p>\n\n\n\n<p>Eine AIDE-Konfigurationsdatei <code>aide.conf<\/code> besteht aus drei verschiedenen Arten von Zeilen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Optionen, welche die Konfigurationsparameter und Gruppen definieren; aufgebaut sind diese nach dem Muster <code>Parameter = Wert<\/code> bzw. <code>Gruppenname = Wert<\/code><\/li>\n\n\n\n<li>Regeln, welche bestimmen, welche Dateien und Verzeichnisse in die Datenbank aufzunehmen sind und welche Attribute \u00fcberwacht werden sollen<\/li>\n\n\n\n<li>Macros, mit denen sich Variablen definieren lassen; z.B. definierte <code>@@define foo bar<\/code> die Variable <code>foo<\/code> mit dem Wert <code>bar<\/code><\/li>\n<\/ul>\n\n\n\n<p>AIDE kann die folgenden Attribute bzw. Elemente von Dateien auf \u00c4nderungen hin \u00fcberwachen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#p:      permissions\n#i:      inode\n#n:      number of links\n#u:      user\n#g:      group\n#s:      size\n#b:      block count\n#m:      mtime\n#a:      atime\n#c:      ctime\n#S:      check for growing size\n#acl:           Access Control Lists\n#selinux        SELinux security context\n#xattrs:        Extended file attributes\n#md5:    md5 checksum\n#sha1:   sha1 checksum\n#sha256:        sha256 checksum\n#sha512:        sha512 checksum\n#rmd160: rmd160 checksum\n#tiger:  tiger checksum<\/code><\/pre>\n\n\n\n<p>Der folgende Code-Block zeigt die Definition der beiden Gruppen <code>NORMAL<\/code> und <code>DIR<\/code> (aus der <code>\/etc\/aide.conf<\/code> in RHEL 9), welche spezifizieren, welche Attribute \u00fcberwacht werden sollen, wenn die jeweilige Gruppe in einer Regel verwendet wird.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NORMAL = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha512\n\n# For directories, don't bother doing hashes\nDIR = p+i+n+u+g+acl+selinux+xattrs<\/code><\/pre>\n\n\n\n<p>Welche Dateien und Verzeichnisse in die AIDE-Datenbank aufzunehmen bzw. auszuschlie\u00dfen sind durch regul\u00e4re Ausdr\u00fccke bestimmt. Der n\u00e4chste Code-Block zeigt drei Beispiele, die anschlie\u00dfend erl\u00e4utert werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc NORMAL\n=\/var\/log\/ DIR\n=\/home DIR\n!\/dev<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das Verzeichnis <code>\/etc<\/code> und alle darunterliegenden Dateien und Verzeichnisse werden in die AIDE-Datenbank aufgenommen und mit den Regeln aus der Gruppe <code>NORMAL<\/code> verkn\u00fcpft<\/li>\n\n\n\n<li>Nur das Verzeichnis <code>\/var\/log\/<\/code> und die direkt darunter befindlichen Dateien und Verzeichnisse werden in die AIDE-Datenbank aufgenommen und mit der Gruppe <code>DIR<\/code> verkn\u00fcpft; der Inhalt der Unterverzeichnisse wird <strong>nicht<\/strong> in die Datenbank aufgenommen<\/li>\n\n\n\n<li>Ausschlie\u00dflich <code>\/home<\/code> wird aufgenommen; nicht jedoch der Inhalt davon<\/li>\n\n\n\n<li>Das Verzeichnis <code>\/dev<\/code> und alle darunterliegenden Dateien und Verzeichnisse werden <strong>nicht<\/strong> in die AIDE-Datenbank aufgenommen<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Initialisierung der AIDE-Datenbank<\/h2>\n\n\n\n<p>Mit Sicherheit und Vertrauen ist das immer so eine Sache. Am besten ist es stets, wenn Vertrauen f\u00fcr Sicherheit nicht erforderlich ist. Daher rate ich an dieser Stelle nochmals ausdr\u00fccklich, die AIDE-Konfiguration zu \u00fcberpr\u00fcfen und ggf. den eigenen Bed\u00fcrfnissen anzupassen\u2026 Nur um direkt gegen meinen eigenen Rat zu versto\u00dfen.<\/p>\n\n\n\n<p>Der Umfang an Regeln ist in beiden Systemen so gro\u00df, dass ich in dieser Einf\u00fchrung nicht alle einzeln erl\u00e4utern kann. Ich vertraue f\u00fcr diese Einf\u00fchrung daher darauf, dass die Distributionen eine sinnvolle Konfiguration ausliefern.<\/p>\n\n\n\n<p>Initialisiert wird die Datenbank je nach Distribution mit einem leicht abgewandelten Befehl.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel mit RHEL 9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo time aide --init\nStart timestamp: 2023-09-18 20:50:06 +0200 (AIDE 0.16)\nAIDE initialized database at \/var\/lib\/aide\/aide.db.new.gz\n\nNumber of entries:      54290\n\n---------------------------------------------------\nThe attributes of the (uncompressed) database(s):\n---------------------------------------------------\n\n\/var\/lib\/aide\/aide.db.new.gz\n  MD5      : xOf5Bs\/Hb2Caa5i2K41fbg==\n  SHA1     : KoCkqwfe+oZ2rlQTAU+AWQBrt2I=\n  RMD160   : eM6IC68wq1VRhDbyHhRqy+63ldI=\n  TIGER    : lQC+UTBqUm0iEDdKA0u7THqAPLNQxegH\n  SHA256   : vdzjqIr\/m7FgjXdZLQG+D1Pvf75WlF17\n             WYiA6gU+4Pg=\n  SHA512   : EdMB0I92j05zlfjXHcJFasZCAvkrK9br\n             6zQEcDfD4IDM8D9c1Sz0r7A5tJTKGXVZ\n             AFCOJR65j66ihKB0suFS6w==\n\n\nEnd timestamp: 2023-09-18 20:50:19 +0200 (run time: 0m 13s)<\/code><\/pre>\n\n\n\n<p>Die erzeugte Datenbank wird umbenannt, indem das <code>new<\/code> aus dem Dateinamen entfernt wird.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo mv \/var\/lib\/aide\/aide.db.new.gz \/var\/lib\/aide\/aide.db.gz<\/code><\/pre>\n\n\n\n<p>Die umbenannte Datei stellt die Referenzdatenbank dar, gegen die mit dem Befehl <code>aide --check<\/code> gepr\u00fcft werden kann, ob es \u00c4nderungen im Dateisystem gab.<\/p>\n\n\n\n<p>In diesem Artikel gebe ich mich damit zufrieden, dass die Datenbank auf dem zu \u00fcberwachenden Host liegt und damit dem Risiko unterliegt, von einem Angreifer manipuliert zu werden (<a href=\"#schwaechen\">siehe zu den Schw\u00e4chen oben<\/a>). Ich gehe in einem Folgeartikel darauf ein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel mit Debian 12<\/h3>\n\n\n\n<p>Unter Debian wird die AIDE-Datenbank mit dem Wrapper-Script <code>aideinit<\/code> (siehe <code>aideinit(8)<\/code>) initialisiert. Das README unter <code>\/usr\/share\/doc\/aide-common\/README.Debian.gz<\/code> warnt bereits davor, dass Debian mit zu restriktiven Einstellungen daherkommt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Configuring AIDE the Debian way<br>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br>AIDE&#8217;s Debian default configuration takes a very paranoid stance and<br>is likely to report more changes than you will need to focus your<br>attention on.<\/p>\n<cite>\/usr\/share\/doc\/aide-common\/README.Debian.gz<\/cite><\/blockquote>\n\n\n\n<p>Lassen wir uns \u00fcberraschen\u2026<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo time aideinit\nRunning aide --init...\n7044.57user 54.97system 2:00:40elapsed 98%CPU (0avgtext+0avgdata 132408maxresident)k\n231120192inputs+88320outputs (12major+66397minor)pagefaults 0swaps<\/code><\/pre>\n\n\n\n<p>Das hat deutlich l\u00e4nger gedauert und endete mit einer deutlich k\u00fcrzeren Ausgabe. Die erzeugte Datenbank ist jedoch wie bei RHEL im Verzeichnis <code>\/var\/lib\/aide\/<\/code> zu finden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>:~# ls -l \/var\/lib\/aide\/\ntotal 43536\n-rw------- 1 root  root  22286930 Sep 19 15:13 aide.db\n-rw------- 1 _aide _aide 22286930 Sep 19 15:13 aide.db.new\n:~# qm start 102\n:~# file \/var\/lib\/aide\/aide.db.new \n\/var\/lib\/aide\/aide.db.new: gzip compressed data, max compression, from Unix, original size modulo 2^32 44239215\n:~# file \/var\/lib\/aide\/aide.db\n\/var\/lib\/aide\/aide.db: gzip compressed data, max compression, from Unix, original size modulo 2^32 44239215<\/code><\/pre>\n\n\n\n<p>Warum die Erstellung so viel l\u00e4nger gedauert hat, wei\u00df ich nicht. Ich habe keine Idee dazu. Auch Debian erzeugt eine <code>gzip<\/code>-komprimierte Datenbank, auch wenn hier keine Dateiendung darauf hinweist. Ich finde das etwas seltsam, behalte die Standardeinstellung f\u00fcr diese Einf\u00fchrung jedoch bei. Daf\u00fcr muss die Datei nicht manuell umbenannt werden, da direkt eine Kopie erstellt wird, die als Referenzdatenbank genutzt werden kann.<\/p>\n\n\n\n<p>Im Gegensatz zu RHEL wird unter Debian auch ein Timer namens <code>dailyaidecheck.timer<\/code> installiert, welcher t\u00e4glich einen automatischen Check auf Ver\u00e4nderungen durchf\u00fchrt. Allerdings ist es f\u00fcr einen Angreifer ein Leichtes, diese Timer-Unit zu deaktivieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Auf \u00c4nderungen pr\u00fcfen<\/h2>\n\n\n\n<p>Unter Debian und RHEL werden die in der Referenzdatenbank enthaltenen Elemente mit folgendem Befehl auf \u00c4nderungen \u00fcberpr\u00fcft:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>:~# aide --check                                    # unter RHEL\n:~# aide --check --config \/etc\/aide\/aide.conf       # unter Debian<\/code><\/pre>\n\n\n\n<p>Ich habe meine Testsysteme ein paar Tage laufen lassen und einen AIDE-Integrit\u00e4tscheck durchgef\u00fchrt. Hier das Ergebnis f\u00fcr ein RHEL 9 System:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo aide --check\nStart timestamp: 2023-09-26 19:54:59 +0200 (AIDE 0.16)                          \nAIDE found differences between database and filesystem!!                        \n                                                                                \nSummary:                                                                        \n  Total number of entries:      54290   \n  Added entries:                0                                               \n  Removed entries:              0                                               \n  Changed entries:              3                                               \n                                                                                \n---------------------------------------------------                             \nChanged entries:                                                                \n---------------------------------------------------               \n                                                                                \nf = ...    . ..S : \/var\/log\/insights-client\/insights-client.log.3               \nf &lt; ...    . ... : \/var\/log\/rhsm\/rhsmcertd.log                                  \nf &lt; ...    . ... : \/var\/log\/squid\/cache.log                                     \n                                                                                \n---------------------------------------------------              \nDetailed information about changes:\n---------------------------------------------------                             \n                                                                                \nFile: \/var\/log\/insights-client\/insights-client.log.3                            \n  SELinux  : system_u:object_r:insights_clien | unconfined_u:object_r:insights_c\n             t_var_log_t:s0                   | lient_var_log_t:s0\n                                                                                \nFile: \/var\/log\/rhsm\/rhsmcertd.log                                               \n  Size     : 1426                             | 1343                            \n                                                                                \nFile: \/var\/log\/squid\/cache.log                                                  \n  Size     : 6230                             | 334              \n                                                                                \n                                                                                \n---------------------------------------------------\nThe attributes of the (uncompressed) database(s):                               \n---------------------------------------------------                             \n                                                                                \n\/var\/lib\/aide\/aide.db.gz                                                        \n  MD5      : xOf5Bs\/Hb2Caa5i2K41fbg==   \n  SHA1     : KoCkqwfe+oZ2rlQTAU+AWQBrt2I=                                       \n  RMD160   : eM6IC68wq1VRhDbyHhRqy+63ldI=                                       \n  TIGER    : lQC+UTBqUm0iEDdKA0u7THqAPLNQxegH                                   \n  SHA256   : vdzjqIr\/m7FgjXdZLQG+D1Pvf75WlF17                                   \n             WYiA6gU+4Pg=                                                       \n  SHA512   : EdMB0I92j05zlfjXHcJFasZCAvkrK9br                                   \n             6zQEcDfD4IDM8D9c1Sz0r7A5tJTKGXVZ                     \n             AFCOJR65j66ihKB0suFS6w==                                           \n                                                                                \n                                                                                \nEnd timestamp: 2023-09-26 19:55:12 +0200 (run time: 0m 13s)<\/code><\/pre>\n\n\n\n<p>Die Integrit\u00e4tspr\u00fcfung in obigen Code-Block f\u00fchrt \u00c4nderungen an drei Dateien auf:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das SELinux-Label einer Log-Datei hat sich ge\u00e4ndert<\/li>\n\n\n\n<li>Die Gr\u00f6\u00dfe von zwei weiteren Log-Dateien hat sich ge\u00e4ndert<\/li>\n\n\n\n<li>Die \u00c4nderungen werden in einer Zusammenfassung und im Detail ausgegeben<\/li>\n\n\n\n<li>Eine Erl\u00e4uterung zur Ausgabe unter &#8222;Changed entries&#8220; findet sich im Absatz <code>summarize_changes<\/code> in aide.conf(5).<\/li>\n\n\n\n<li>Man erh\u00e4lt Informationen dar\u00fcber, was sich ge\u00e4ndert hat, nicht warum sich diese \u00c4nderungen ergeben haben<\/li>\n<\/ul>\n\n\n\n<p><strong>Abbruch meiner Tests unter Debian 12 (Bookworm)<\/strong><\/p>\n\n\n\n<p>Unter Debian hat die Integrit\u00e4tspr\u00fcfung \u00fcber Stunden einen CPU-Kern blockiert. Der Prozess ist in einem <code>futex<\/code> Syscall h\u00e4ngen geblieben.<\/p>\n\n\n\n<p>Ob es an meinem System liegt oder AIDE unter Debian generell ein Problem hat, kann ich nicht sagen. Ich bin der Sache nicht weiter nachgegangen.<\/p>\n\n\n\n<p>Falls jemand von euch AIDE unter Debian einsetzt und dies liest, freue ich mich, wenn ihr eure Erfahrungen mit mir teilt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Referenzdatenbank aktualisieren<\/h2>\n\n\n\n<p>Mit dem Befehl <code>aide --update<\/code> wird die Datenbank-Integrit\u00e4t gepr\u00fcft und eine neue Datenbank <code>\/var\/lib\/aide\/aide.db.new.gz<\/code> erzeugt. Die bestehende Referenzdatenbank <code>\/var\/lib\/aide\/aide.db.gz<\/code> wird dabei nicht \u00fcberschrieben und bleibt zun\u00e4chst erhalten. M\u00f6chte man diese l\u00e4nger aufbewahren, kann man sie umbenennen und bspw. einen Zeitstempel anh\u00e4ngen. Anschlie\u00dfend erzeugt man mit <code>mv \/var\/lib\/aide\/aide.db.new.gz \/var\/lib\/aide\/aide.db.gz<\/code> eine neue Referenzdatenbank.<\/p>\n\n\n\n<p>Der folgende Code-Block zeigt die Ausgabe von <code>aide --update<\/code> unter RHEL 9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~]# aide --update                                            \nStart timestamp: 2023-09-26 20:13:52 +0200 (AIDE 0.16)\nAIDE found differences between database and filesystem!!\nNew AIDE database written to \/var\/lib\/aide\/aide.db.new.gz\n                                                                                \nSummary:                                \n  Total number of entries:      54290\n  Added entries:                0\n  Removed entries:              0    \n  Changed entries:              3                                               \n                                                                                \n---------------------------------------------------\nChanged entries:                                                                \n---------------------------------------------------\n                                                                                \nf = ...    . ..S : \/var\/log\/insights-client\/insights-client.log.3\nf &lt; ...    . ... : \/var\/log\/rhsm\/rhsmcertd.log\nf &lt; ...    . ... : \/var\/log\/squid\/cache.log\n\n---------------------------------------------------        \nDetailed information about changes:                                             \n---------------------------------------------------\n\nFile: \/var\/log\/insights-client\/insights-client.log.3                     &#91;0\/100]\n  SELinux  : system_u:object_r:insights_clien | unconfined_u:object_r:insights_c\n             t_var_log_t:s0                   | lient_var_log_t:s0\n                                                                                \nFile: \/var\/log\/rhsm\/rhsmcertd.log                                               \n  Size     : 1426                             | 1343                            \n                                                                                \nFile: \/var\/log\/squid\/cache.log                                                  \n  Size     : 6230                             | 334                             \n                                        \n                                                                                \n---------------------------------------------------                             \nThe attributes of the (uncompressed) database(s):\n---------------------------------------------------         \n                                        \n\/var\/lib\/aide\/aide.db.gz       \n  MD5      : xOf5Bs\/Hb2Caa5i2K41fbg==                                           \n  SHA1     : KoCkqwfe+oZ2rlQTAU+AWQBrt2I=                                       \n  RMD160   : eM6IC68wq1VRhDbyHhRqy+63ldI=              \n  TIGER    : lQC+UTBqUm0iEDdKA0u7THqAPLNQxegH                                   \n  SHA256   : vdzjqIr\/m7FgjXdZLQG+D1Pvf75WlF17         \n             WYiA6gU+4Pg=                                                       \n  SHA512   : EdMB0I92j05zlfjXHcJFasZCAvkrK9br            \n             6zQEcDfD4IDM8D9c1Sz0r7A5tJTKGXVZ                                   \n             AFCOJR65j66ihKB0suFS6w==   \n                                        \n\/var\/lib\/aide\/aide.db.new.gz     \n  MD5      : Dgoc1\/L5F1UfXPAQRvMdTg==\n  SHA1     : 23RFwEBIh0kw\/3TiiVAh39Fzx0Q=                                       \n  RMD160   : 1szie2CW1dyLmaKFg01j48Fr+Us=                                       \n  TIGER    : TgdG3zNAOSZH2D9jkyvBves8PtjC0lCR      \n  SHA256   : hjn9vxFxg4KoVwT3YvgU347EhvTCg5ey                                   \n             lfktpr\/OrcA=                                                       \n  SHA512   : x6E3YPa0eILD3nZqDt6N755KSmPRFOz8                                   \n             lhKD9CimYScSpxyoVxJAVWiozR8KUwkt                    \n             Ao7mgy3BgtUA0MZuNMv43w==                                           \n                                                                                \n\nEnd timestamp: 2023-09-26 20:14:03 +0200 (run time: 0m 11s)\n~]# ls -l \/var\/lib\/aide                                      \ntotal 6184                                                                      \n-rw-------. 1 root root 3163359 Sep 18 20:50 aide.db.gz                         \n-rw-------. 1 root root 3163384 Sep 26 20:14 aide.db.new.gz<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Ende<\/h2>\n\n\n\n<p>An dieser Stelle endet die Einf\u00fchrung in das Advanced Intrusion Detection Environment (AIDE). Kommt das Ende f\u00fcr euch abrupt? Ist es ein Ende mit Schrecken? Lasst es mich gern wissen.<\/p>\n\n\n\n<p>In dieser Einf\u00fchrung habe ich beschrieben, was Intrusion-Detection-Systeme im Allgemeinen und AIDE im Speziellen sind. Ich bin auf deren Nutzen eingegangen und habe die Schw\u00e4chen von AIDE als Host-basiertem IDS benannt. Installation, Konfiguration, Integrit\u00e4ts-Check und Aktualisierung der Datenbank wurden erkl\u00e4rt und mit Beispielen belegt.<\/p>\n\n\n\n<p>Was ist nun von AIDE zu halten?<\/p>\n\n\n\n<p>Nun, es ist besser als nichts. Man besitzt damit ein Werkzeug, mit dem sich \u00c4nderungen im Dateisystem erkennen lassen. Man muss sich jedoch der Schw\u00e4chen Host-basierter IDS bewusst sein. Ein Angreifer mit lokalen root-Rechten kann dieses Werkzeug mit wenig Aufwand unsch\u00e4dlich machen bzw. die eigenen \u00c4nderungen verschleiern.<\/p>\n\n\n\n<p>Sicher kann man einen Integrit\u00e4tscheck automatisiert alle 5 Minuten durchf\u00fchren und f\u00fcr \u00c4nderungen eine E-Mail-Benachrichtigung einrichten. Doch wirkt dies etwas hemds\u00e4rmelig. Daher werde ich dieses Thema in einem sp\u00e4teren Artikel aufgreifen und zeigen, wie man AIDE in einen Automations- bzw. Konfigurations-Management-Prozess einbinden kann.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diese Einf\u00fchrung gibt Antworten auf die folgenden Fragen: In dieser Einf\u00fchrung verwendete Betriebssysteme: Um dieser Einleitung folgen zu k\u00f6nnen, solltet ihr mit den Grundlagen der Linux-Systemadministration vertraut sein und zumindest mit den folgenden Begriffen etwas anfangen k\u00f6nnen: Einleitung Ein Intrusion Detection System (englisch intrusion \u201eEindringen\u201c, IDS) bzw. Angriffserkennungssystem ist ein System zur Erkennung von Angriffen,<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/einfuehrung-in-das-advanced-intrusion-detection-environment-aide\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[3],"tags":[807,804,805,808,809,806,430,305],"class_list":["post-3644","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-advanced-intrustion-detection-environment","tag-aide","tag-ids","tag-integritaetscheck","tag-integritaetsueberpruefung","tag-intrusion-detection-system","tag-osbn","tag-planet"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3644"}],"version-history":[{"count":18,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3644\/revisions"}],"predecessor-version":[{"id":3834,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3644\/revisions\/3834"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}