Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:aide [14.03.2025 10:04. ] – [AIDE Command Options] djangolinux:aide [15.03.2025 09:08. ] (aktuell) – [Konfiguration] /etc/aide.conf aktualisiert django
Zeile 1: Zeile 1:
-====== Host based Intrusion Detection System mit AIDE unter Arch ======+====== Host based Intrusion Detection System mit AIDE unter Arch Linux ======
 ===== HIDS - was ist das und wozu nutzt man es? ===== ===== HIDS - was ist das und wozu nutzt man es? =====
 Die Absicherung von Systemen ist eine der Grund- und Pflichtaufgaben eines jeden verantwortungsbewussten Systemadministrators und Administratorin. Dass dies ist kein einmaliger sondern stetig sich wiederholende Vorgang ist, versteht sich in aller Regel von selbst, so ist es unter anderem wichtig, dass regelmässig Systemüberprüfungen und Überwachung von Logmeldungen auf verdächtige und ungewöhnliche Ereignisse durchgeführt werden müssen. Zur Absicherung von Computersystem existieren unterschiedliche Ansätze. TLS-Transportverschlüsselung, SecureShell, oder Firewalls wird hier jedem interessierten Admin sofort in den Sinn kommen. Dabei gibt es zwei unterschiedliche Betrachungsweisen/-richtungen bei den einzelnen Lösungen. Betrachtet und analysiert man in erster Linie Netzwerkverkehr in Netzwerken und/oder Zonengrenzen einzelner Netzwerke und bewertet hierzu entsprechende Protokolle von Netzwerkgeräten wie Switche, Router und Firewalls spricht man von einem **NIDS**, einem **N**etzwerk based **I**ntrusion **D**etection **S**ystem. Im Gegensatz dazu spricht man von einem **HIDS** **H**ost based **I**ntrusion **D**etection **S**ystem, wenn der Blick primär auf einem Host selbst erfolgt und man mit Hilfe lokaler Informationen Bewertungen über zulässige Änderungen am betreffenden System selbst Entscheidungen über (un)zulässige Änderungen treffen muss und möchte. Ein HIDS konzentriert sich dabei auf detailliertere und interne Angriffe, indem es die Überwachung auf Host-Aktivitäten konzentriert. Dabei versucht ein HIDS wie AIDE lediglich, Systemanomalien und somit Eindringlinge zu erkennen und hat nicht zur Aufgabe aktiv mögliche Angreifer und Bedrohungen zu blockieren! Ein Intrusion Detection System (wie AIDE) versucht lediglich, Eindringlinge zu erkennen, arbeitet aber nicht aktiv daran, ihren Zugang von vornherein zu blockieren. Im Gegensatz dazu arbeitet ein **IPS** ein **I**ntrusion **P**revention **S**ystem aktiv daran, Bedrohungen zu blockieren und den Benutzerzugriff zu überprüfen. Die Absicherung von Systemen ist eine der Grund- und Pflichtaufgaben eines jeden verantwortungsbewussten Systemadministrators und Administratorin. Dass dies ist kein einmaliger sondern stetig sich wiederholende Vorgang ist, versteht sich in aller Regel von selbst, so ist es unter anderem wichtig, dass regelmässig Systemüberprüfungen und Überwachung von Logmeldungen auf verdächtige und ungewöhnliche Ereignisse durchgeführt werden müssen. Zur Absicherung von Computersystem existieren unterschiedliche Ansätze. TLS-Transportverschlüsselung, SecureShell, oder Firewalls wird hier jedem interessierten Admin sofort in den Sinn kommen. Dabei gibt es zwei unterschiedliche Betrachungsweisen/-richtungen bei den einzelnen Lösungen. Betrachtet und analysiert man in erster Linie Netzwerkverkehr in Netzwerken und/oder Zonengrenzen einzelner Netzwerke und bewertet hierzu entsprechende Protokolle von Netzwerkgeräten wie Switche, Router und Firewalls spricht man von einem **NIDS**, einem **N**etzwerk based **I**ntrusion **D**etection **S**ystem. Im Gegensatz dazu spricht man von einem **HIDS** **H**ost based **I**ntrusion **D**etection **S**ystem, wenn der Blick primär auf einem Host selbst erfolgt und man mit Hilfe lokaler Informationen Bewertungen über zulässige Änderungen am betreffenden System selbst Entscheidungen über (un)zulässige Änderungen treffen muss und möchte. Ein HIDS konzentriert sich dabei auf detailliertere und interne Angriffe, indem es die Überwachung auf Host-Aktivitäten konzentriert. Dabei versucht ein HIDS wie AIDE lediglich, Systemanomalien und somit Eindringlinge zu erkennen und hat nicht zur Aufgabe aktiv mögliche Angreifer und Bedrohungen zu blockieren! Ein Intrusion Detection System (wie AIDE) versucht lediglich, Eindringlinge zu erkennen, arbeitet aber nicht aktiv daran, ihren Zugang von vornherein zu blockieren. Im Gegensatz dazu arbeitet ein **IPS** ein **I**ntrusion **P**revention **S**ystem aktiv daran, Bedrohungen zu blockieren und den Benutzerzugriff zu überprüfen.
Zeile 1586: Zeile 1586:
    # sudo vim /etc/aide/aide.conf    # sudo vim /etc/aide/aide.conf
  
-<file bash /etc/aide/aide.conf># Example configuration file for AIDE. +<file bash /etc/aide/aide.conf># BEGIN ANSIBLE MANAGED - DO NOT EDIT BLOCK 
-More information about configuration options available in the aide.conf manpage. +Ansible managed configuration file, do not modify manually! 
-Inspired from https://src.fedoraproject.org/rpms/aide/raw/rawhide/f/aide.conf +
- +# ┌──────────────────────────────────────────────────────────────────────┐ 
-# ┌───────────────────────────────────────────────────────────────┐ +# │ Contents of configuration file aide.conf                             │ 
-# │ CONTENTS OF aide.conf                                         │ +# ├──────────────────────────────────────────────────────────────────────┤ 
-# ├─────────────────────────────────────────────────────────────── +│                                                                      │ 
-# │ +# ├──┬───── 1.    VARIABLES                                              │ 
-# ├──VARIABLES +# │  ├───── 1.1   DATABASE                                               │ 
-# │  ├── DATABASE +# │  └───── 1.2   REPORT                                                 │ 
-# │  └── REPORT +# │                                                                      │ 
-# ├──RULES +# ├──┬───── 2.    RULES                                                  │ 
-# │  ├── LIST OF ATTRIBUTES +# │  ├───── 2.1   LIST OF ATTRIBUTES                                     │ 
-# │  ├── LIST OF CHECKSUMS +# │  ├───── 2.2   LIST OF CHECKSUMS                                      │ 
-# │  └── AVAILABLE RULES +# │  └───── 2.3   AVAILABLE RULES                                        │ 
-# ├──PATHS +# │                                                                      │  
-# │  ├──EXCLUDED +# ├──┬───── 3.    PATHS                                                  │ 
-# │  │  ├── ETC +# │  ├──┬── 3.1   EXCLUDED                                               │ 
-# │  │  ├── USR +# │  │  ├── 3.1.1 ETC                                                    │ 
-# │  │  ── VAR +# │  │  ├── 3.1.2 USR                                                    │ 
-# │  └──INCLUDED +# │  │  ── 3.1.3 VAR                                                    │ 
-# │     ├── ETC +│  │  └── 3.1.4 OTHERS                                                 │ 
-# │     ├── USR +# │  └──┬── 3.2.  INCLUDED                                               │ 
-# │     ├── VAR +# │     ├── 3.2.1 ETC                                                    │ 
-# │     └── OTHERS +# │     ├── 3.2.2 USR                                                    │ 
-# │ +# │     ├── 3.2.3 VAR                                                    │ 
-# └─────────────────────────────────────────────────────────────── +# │     └── 3.2.4 OTHERS                                                 │ 
- +│                                                                      │ 
-# ################################################################ VARIABLES +# └──────────────────────────────────────────────────────────────────────┘ 
- +# 
-# ################################ DATABASE+## 1.  VARIABLES 
 +## 1.1 DATABASE
  
 @@define DBDIR /var/lib/aide @@define DBDIR /var/lib/aide
Zeile 1622: Zeile 1623:
  
 # The location of the database to be read. # The location of the database to be read.
-database_in=file:@@{DBDIR}/aide.db.gz+database_in = http://10.0.0.40/local/pml010074.aide-database
  
 # The location of the database to be written. # The location of the database to be written.
-#database_out=sql:host:port:database:login_name:passwd:table +database_out = file:@@{DBDIR}/pml010074.aide-database
-#database_out=file:aide.db.new +
-database_out=file:@@{DBDIR}/aide.db.new.gz+
  
-# Whether to gzip the output to database +# Whether to gzip the output to database. 
-gzip_dbout=yes+gzip_dbout = no
  
-# ################################ REPORT+## 1.2 REPORT
  
-# Default.+# Default
 log_level=warning log_level=warning
 report_level=changed_attributes report_level=changed_attributes
- 
-report_url=file:@@{LOGDIR}/aide.log 
 report_url=stdout report_url=stdout
-#report_url=stderr +report_url=syslog:LOG_AUTH
-#NOT IMPLEMENTED report_url=mailto:root@foo.com +
-#NOT IMPLEMENTED report_url=syslog:LOG_AUTH+
  
-# ################################################################ RULES +## 2.  RULES 
- +## 2.1 LIST OF ATTRIBUTES
-# ################################ LIST OF ATTRIBUTES+
  
 # These are the default parameters we can check against. # These are the default parameters we can check against.
-#p:             permissions +# p:            permissions 
-#i:             inode: +# i:            inode 
-#n:             number of links +# n:            number of links 
-#u:             user +# u:            user 
-#g:             group +# g:            group 
-#s:             size +# s:            size 
-#b:             block count +# b:            block count 
-#m:             mtime +# m:            mtime 
-#a:             atime +# a:            atime 
-#c:             ctime +# c:            ctime 
-#S:             check for growing size +# S:            check for growing size 
-#acl:           Access Control Lists +# acl:          Access Control Lists 
-#selinux        SELinux security context (must be enabled at compilation time) +# selinux       SELinux security context  
-#xattrs:        Extended file attributes+#               (must be enabled at compilation time) 
 +# xattrs:       Extended file attributes
  
-################################ LIST OF CHECKSUMS+2.2 LIST OF CHECKSUMS
  
-#md5:           md5 checksum +# md5:          md5 checksum 
-#sha1:          sha1 checksum +# sha1:         sha1 checksum 
-#sha256:        sha256 checksum +# sha256:       sha256 checksum 
-#sha512:        sha512 checksum +# sha512:       sha512 checksum 
-#rmd160:        rmd160 checksum +# rmd160:       rmd160 checksum 
-#tiger:         tiger checksum +# tiger:        tiger checksum 
-#haval:         haval checksum (MHASH only) +# haval:        haval checksum (MHASH only) 
-#gost:          gost checksum (MHASH only) +# gost:         gost checksum (MHASH only) 
-#crc32:         crc32 checksum (MHASH only) +# crc32:        crc32 checksum (MHASH only) 
-#whirlpool:     whirlpool checksum (MHASH only)+# whirlpool:    whirlpool checksum (MHASH only)
  
-################################ AVAILABLE RULES+2.3 AVAILABLE RULES
  
 # These are the default rules # These are the default rules
-#R:             p+i+l+n+u+g+s+m+c+md5 +# R:            p+i+l+n+u+g+s+m+c+md5 
-#L:             p+i+l+n+u+g +# L:            p+i+l+n+u+g 
-#E:             Empty group +# E:            Empty group 
-#>:             Growing logfile p+l+u+g+i+n+S+# >:            Growing logfile p+l+u+g+i+n+S 
 + 
 +# Default compound groups: 
 +# R:            l+p+u+g+s+c+m+i+n+md5+acl+xattrs+ftype+e2fsattrs 
 +# L:            l+p+u+g+i+n+acl+xattrs+ftype+e2fsattrs 
 +# >:            l+p+u+g+s+i+n+acl+xattrs+ftype+e2fsattrs+growing 
 +# H:            md5+sha1+rmd160+tiger+crc32+gost+sha256+sha512+whirlpool 
 +#                  +stribog256+stribog512 
 +# X:            acl+xattrs+e2fsattrs 
 + 
 +# You can create custom rules - my home made rule definition goes like this 
 +# ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
  
-# You can create custom rules - my home made rule definition goes like this  
-ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32 
-ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger 
 # Everything but access time (Ie. all changes) # Everything but access time (Ie. all changes)
-EVERYTHING = R+ALLXTRAHASHES+EVERYTHING = R+sha256+sha512
  
 # Sane, with multiple hashes # Sane, with multiple hashes
Zeile 1713: Zeile 1716:
 DATAONLY = p+n+u+g+s+acl+xattrs+sha256 DATAONLY = p+n+u+g+s+acl+xattrs+sha256
  
-# ################################################################ PATHS+## 3. PATHS 
 +# 
 +Here we define which directories and files we want to view or not view 
 +when monitoring with AIDE. 
 +# 
 +## 3.1 EXCLUDED 
 +## 3.1.1 ETC
  
-Next decide what directories/files you want in the database. +Ignore root cache files 
- +!/root/.*
-# ################################ EXCLUDED +
- +
-# ################ ETC+
  
 # Ignore backup files # Ignore backup files
Zeile 1727: Zeile 1733:
 !/etc/mtab !/etc/mtab
  
-# ################ USR+## 3.1.2 USR
  
 # These are too volatile # These are too volatile
Zeile 1733: Zeile 1739:
 !/usr/tmp !/usr/tmp
  
-# ################ VAR+## 3.1.3 VAR
  
 # Ignore logs # Ignore logs
 !/var/lib/pacman/.* !/var/lib/pacman/.*
 !/var/cache/.* !/var/cache/.*
-!/var/log/.*   +!/var/log/.* 
-!/var/log/aide.log +!/var/run/.*
-!/var/run/.*  +
 !/var/spool/.* !/var/spool/.*
  
-# ################################ INCLUDED+## 3.1.4 OTHERS 
 +Ignore cups 
 +!/etc/cups
  
-# ################ ETC+Ignore backup files 
 +!/root/.* 
 + 
 + 
 +## 3.2 INCLUDED 
 +## 3.2.1 ETC
  
-# Check only permissions, inode, user and group for /etc, but cover some important files closely.+# Check only permissions, inode, user and group for /etc, but cover some 
 +important files closely.
 /etc                               PERMS /etc                               PERMS
 /etc/aliases                       FIPSR /etc/aliases                       FIPSR
Zeile 1810: Zeile 1823:
 /etc/zshrc                         NORMAL /etc/zshrc                         NORMAL
  
-# ################ USR+## 3.2.2 USR
  
 /usr                               NORMAL /usr                               NORMAL
 /usr/sbin/stunnel                  FIPSR /usr/sbin/stunnel                  FIPSR
  
-# ################ VAR+## 3.2.3 VAR
  
 /var/log/faillog                   FIPSR /var/log/faillog                   FIPSR
Zeile 1822: Zeile 1835:
 /var/spool/cron/root               FIPSR /var/spool/cron/root               FIPSR
  
-# ################ OTHERS+## 3.2.4 OTHERS
  
 /boot                              NORMAL /boot                              NORMAL
Zeile 1830: Zeile 1843:
 /opt                               NORMAL /opt                               NORMAL
 /root                              NORMAL /root                              NORMAL
-</file>+ 
 + 
 +# Host based OTHERS 
 +# local user scripts 
 +/usr/local/bin/                    FIPSR 
 + 
 +# local scripts with root rights 
 +/usr/local/sbin/                   FIPSR 
 + 
 + 
 +
 +# END ANSIBLE MANAGED - DO NOT EDIT BLOCK</file>
  
 Wie eigentlich immer bei der Konfiguration von neuen Programmen lohnt es sich die zugehörige Konfigurationsdatei - in unserem Falle von **AIDE** die **''/etc/aide.conf''** einmal komplett zu lesen! So erhält man einen  Überblick welche Einstellungsoptionen uns AIDE grundsätzlich bietet.  Wie eigentlich immer bei der Konfiguration von neuen Programmen lohnt es sich die zugehörige Konfigurationsdatei - in unserem Falle von **AIDE** die **''/etc/aide.conf''** einmal komplett zu lesen! So erhält man einen  Überblick welche Einstellungsoptionen uns AIDE grundsätzlich bietet. 
Zeile 1893: Zeile 1917:
 </code> </code>
  
 +=== Datenbank erstellen ===
 +Zunächst erstellen wir initial unsere AIDE Datenbank entsprechend unserer [[#konfiguration|zuvor definierten Parameter]]. 
 +  [django@pml010074 ~]$ sudo aide --init
 +
 +<code>Start timestamp: 2025-02-09 13:17:55 +0100 (AIDE 0.18.8)
 +AIDE successfully initialized database.
 +New AIDE database written to /var/lib/aide/aide.db.new.gz
 +
 +Number of entries: 470065
 +
 +---------------------------------------------------
 +The attributes of the (uncompressed) database(s):
 +---------------------------------------------------
 +
 +/var/lib/aide/aide.db.new.gz
 + MD5       : akLMQIg8ljGsrqITWUMmXQ==
 + SHA1      : uobft85sR3iSd/wzsu4PniRHjeM=
 + SHA256    : X5dNJKwN1CMso7uEyG3Kl0HhINFukXYU
 +             nYBsXz2aSMo=
 + SHA512    : DLG7d3whDo3s70PJZi4URK3ci/rScE9t
 +             YBrKfqpm/AjNnQywrQPv8AcjX7/TOMAH
 +             8ihTjdCy5LAD3ZlfdJYC7g==
 + RMD160    : zKkglTAFd6tCn+zxVzNTjeegJG0=
 + TIGER     : Hj2m4H+yydhksoj0wMAAE5CWQu1TqXHz
 + CRC32     : fv1+yQ==
 + WHIRLPOOL : IgsuYwxy+0OvCYShwQsQmpC/V0ibURuy
 +             +U3PpE0jtafK8ct3zRj+1wP6L8qSBecU
 +             uR+4N66Mn7NBhJl8+GkmEw==
 + GOST      : 8jdDWTrwWuHxDouI5CKySf8zrAyt5jem
 +             jUXKnFWkCeo=
 + STRIBOG256: /FuAlw3yffSGNWpoUwfKO/wgYkrbZ02U
 +             NEbUlsM1RX8=
 + STRIBOG512: c2uv2hcchsbSE681IRNXu78ntDz2ZF60
 +             XoxZNbkLev2ZUkvGPhfhxvFWomZfSXiW
 +             /fnsqLQg6W/kSikrQJrHIw==
 +
 +
 +End timestamp: 2025-02-09 13:22:34 +0100 (run time: 4m 39s)
 +</code>
 +
 +=== positive Prüfen des Filesystems gegen die Datenbank ===
 +Mit der Option **''%%--%%check''** bzw. **''-C''** könne wir nun eine Überprüfung des Dateisystems gegen die zuvor erstellte AIDE-Datenbank durchführen.
 +  [django@pml010074 ~]$ sudo aide --check
 +<code>Start timestamp: 2025-02-09 16:47:30 +0100 (AIDE 0.18.8)
 +AIDE found NO differences between database and filesystem. Looks okay!!
 +
 +Number of entries: 470065
 +
 +---------------------------------------------------
 +The attributes of the (uncompressed) database(s):
 +---------------------------------------------------
 +
 +/var/lib/aide/aide.db.gz
 + MD5       : jyY8ktcG+E5Kq0AtGA5YGQ==
 + SHA1      : KogexIU6LuOslIB81mGvMSL1rYo=
 + SHA256    : QyabDWuO37ZO+xzXmPF28qT7t5WJdSB2
 +             EwwNVmU1Rlc=
 + SHA512    : LrcRp1//aeMxufbKBbodCM1YA0NU5EtP
 +             QdriP1Uh+A7qFULU4WjK9qolnNfZLuDY
 +             kIPg9LY+g0q1j75Z44T1dA==
 + RMD160    : 51KDSlTiMtIXqe+VQ6A3pDN/uZ8=
 + TIGER     : 8A61b3JqbPNltkAPxvVgQ7UON2AlRn3q
 + CRC32     : IpaktA==
 + WHIRLPOOL : dcQVsfrdV7TGbpAyhNATDGFQ8c7mBG4O
 +             cX7ZufgFpa8seOIs+gyWHjeWUq4FCsk4
 +             U0qZ+Ela67DDrsVkN5xGCA==
 + GOST      : ltIg5YJ+6BFVE5kbORVh3gRGbwJ4EP0/
 +             8iJY8o51fUo=
 + STRIBOG256: lmE/qdAVUeE4zEbd7WBISCDXWsUb1bGJ
 +             FxSlN0RABQ4=
 + STRIBOG512: Ox8c77PeIe0dCgFLPawLqWYzMK/9inc4
 +             FPH6aHMBchh4ctW71d4wZwy3/f42ZUG6
 +             xz7VX4MQ+X0SFz28//jSsg==
 +
 +
 +End timestamp: 2025-02-09 16:53:10 +0100 (run time: 5m 40s)
 +</code>
 +
 +Die Zeile:
 +  AIDE found NO differences between database and filesystem. Looks okay!!
 +zeigt uns an, dass es keine Änderungen im und am System gab.
 +
 +=== negative Prüfen des Filesystems gegen die Datenbank ===
 +Im nächsten Beispiel kompromittieren wir unser System, in dem wir von einem bestehenden Binary einen vermeintlichen bösen Klone erstellen:
 +   # cp /usr/bin/sg /usr/bin/sg_evil_copy
 +
 +Führen wir erneut eine Überprüfung unseres Systems aus, sollte die neue unbekannte Datei entsprechend detektiert werden.
 +  [django@pml010074 ~]$ sudo aide --check
 +
 +<code>Start timestamp: 2025-02-09 18:09:12 +0100 (AIDE 0.18.8)
 +AIDE found differences between database and filesystem!!
 +
 +Summary:
 +  Total number of entries: 470065
 +  Added entries: 1
 +  Removed entries: 1
 +  Changed entries: 5
 +
 +---------------------------------------------------
 +Added entries:
 +---------------------------------------------------
 +
 +f+++++++++++++++: /usr/bin/sg_evil_copy
 +
 +---------------------------------------------------
 +Removed entries:
 +---------------------------------------------------
 +
 +f---------------: /root/.cache/vim/swap/%etc%aide.conf.swp
 +
 +---------------------------------------------------
 +Changed entries:
 +---------------------------------------------------
 +
 +d = ... mc..    : /root
 +d < ... mc..    : /root/.cache/vim/swap
 +f > ... mci.H   : /root/.lesshst
 +f < ... mci.H   : /root/.viminfo
 +d > ... mc..    : /usr/bin
 +
 +---------------------------------------------------
 +Detailed information about changes:
 +---------------------------------------------------
 +
 +Directory: /root
 + Mtime     : 2025-02-09 13:17:48 +0100        | 2025-02-09 18:04:06 +0100
 + Ctime     : 2025-02-09 13:17:48 +0100        | 2025-02-09 18:04:06 +0100
 +
 +Directory: /root/.cache/vim/swap
 + Size      : 36                               | 0
 + Mtime     : 2025-02-09 15:17:08 +0100        | 2025-02-09 17:54:25 +0100
 + Ctime     : 2025-02-09 15:17:08 +0100        | 2025-02-09 17:54:25 +0100
 +
 +File: /root/.lesshst
 + Size      : 108                              | 120
 + Mtime     : 2024-07-23 20:50:00 +0200        | 2025-02-09 18:04:06 +0100
 + Ctime     : 2024-07-23 20:50:00 +0200        | 2025-02-09 18:04:06 +0100
 + Inode     : 1333674                          | 3542013
 + SHA256    : zZOZrRdXCuRtg037QvYWyDbVy3t4W6R7 | n7A97JsrI0Va3lyGTzpL/t81Xvml/inc
 +             LwOxBOqzgkg=                     | hA9gyl3LPc0=
 +
 +File: /root/.viminfo
 + Size      : 12742                            | 12357
 + Mtime     : 2025-02-09 13:17:48 +0100        | 2025-02-09 17:54:25 +0100
 + Ctime     : 2025-02-09 13:17:48 +0100        | 2025-02-09 17:54:25 +0100
 + Inode     : 3541891                          | 3542007
 + SHA256    : mQ8jfMRnqAgFqRmkIexg3hOniGUoY9wm | G0AtQsaESSv2s6mnrPFYR+eIDXkR/G/9
 +             gGpvrhaO6ZY=                     | Ft44RhULh+Q=
 +
 +Directory: /usr/bin
 + Size      : 65822                            | 65846
 + Mtime     : 2025-02-09 13:15:53 +0100        | 2025-02-09 18:05:16 +0100
 + Ctime     : 2025-02-09 13:15:53 +0100        | 2025-02-09 18:05:16 +0100
 +
 +
 +---------------------------------------------------
 +The attributes of the (uncompressed) database(s):
 +---------------------------------------------------
 +
 +/var/lib/aide/aide.db.gz
 + MD5       : jyY8ktcG+E5Kq0AtGA5YGQ==
 + SHA1      : KogexIU6LuOslIB81mGvMSL1rYo=
 + SHA256    : QyabDWuO37ZO+xzXmPF28qT7t5WJdSB2
 +             EwwNVmU1Rlc=
 + SHA512    : LrcRp1//aeMxufbKBbodCM1YA0NU5EtP
 +             QdriP1Uh+A7qFULU4WjK9qolnNfZLuDY
 +             kIPg9LY+g0q1j75Z44T1dA==
 + RMD160    : 51KDSlTiMtIXqe+VQ6A3pDN/uZ8=
 + TIGER     : 8A61b3JqbPNltkAPxvVgQ7UON2AlRn3q
 + CRC32     : IpaktA==
 + WHIRLPOOL : dcQVsfrdV7TGbpAyhNATDGFQ8c7mBG4O
 +             cX7ZufgFpa8seOIs+gyWHjeWUq4FCsk4
 +             U0qZ+Ela67DDrsVkN5xGCA==
 + GOST      : ltIg5YJ+6BFVE5kbORVh3gRGbwJ4EP0/
 +             8iJY8o51fUo=
 + STRIBOG256: lmE/qdAVUeE4zEbd7WBISCDXWsUb1bGJ
 +             FxSlN0RABQ4=
 + STRIBOG512: Ox8c77PeIe0dCgFLPawLqWYzMK/9inc4
 +             FPH6aHMBchh4ctW71d4wZwy3/f42ZUG6
 +             xz7VX4MQ+X0SFz28//jSsg==
 +
 +
 +End timestamp: 2025-02-09 18:15:03 +0100 (run time: 5m 51s)
 +</code>
 +
 +In der Zusammenfassung sehen wir also in Summe 470.065 Datenbankeinträge, sowie von den Einträgen her ein neuer, ein entfernter sowie ein geänderter Eintrag:
 +  Total number of entries: 470065
 +  Added entries:         1
 +  Removed entries: 1
 +  Changed entries: 5
 +
 +Die Datei **''/usr/bin/sg_evil_copy''** ist neu hinzugekommen sowie die SWAP-Datei **''/root/.cache/vim/swap/%etc%aide.conf.swp''** entfernt worden.
 +
 +Im Abschnitt **''Changed entries''** sehen wir:
 +<code>d = ... mc..    : /root
 +d < ... mc..    : /root/.cache/vim/swap
 +f > ... mci.H   : /root/.lesshst
 +f < ... mci.H   : /root/.viminfo
 +d > ... mc..    : /usr/bin</code>
 +  * In der ersten Spalte kennzeichnet ein **''d''** ein Verzeichnis und ein **''f''** eine Datei.
 +  * In der zweiten Spalte wird eine Änderung angezeigt, ob sich die Grösse einer Datei bzw. des Verzeichnisses geändert hat. **''=''** bedeutet keine Änderung, **''>''** zeigt eine Vergrösserung und **''<''** eine Verkleinerung an.
 +  * Die mit jedem Buchstaben verbundenen Attribute sind wie folgt:
 +    * **''l''** bedeutet, dass sich der Link-Name geändert hat.
 +    * **''b''** bedeutet, dass sich die Blockanzahl geändert hat.
 +    * **''p''** bedeutet, dass sich die Berechtigungen geändert haben.
 +    * **''u''** bedeutet, dass sich die uid geändert hat.
 +    * **''g''** bedeutet, dass sich die gid geändert hat.
 +    * **''a''** bedeutet, dass sich die Zugriffszeit geändert hat.
 +    * **''m''** bedeutet, dass sich die Änderungszeit geändert hat.
 +    * **''c''** bedeutet, dass sich die Änderungszeit geändert hat.
 +    * **''i''** bedeutet, dass sich der Inode geändert hat.
 +    * **''n''** bedeutet, dass sich die Linkanzahl geändert hat.
 +    * **''H''** bedeutet, dass sich eine oder mehrere Prüfsummen geändert haben.
 +  * Die folgenden Buchstaben sind nur verfügbar, wenn sie explizit mit „configure“ aktiviert werden:
 +    * **''A''** bedeutet, dass sich die Zugriffskontrollliste geändert hat.
 +    * **''X''** bedeutet, dass sich die erweiterten Attribute geändert haben.
 +    * **''S''** bedeutet, dass sich die SELinux-Attribute geändert haben.
 +    * **''E''** bedeutet, dass sich die Dateiattribute auf einem zweiten erweiterten Dateisystem geändert haben.
 +    * **''C''** bedeutet, dass sich die Dateifähigkeiten geändert haben.
 +
 +Im Abschnitt **''Detailed information about changes:''** sehen wir dann jeweils die detaillierten Informationen zu den Änderungen.
 +
 +=== Update Database ===
 +Nach Änderungen am System, z.B. bei Konfigurationsänderungen, Updates oder Neuinstallationen von Paketen muss zwingend eine Aktualisierung der Datenbank erfolgen. Hier steht uns die Option **''%%--%%update''** oder kurz **''-u''** zu Verfügung.
 +   $ sudo aide --update
 +
 +Alternativ kann man auch direkt die Datenbank neu initialisieren:
 +   $ sudo aide --init
 +
 +**''aide %%--%%update''** kombiniert im Grunde einen Check und eine Initialisierung einer neuen Datenbank. Der Vorteil der Verwendung von **''%%--%%update''** gegenüber **''%%--%%check''** und **''%%--%%init''** besteht darin, dass der Bericht und die neue Datenbank immer auf denselben Dateisystemdaten basieren.
 +
 +Ein anderer Ansatz wäre dann ein **''%%--%%init''** gefolgt von einem **''%%--%%compare''** zu verwenden, jedoch ist dabei zum beachten, dass nicht alle Attribute (nämlich „growing“ und „compressed“) im Vergleichsmodus unterstützt werden.
 +
 +=== tägliche checks enablen ===
 +Wiederkehrende  tägliche Checks führt man am besten und einfachsten des sytemd **''aidecheck.timer''** aus. Zum Aktivieren dieser zeitgesteuerten Checks verwenden wir folgenden Befehl:
 +
 +  [django@pml010074 ~] $ sudo systemctl enable --now aidecheck.timer
 +
 +  Created symlink '/etc/systemd/system/multi-user.target.wants/aidecheck.timer' → '/usr/lib/systemd/system/aidecheck.timer'.
 +
 +Den Status können wir wie gewohnt via **''systemctl''** abfragen:
 +  [django@pml010074 ~] $ sudo systemctl status aidecheck.timer 
 +<html><pre class="code">
 +<font style="color: rgb(29, 180, 29)"><b>●</b></font> aidecheck.timer - Aide check every day at 5AM
 +     Loaded: loaded (/usr/lib/systemd/system/aidecheck.timer; </font><font style="color: rgb(29, 180, 29)"><b>enabled</b></font>; preset: <font style="color: rgb(201, 214, 95)"><b>disabled</b></font>)
 +   Active:<font style="color: rgb(29, 180, 29)"><b>active (running)</b></font>since Sun 2025-02-09 13:47:17 CET; 49min ago
 + Invocation: 9eb7be3eccc043be82f4dd4e9b5b72ed
 +    Trigger: Mon 2025-02-10 05:00:00 CET; 14h left
 +   Triggers: ● aidecheck.service
 +
 +Feb 09 13:47:17 pml010074 systemd[1]: Started Aide check every day at 5AM.</font></pre>
 +</html>
 +
 +=== jounald (tägliche) logs ===
 +In der Konfigurationsdatei **''/etc/aide.conf''** definieren wir für die Speicherung der AIDE-Logs im Jounal:
 +
 +   # vim /etc/aide.conf
 +<code>...
 +
 +# Default
 +log_level=warning
 +report_level=changed_attributes
 +report_url=stdout
 +report_url=syslog:LOG_AUTH
 +
 +...</code>
 +
 +Somit können wir einfach die Logeinträge von AIDE einfach ausgeben.
 +   # journalctl -f /usr/bin/aide
 +++++ Ausgabe der AIDE Logeinträge im Journal |
 +<code>Mar 14 16:20:38 pml010070 aide[102360]: Start timestamp: 2025-03-14 16:18:57 +0100 (AIDE 0.18.8)
 +Mar 14 16:20:38 pml010070 aide[102360]: AIDE successfully initialized database.
 +Mar 14 16:20:38 pml010070 aide[102360]: New AIDE database written to /var/lib/aide/pml010070.aide-database
 +Mar 14 16:20:38 pml010070 aide[102360]: 
 +                                        Number of entries:        415354
 +Mar 14 16:20:38 pml010070 aide[102360]: 
 +                                        
 +                                        ---------------------------------------------------
 +                                        The attributes of the (uncompressed) database(s):
 +                                        ---------------------------------------------------
 +Mar 14 16:20:38 pml010070 aide[102360]: 
 +Mar 14 16:20:38 pml010070 aide[102360]: /var/lib/aide/pml010070.aide-database
 +Mar 14 16:20:38 pml010070 aide[102360]:  MD5       : cKcw5jV3zJWP6TMJeRZrWA==
 +Mar 14 16:20:38 pml010070 aide[102360]:  SHA1      : WigC6cPTyrQRFNIhCwKpZqfKm4w=
 +Mar 14 16:20:38 pml010070 aide[102360]:  SHA256    : WGSt7wa0Hg5muPhyqm7djZ2hFEpOuxAb
 +Mar 14 16:20:38 pml010070 aide[102360]:              fbIgEeDhb2E=
 +Mar 14 16:20:38 pml010070 aide[102360]:  SHA512    : U1ybuczO4cQuiNQeaC/+ifx2A35LN12P
 +Mar 14 16:20:38 pml010070 aide[102360]:              khwMFF0cow+EJBgpU/rgPWZ1pHT0R/ft
 +Mar 14 16:20:38 pml010070 aide[102360]:              sqVmFI2kYXTTZVgMC/6exg==
 +Mar 14 16:20:38 pml010070 aide[102360]:  RMD160    : mlbLBlEUShR/TiPhGrfFHxargCg=
 +Mar 14 16:20:38 pml010070 aide[102360]:  TIGER     : RwucrlxNyW0VQZLxlPZcgwK9E1V1AE5E
 +Mar 14 16:20:38 pml010070 aide[102360]:  CRC32     : DBPsjQ==
 +Mar 14 16:20:38 pml010070 aide[102360]:  WHIRLPOOL : Ae/6G8dKIlhG3LWIhPPQIoX/Ft2s6IwZ
 +Mar 14 16:20:38 pml010070 aide[102360]:              VM43NRfO1t8P9+kjyHO3B4ix4QPSlT8C
 +Mar 14 16:20:38 pml010070 aide[102360]:              3u81OG360J1VWXK7IynzLA==
 +Mar 14 16:20:38 pml010070 aide[102360]:  GOST      : ZmqxZHVeDyiJIR1mzgTvleoetI9fYn77
 +Mar 14 16:20:38 pml010070 aide[102360]:              gU7jrp4K9d0=
 +Mar 14 16:20:38 pml010070 aide[102360]:  STRIBOG256: hAF0w3sUx7G5a16cg96B6aUI3ig8BB+2
 +Mar 14 16:20:38 pml010070 aide[102360]:              qAf4Fd3/X+c=
 +Mar 14 16:20:38 pml010070 aide[102360]:  STRIBOG512: vLDF/5VqfXyLeuDt6Yj2LfrBVBYamJwn
 +Mar 14 16:20:38 pml010070 aide[102360]:              dMHKJrrKaXNlY2Y/TVwtnb6bNnpNz9YO
 +Mar 14 16:20:38 pml010070 aide[102360]:              Xs0mvlY+fXVlKPiEzKQvQg==
 +Mar 14 16:20:38 pml010070 aide[102360]: 
 +                                        
 +                                        End timestamp: 2025-03-14 16:20:38 +0100 (run time: 1m 41s)
 +
 +</code>
 +++++   
 +===== Orchestrierung - Installation und Konfiguration von AIDE mit Hilfe von Ansible  =====
 +==== Aufgabenstellung ====
 +Natürlich wird man im Jahr 2025 nicht mehr ernsthaft, manuell Server aufsetzen und betreiben wollen. Vielmehr wird man auf ein Orchestrierungswerkzeug wie z.B. **[[linux:ansible:start|Ansible]]** zurückgreifen. Setzen wir einen neue virtuellen Server unter Arch Linux neu auf, oder wollen wir bei einem bestehenden Host die Konfiguration aktualisieren, verwenden wir wie zuvor schon angeschnitten [[https://www.ansible.com/|Ansible]] als Orchestrierungswerkzeug. So ist sichergestellt dass zum einen all unsere Hosts entsprechend gleich aufgebaut, konfiguriert und betrieben werden, es also keine Bastel-/Frickellösung geben wird. 
 +
 +In diesem Konfigurationsbeispiel gehen wir davon aus, dass wir auf zwei Hosts im Intranet AIDE installieren und konfigurieren möchten. Ferner holen wir uns das AIDE-Installationspaket von einem internen Repository-/Spiegelserver, auf dem wir dann auch die generierten AIDE Datenbanken ablegen werden. Somit stehen die Datenbanken manipulationssicher auf den beiden Hosts zur Verfügung, sollte wider erwarten Ein Eindringling auf diesen Maschinen versuchen durch einen manuellen Update der AIDE-Datenbank sein Tun zu verschleiern. AIDE wird bei jedem Check dann via **''get_url''** die aktuelle Datenbank holen und das Dateisystem dagegen prüfen.  
 +
 +Wir werden uns nun nachfolgend die Server-Installation und -konfiguration genauer betrachten. 
 +
 +==== Lösung ====
 +
 +<WRAP center round tip 80%>
 +Der ungeduldigen Leser kann auch direkt zur Tat schreiten und das manuelle Anlegen der Inventory-Hülle, des Playbooks und der zugehörigen Rolle überspringen und diese Aufgaben mit folgendem Befehl sozusagen auf einem Rutsch erledigen:
 +
 +<code> $ mkdir -p ~/devel/ansible ; wget https://gitlab.nausch.org/django/example_aide/-/archive/main/example_aide-main.tar.gz \
 +         -O - | tar -xz --strip-components=1 -C ~/devel/ansible</code>
 +
 +Nach Anpassung der Daten im Inventory kann man anschliessend direkt **[[#ausfuehrung_-_playbooklauf|zur Ausführung schreiten]]**.
 +</WRAP>
 +
 +=== Vorbereitung - Daten im Inventory ===
 +Bei unserem Konfigurationsbeispiel hier gehen wir von folgenden Parametern aus:
 +  * **''group: arch''**
 +  * **''hostname: pml010070''** 
 +  * **''hostname: pml010070''** 
 +
 +Die Konfigurationsdatei unseres **inventory** in unsere, Ansible-Verzeichnis beinhaltet demnach unter anderem:
 +   $ vim inventories/production/hosts
 +++++ inventories/production/hosts |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/inventories/production/hosts  }}
 +++++
 +
 +Für alle Host aus der Gruppe **''arch''** definieren wir nun noch eine Datei mit den Definitionen der Variablen dieser Gruppe.
 +   $ vim inventories/production/group_vars/arch/aide
 +++++ inventories/production/group_vars/arch/aide |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/inventories/production/group_vars/arch/aide  }}
 +++++
 +
 +Die beiden Beispiel-Hosts aus der Gruppe|Zone **''intra''** in diesem Inventory symbolisieren folgende zwei Knoten. 
 +  * Der Host **''pml010070''** steht exemplarisch für einen Client im Intranet. In dessen Inventory-File **''inventories/production/host_vars/pml010070''** sind die ihn beschreibenden Daten enthalten.
 +  * Der Host **''pml010074''** steht exemplarisch für einen Client im Intranet. In dessen Inventory-File **''inventories/production/host_vars/pml010074''** sind die ihn beschreibenden Daten enthalten.
 +
 +Wir legen uns also nun die Definitionsdateien für die beiden Hosts im SOHO an.
 +   $ vim inventories/production/host_vars/pml010070
 +++++ inventories/production/host_vars/pml010070 |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/inventories/production/host_vars/pml010070  }}
 +++++
 +
 +   $ vim inventories/production/host_vars/pml010074
 +++++ inventories/production/host_vars/pml010074 |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/inventories/production/host_vars/pml010074  }}
 +++++
 +
 +Unser Beispiels-Inventory hat also nunmehr folgenden Aufbau:
 +<code>inventories/production/
 +├── group_vars
 +│   └── arch
 +│       └── aide
 +├── hosts
 +└── hosts_vars
 +    ├── pml010070
 +    └── pml010074
 +
 +4 directories, 4 files</code>
 +
 +=== Rolle ===
 +Für die Installation und Konfiguration von **aide** verwenden wir eine eigene Rolle **''hids''**, die wir bei unserem zuvor angelegten Playbooks später einfach mit aufrufen werden. Hierzu kopieren wir uns zunächst die Mustervorlage **''common''**.
 +   $ cp -avr roles/common/ roles/hids
 +++++ Ausgabe von cp -avr roles/common/ roles/hids |
 +<code>'roles/common/' -> 'roles/kea_dhcp'
 +'roles/common/defaults' -> 'roles/kea_dhcp/defaults'
 +'roles/common/defaults/.gitkeep' -> 'roles/kea_dhcp/defaults/.gitkeep'
 +'roles/common/files' -> 'roles/kea_dhcp/files'
 +'roles/common/files/.gitkeep' -> 'roles/kea_dhcp/files/.gitkeep'
 +'roles/common/handlers' -> 'roles/kea_dhcp/handlers'
 +'roles/common/handlers/.gitkeep' -> 'roles/kea_dhcp/handlers/.gitkeep'
 +'roles/common/library' -> 'roles/kea_dhcp/library'
 +'roles/common/library/.gitkeep' -> 'roles/kea_dhcp/library/.gitkeep'
 +'roles/common/lookup_plugins' -> 'roles/kea_dhcp/lookup_plugins'
 +'roles/common/lookup_plugins/.gitkeep' -> 'roles/kea_dhcp/lookup_plugins/.gitkeep'
 +'roles/common/meta' -> 'roles/kea_dhcp/meta'
 +'roles/common/meta/.gitkeep' -> 'roles/kea_dhcp/meta/.gitkeep'
 +'roles/common/module_utils' -> 'roles/kea_dhcp/module_utils'
 +'roles/common/module_utils/.gitkeep' -> 'roles/kea_dhcp/module_utils/.gitkeep'
 +'roles/common/tasks' -> 'roles/kea_dhcp/tasks'
 +'roles/common/tasks/main.yml' -> 'roles/kea_dhcp/tasks/main.yml'
 +'roles/common/templates' -> 'roles/kea_dhcp/templates'
 +'roles/common/templates/.gitkeep' -> 'roles/kea_dhcp/templates/.gitkeep'
 +'roles/common/vars' -> 'roles/kea_dhcp/vars'
 +'roles/common/vars/.gitkeep' -> 'roles/kea_dhcp/vars/.gitkeep'
 +</code>
 +++++
 +
 +Bei Bedarf können wir uns später die Struktur, die somit angelegt wurde und die wir nun gleich mit Inhalten befüllen wollen, mit nachfolgendem Befehl anzeigen lassen.
 +   $ tree roles/hids/
 +++++ Ausgabe von tree roles/hids/ |
 +<code>roles/hids/
 +├── defaults
 +├── files
 +├── handlers
 +│   └── main.yml
 +├── library
 +├── lookup_plugins
 +├── meta
 +├── module_utils
 +├── tasks
 +│   ├── config.yml
 +│   ├── install.yml
 +│   ├── main.yml
 +│   └── transfer.yml
 +├── templates
 +│   ├── aide_config.j2
 +│   └── systemd.j2
 +└── vars
 +
 +11 directories, 7 files
 +</code>
 +++++
 +== tasks ==
 +Wie wir sehen ist die Rolle durchaus überschaubar, im Task **''main.yaml''** verweisen wir lediglich auf die eigentlichen Tasks **''install''**, **''config''** und **''transfer''**
 +   $ vim roles/hids/tasks/main.yml
 +++++ roles/hids/tasks/main.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/tasks/main.yml }}
 +++++
 +
 +Die Installation von AIDE wird in der ersten Task-Gruppe mit dem tag **''install''** vorgenommen. In den Variablen der Gruppe **''arch''** sind hierbei die Versionsnummer **''aide_version''** wie auch Ort und Stelle **''aide_repo''** definiert von welchem internen Repository/Spiegel-Server wir uns das aide-Paket zum Installieren holen wollen.
 +   $ vim roles/hids/tasks/install.yml
 +++++ roles/hids/tasks/install.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/tasks/install.yml }}
 +++++
 +
 +Die eigentliche Installation Konfiguration sowie das erstellen der initialen AIDE-Datenbank erfolgt im anschliessenden Task **''config''**.
 +   $ vim roles/hids/tasks/config.yml
 +++++ roles/hids/tasks/config.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/tasks/config.yml }}
 +++++
 +
 +Was nun noch fehlt ist das Kopieren der erstellten AIDE-Datenbank auf unseren internen Repository-/Spiegel-Server, was im letzten Task **''transfer''** erledigt wird. Der interne Repository-Serever wird hierbei über den Host-Alias-NAmen **''repo''** angesprochen!
 +   $ vim roles/hids/tasks/transfer.yml
 +++++ roles/hids/tasks/transfer.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/tasks/transfer.yml }}
 +++++
 +
 +== templates ==
 +Für die Erstellung der AIDE-Konfigurationsdatei **''/etc/aide.conf''** und auch für die Systemd-Timer Defintion von AIDE **''/etc/systemd/system/aidecheck.timer.d/override.conf''** - also wann genau der Check des Systems gegen die Datenbank erfolgen soll - brauchen wir nun noch jeweils ein **[[https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_templating.html|Jinja2]]** Template. Mit Hilfe dieser beiden Templates **''aide_config.j2''** und der darin enthaltenen Schleifendefinitionen werden dann mit Hilfe der Daten aus dem Inventory die benötigte Konfigurationsdateie erzeugt.
 +
 +<WRAP center round tip 80%>
 +Damit nicht nun später alle unsere 42 VMs zum selben Zeitpunkt mit dem Check des jeweiligen Systems beginnen und somit einen vermeidbaren Peak auf unserem Repository-/Spiegel-Server und auf den jeweiligen Virtualisierungsmaschinen verursachen, gilt es nun die Startzeitpunkte der einzelnen Hosts zu streuen. Wir wollen hier natürlich auch nicht bei jedem Lauf des Playbooks später dann unterschiedliche Zufallswerte Produzieren, was die Idee der Idempotenz auch konterkarieren würde. Wir generieren daher für die Minutenzahl von **''00 - 59''** basierend auf den Seed des Hostnamens eine statische zufällige Minutenzahl zwischen **''00''** und **''59''**, die für jeden Host unterschiedlich aber dennoch für diesen gleich bleiben wird. Hierzu Nutzen wir die Ansible-Variable: **''%%{{%% 59 |random(seed=inventory_hostname) %%}}%%''**. Somit werden später alle Checks der System im Zeitraum von **''05:00:00 - 05:59:00''** erfolgen.
 +</WRAP>
 +
 +   $ vim roles/hids/templates/aide_config.j2
 +++++ roles/hids/templates/aide_config.j2 |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/templates/aide_config.j2 }}
 +++++
 +
 +   $ vim roles/hids/templates/systemd.j2
 +++++ roles/hids/templates/systemd.j2 |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/templates/systemd.j2 }}
 +++++
 +
 +== handlers ==
 +Sollte bei der Abarbeitung des Playbook die individuelle systemd-timer Konfigurationsdatei **''/etc/systemd/system/aidecheck.timer.d/override.conf''** verändert werden, ist natürlich hierbei eine entsprechende Information zum Relaod des System-Daemon notwenig. Hierzu verwenden wir die **[[https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html|Ansible Playbook Handlers]]**. Diese Handler werden in den beiden Tasks zur Erstellung der **''aidecheck.timer.d/override.conf''**-Konfigurationsdateie mit Hilfe eines **handler**-Calls aufgerufen, sofern sich die Datei verändert hat. 
 +
 +Zu guter Letzt brauchen wir noch eine Konfiguration der Aufgaben die bei einem **''notify''** abgearbeitet werden sollen.
 +   $ vim roles/hids/handlers/main.yml
 +++++ roles/hids/handlers/main.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/roles/hids/handlers/main.yml }}
 +++++
 +
 +
 +=== Playbook ===
 +Unser Playbook zum Installieren und Konfigurieren unseres HIDS auf Basis AIDE, ist wie immer schlank, unscheinbar und unspektakulär, beinhaltet aber Hinweise zur Aufgabe und wie es aufzurufen ist.
 +   $ vim playbooks/arch_hids.yml
 +++++ playbooks/arch_hids.yml |
 +{{gh> https://gitlab.nausch.org/django/example_aide/-/blob/main/playbooks/arch_hids.yml }}
 +++++
 +
 +
 +
 +=== Ausführung - Playbooklauf ===
 +Die orchestrierte Variante der Installation und Konfiguration unseres **AIDE**-Daemons gestaltet sich ab sofort sehr einfach, brauchen wir doch lediglich die Konfigurationswerte im Inventory zu hinterlegen und zu pflegen und letztendlich das Playbook entsprechend aufzurufen, wenn z.B. gewollte Änderungen an einem System durch einen Admin bzw. durch den Lauf eines der Ansible-Playbooks erfolgten. 
 +
 +In nachfolgendem Beispiel installieren wir nun unseren AIDE-Daemon auf dem Host **''pml010070''**:
 +   $ ansible-playbook playbooks/arch_hids.yml --limit pml010070
 +
 +<html><pre class="code">
 +<font style="color: rgb(0, 0, 0)">[14:38:36] Gathering Facts</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 1.18s</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:37] hids : Installation von AIDE/HIDS.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 8ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:37]     ↳ install: Aktuelles AIDE Paket vom internen Mirror holen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 500mss</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:37]     ↳ install: AIDE-Paket installieren.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 2.00s</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:39]     ↳ install: Temporäre lokale Paketdatei löschen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 389ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:40] hids : Konfiguration von AIDE/HIDS.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 7ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:40]     ↳ config: Checken ob es bereits eine Backupdatei der aide.conf gibt.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 356ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:40]     ↳ config: Backupdatei der aide.conf Konfigurationsdatei erstellen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 338ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:40]     ↳ config: AIDE Konfigurationsdatei erzeugen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 634ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:41]     ↳ config: Verzeichnis für lokale override timer erzeugen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 251ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:41]     ↳ config: Systemd Timer für AIDE Daemon erzeugen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 478ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:38:42]     ↳ config: AIDE Datenbank erstellen.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 1m40s</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:22] hids : AIDE-Datenbank auf Reposerver transferieren.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 10ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:22]     ↳ transfer: Temporäre lokale Aide-Datenbank Datei löschen.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 368ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:23]     ↳ transfer: Temporäre remote Aide-Datenbank Datei löschen.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 1.24s</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:24]     ↳ transfer: AIDE-Datenbank lokal kopieren.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 511ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:25]     ↳ transfer: AIDE-Datenbank auf Repository-Server kopieren.</font>
 +<font style="color: rgb(25, 100, 5)">↳  pml010070 | SUCCESS | 1.63s</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:27]     ↳ transfer: AIDE-Datenbank ins Repo verschieben.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 5.14s</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:32]     ↳ transfer: Temporäre lokale Aide-Datenbank Datei löschen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 317ms</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:32]     ↳ transfer: Temporäre remote Aide-Datenbank Datei löschen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 861ms</font>
 +<font style="color: rgb(25, 100, 5)">triggering handler | hids : Reload aidecheck</font>
 +<font style="color: rgb(196, 160, 0)">↳  pml010070 | CHANGED | 1.21s</font>
 +<font style="color: rgb(0, 0, 0)">[14:40:33] system</font>
 +<font style="color: rgb(25, 100, 5)">-- Play recap --</font>
 +<font style="color: rgb(196, 160, 0)">pml010070                  </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=21   </font><font style="color: rgb(196, 160, 0)">changed=12    </font>unreachable=0    failed=0    <font style="color: rgb(0, 0, 0)">skipped=0</font>    <font style="color: rgb(0, 0, 0)">rescued=0    ignored=0</font>
 +</pre>
 +</html>
 +
 +==== Ergebniskontrolle ====
 +Bei einem Blick in unser System-Journal finden wir nun unter anderem zunächst einmal das Setzen des **''systemd-timers''** täglich um **''05:51:00''** für unseren Host 
 +   # journalctl -f /usr/bin/aide
 +<code>Mar 14 14:40:36 pml010070 systemd[1]: Reloading finished in 162 ms.
 +Mar 14 14:40:36 pml010070 systemd[1]: Started Aide check every day at 05:51:00.
 +Mar 14 14:40:36 pml010070 systemd[1]: Started Aide Check.</code>
 +
 +Desweiteren finden wir auch Informationen zum initialen Erstellen der Aide-Datenbank.
 +   # journalctl -f /usr/bin/aide
 +++++ journal bei Erstellung der initialen Datenbank |
 +<code>Mar 14 14:43:07 pml010070 aide[94384]: Start timestamp: 2025-03-14 14:40:36 +0100 (AIDE 0.18.8)
 +Mar 14 14:43:07 pml010070 aide[94384]: AIDE found NO differences between database and filesystem. Looks okay!!
 +Mar 14 14:43:07 pml010070 aide[94384]: 
 +                                       Number of entries:        415370
 +Mar 14 14:43:07 pml010070 aide[94384]: 
 +                                       
 +                                       ---------------------------------------------------
 +                                       The attributes of the (uncompressed) database(s):
 +                                       ---------------------------------------------------
 +Mar 14 14:43:07 pml010070 aide[94384]: 
 +Mar 14 14:43:07 pml010070 aide[94384]: http://10.0.0.40/local/pml010070.aide-database
 +Mar 14 14:43:07 pml010070 aide[94384]:  MD5       : FqaMpI9bZvV3FiZB8nJowA==
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA1      : vGllC7x5U6FndAR7T2k6v5M3zpw=
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA256    : OGRb4RHabaNJGxw8rJ3eqMN1dQ5BR/od
 +Mar 14 14:43:07 pml010070 aide[94384]:              TWY8w+4k8j8=
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA512    : 45Gqayh6d8UU2bOhDw3heHvo8K2P3NkB
 +Mar 14 14:43:07 pml010070 aide[94384]:              OG2DBHfVUWkdqiFkUxmnJzkNKr5OuJJU
 +Mar 14 14:43:07 pml010070 aide[94384]:              1I5jztmwx5yMROqpN+LGzA==
 +Mar 14 14:43:07 pml010070 aide[94384]:  RMD160    : tmRQ4H5i9HtK44+neY+PcA9oBOI=
 +Mar 14 14:43:07 pml010070 aide[94384]:  TIGER     : lMSvw4apa4sTp/2wGf/9bENtoP/rGdWg
 +Mar 14 14:43:07 pml010070 aide[94384]:  CRC32     : lNOWHg==
 +Mar 14 14:43:07 pml010070 aide[94384]:  WHIRLPOOL : RpJ0mjh34mGWGOOxPI982f1J6+xsc1BQ
 +Mar 14 14:43:07 pml010070 aide[94384]:              6Qf3j/70QH6YaZ0xKnDioNvEGUZeSrXK
 +Mar 14 14:43:07 pml010070 aide[94384]: Start timestamp: 2025-03-14 14:40:36 +0100 (AIDE 0.18.8)
 +Mar 14 14:43:07 pml010070 aide[94384]: AIDE found NO differences between database and filesystem. Looks okay!!
 +Mar 14 14:43:07 pml010070 aide[94384]: Number of entries:        415370
 +Mar 14 14:43:07 pml010070 aide[94384]: ---------------------------------------------------
 +Mar 14 14:43:07 pml010070 aide[94384]: The attributes of the (uncompressed) database(s):
 +Mar 14 14:43:07 pml010070 aide[94384]: ---------------------------------------------------
 +Mar 14 14:43:07 pml010070 aide[94384]: http://10.0.0.40/local/pml010070.aide-database
 +Mar 14 14:43:07 pml010070 aide[94384]:  MD5       : FqaMpI9bZvV3FiZB8nJowA==
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA1      : vGllC7x5U6FndAR7T2k6v5M3zpw=
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA256    : OGRb4RHabaNJGxw8rJ3eqMN1dQ5BR/od
 +Mar 14 14:43:07 pml010070 aide[94384]:              TWY8w+4k8j8=
 +Mar 14 14:43:07 pml010070 aide[94384]:  SHA512    : 45Gqayh6d8UU2bOhDw3heHvo8K2P3NkB
 +Mar 14 14:43:07 pml010070 aide[94384]:              OG2DBHfVUWkdqiFkUxmnJzkNKr5OuJJU
 +Mar 14 14:43:07 pml010070 aide[94384]:              1I5jztmwx5yMROqpN+LGzA==
 +Mar 14 14:43:07 pml010070 aide[94384]:  RMD160    : tmRQ4H5i9HtK44+neY+PcA9oBOI=
 +Mar 14 14:43:07 pml010070 aide[94384]:  TIGER     : lMSvw4apa4sTp/2wGf/9bENtoP/rGdWg
 +Mar 14 14:43:07 pml010070 aide[94384]:  CRC32     : lNOWHg==
 +Mar 14 14:43:07 pml010070 aide[94384]:  WHIRLPOOL : RpJ0mjh34mGWGOOxPI982f1J6+xsc1BQ
 +Mar 14 14:43:07 pml010070 aide[94384]:              6Qf3j/70QH6YaZ0xKnDioNvEGUZeSrXK
 +Mar 14 14:43:07 pml010070 aide[94384]:              S88Yf1dE76zmSxan8K9lIw==
 +Mar 14 14:43:07 pml010070 aide[94384]:  GOST      : 6jc71FdttaZW/sUrNA04kyuipL3c6Uek
 +Mar 14 14:43:07 pml010070 aide[94384]:              eu+La9lk8tk=
 +Mar 14 14:43:07 pml010070 aide[94384]:  STRIBOG256: 8sSN/117ue7MfpZ9fvv6FlfNSeRKAg+m
 +Mar 14 14:43:07 pml010070 aide[94384]:              MdP0ErwHN88=
 +Mar 14 14:43:07 pml010070 aide[94384]:  STRIBOG512: lpC/Mc6AYEOh580mPp/Hv47qADCJktQw
 +Mar 14 14:43:07 pml010070 aide[94384]:              th4EzUKygQsx+WQ04E4+GHwahMuM5zuw
 +Mar 14 14:43:07 pml010070 aide[94384]:              kffXnQAsP1YkZra5jn7pnQ==
 +Mar 14 14:43:07 pml010070 aide[94384]: End timestamp: 2025-03-14 14:43:07 +0100 (run time: 2m 31s)
 +Mar 14 14:43:07 pml010070 aide[94384]:              S88Yf1dE76zmSxan8K9lIw==
 +Mar 14 14:43:07 pml010070 aide[94384]:  GOST      : 6jc71FdttaZW/sUrNA04kyuipL3c6Uek
 +Mar 14 14:43:07 pml010070 aide[94384]:              eu+La9lk8tk=
 +Mar 14 14:43:07 pml010070 aide[94384]:  STRIBOG256: 8sSN/117ue7MfpZ9fvv6FlfNSeRKAg+m
 +Mar 14 14:43:07 pml010070 aide[94384]:              MdP0ErwHN88=
 +Mar 14 14:43:07 pml010070 aide[94384]:  STRIBOG512: lpC/Mc6AYEOh580mPp/Hv47qADCJktQw
 +Mar 14 14:43:07 pml010070 aide[94384]:              th4EzUKygQsx+WQ04E4+GHwahMuM5zuw
 +Mar 14 14:43:07 pml010070 aide[94384]:              kffXnQAsP1YkZra5jn7pnQ==
 +Mar 14 14:43:07 pml010070 aide[94384]: 
 +                                       
 +                                       End timestamp: 2025-03-14 14:43:07 +0100 (run time: 2m 31s)
 +Mar 14 14:43:07 pml010070 systemd[1]: aidecheck.service: Deactivated successfully.
 +Mar 14 14:43:07 pml010070 systemd[1]: aidecheck.service: Consumed 3min 26.741s CPU time, 708.5M memory peak.</code>
 +++++
 +
 +Täglich um **05:01** Uhr wird nun unser Host die aktuelle Datenbank gegen die bestehende AIDE-Datenbank auf unserem internen Repository-/Spiegelserver holen und diese beim Check des Dateisystems verwenden.
 +   # journalctl
 +++++ journal beim täglichen check um 05:51 Uhr dieses Hosts |
 +<code>Mar 15 05:51:09 pml010070 systemd[1]: Started Aide Check.
 +Mar 15 05:51:27 pml010070 rtkit-daemon[1200]: Supervising 8 threads of 5 processes of 1 users.
 +Mar 15 05:51:27 pml010070 rtkit-daemon[1200]: Supervising 8 threads of 5 processes of 1 users.
 +Mar 15 05:53:01 pml010070 aide[57175]: Start timestamp: 2025-03-15 05:51:09 +0100 (AIDE 0.18.8)
 +Mar 15 05:53:01 pml010070 aide[57175]: AIDE found differences between database and filesystem!!
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       Summary:
 +                                         Total number of entries:        415370
 +                                         Added entries:                0
 +                                         Removed entries:                0
 +                                         Changed entries:                2
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       
 +                                       ---------------------------------------------------
 +                                       Changed entries:
 +                                       ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       d = ... mc.. .. : /etc/cups
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       d = ... mc..    : /root
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       
 +                                       ---------------------------------------------------
 +                                       Detailed information about changes:
 +                                       ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +Mar 15 05:53:01 pml010070 aide[57175]: Directory:
 +Mar 15 05:53:01 pml010070 aide[57175]: /etc/cups
 +Mar 15 05:53:01 pml010070 aide[57175]:  Mtime     : 2025-03-13 13:49:27 +0100        | 2025-03-14 05:22:46 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]:  Ctime     : 2025-03-13 13:49:27 +0100        | 2025-03-14 05:22:46 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +Mar 15 05:53:01 pml010070 aide[57175]: Directory:
 +Mar 15 05:53:01 pml010070 aide[57175]: /root
 +Mar 15 05:53:01 pml010070 aide[57175]:  Mtime     : 2025-03-11 19:16:06 +0100        | 2025-03-13 17:47:03 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]:  Ctime     : 2025-03-11 19:16:06 +0100        | 2025-03-13 17:47:03 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       ---------------------------------------------------
 +                                       The attributes of the (uncompressed) database(s):
 +                                       ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +Mar 15 05:53:01 pml010070 aide[57175]: http://10.0.0.40/local/pml010070.aide-database
 +Mar 15 05:53:01 pml010070 aide[57175]:  MD5       : JkDe+MaQ3jiZXGx4TPiP9w==
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA1      : ulm0dLAs62vjmWKNuh6LyV3HORE=
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA256    : S/BG2ZPAZogkojazoc13F6sme84JWTik
 +Mar 15 05:53:01 pml010070 aide[57175]:              zH4ysMjRjnQ=
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA512    : o4mqYllOZrjONDaZP/hywLlZHcSv69Z1
 +Mar 15 05:53:01 pml010070 aide[57175]:              CkdMvaD3LZdr+bzK7zjwnpbG4nONTmDx
 +Mar 15 05:53:01 pml010070 aide[57175]:              p5sXILkYA+REaSrbAIft0Q==
 +Mar 15 05:53:01 pml010070 aide[57175]:  RMD160    : 1+EE+mVMQl0wLRZQk5qSwegYvLY=
 +Mar 15 05:53:01 pml010070 aide[57175]:  TIGER     : mvvYirLAo30g35dnku/8KcCkoHfg4Dz+
 +Mar 15 05:53:01 pml010070 aide[57175]:  CRC32     : h+Fz5Q==
 +Mar 15 05:53:01 pml010070 aide[57175]:  WHIRLPOOL : 5wn7egFu5xf5IPQnBCdZbRsz+UXf1BdQ
 +Mar 15 05:53:01 pml010070 aide[57175]:              QauE/6ZI2VaMzGs3antSVbmkHmCnMoWT
 +Mar 15 05:53:01 pml010070 aide[57175]:              xj4keofx/JSJWKvUUMLnnA==
 +Mar 15 05:53:01 pml010070 aide[57175]:  GOST      : iHuOTlg03FrPEX9ror1szxOomv/c+eUc
 +Mar 15 05:53:01 pml010070 aide[57175]:              olR6ymPJlBM=
 +Mar 15 05:53:01 pml010070 aide[57175]:  STRIBOG256: FJPuiouF2Rs9qxvN9czdHdVbp1eAHdwc
 +Mar 15 05:53:01 pml010070 aide[57175]:              nVp7Q31aqCE=
 +Mar 15 05:53:01 pml010070 aide[57175]:  STRIBOG512: HMJSk//+5BxO2Z3620Zz4u/blN5yPvRC
 +Mar 15 05:53:01 pml010070 aide[57175]:              d0yzK7LYs9uC3cZx1GxpL6sBIWqMMn1x
 +Mar 15 05:53:01 pml010070 aide[57175]:              4rib/WieOl1eeUTP8YefKQ==
 +Mar 15 05:53:01 pml010070 aide[57175]: 
 +                                       
 +                                       End timestamp: 2025-03-15 05:53:01 +0100 (run time: 1m 52s)
 +Mar 15 05:53:01 pml010070 aide[57175]: Start timestamp: 2025-03-15 05:51:09 +0100 (AIDE 0.18.8)
 +Mar 15 05:53:01 pml010070 aide[57175]: AIDE found differences between database and filesystem!!
 +Mar 15 05:53:01 pml010070 aide[57175]: Summary:
 +Mar 15 05:53:01 pml010070 aide[57175]:   Total number of entries:        415370
 +Mar 15 05:53:01 pml010070 aide[57175]:   Added entries:                0
 +Mar 15 05:53:01 pml010070 aide[57175]:   Removed entries:                0
 +Mar 15 05:53:01 pml010070 aide[57175]:   Changed entries:                2
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: Changed entries:
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: d = ... mc.. .. : /etc/cups
 +Mar 15 05:53:01 pml010070 aide[57175]: d = ... mc..    : /root
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: Detailed information about changes:
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: Directory: /etc/cups
 +Mar 15 05:53:01 pml010070 aide[57175]:  Mtime     : 2025-03-13 13:49:27 +0100        | 2025-03-14 05:22:46 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]:  Ctime     : 2025-03-13 13:49:27 +0100        | 2025-03-14 05:22:46 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]: Directory: /root
 +Mar 15 05:53:01 pml010070 aide[57175]:  Mtime     : 2025-03-11 19:16:06 +0100        | 2025-03-13 17:47:03 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]:  Ctime     : 2025-03-11 19:16:06 +0100        | 2025-03-13 17:47:03 +0100
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: The attributes of the (uncompressed) database(s):
 +Mar 15 05:53:01 pml010070 aide[57175]: ---------------------------------------------------
 +Mar 15 05:53:01 pml010070 aide[57175]: http://10.0.0.40/local/pml010070.aide-database
 +Mar 15 05:53:01 pml010070 aide[57175]:  MD5       : JkDe+MaQ3jiZXGx4TPiP9w==
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA1      : ulm0dLAs62vjmWKNuh6LyV3HORE=
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA256    : S/BG2ZPAZogkojazoc13F6sme84JWTik
 +Mar 15 05:53:01 pml010070 aide[57175]:              zH4ysMjRjnQ=
 +Mar 15 05:53:01 pml010070 aide[57175]:  SHA512    : o4mqYllOZrjONDaZP/hywLlZHcSv69Z1
 +Mar 15 05:53:01 pml010070 aide[57175]:              CkdMvaD3LZdr+bzK7zjwnpbG4nONTmDx
 +Mar 15 05:53:01 pml010070 aide[57175]:              p5sXILkYA+REaSrbAIft0Q==
 +Mar 15 05:53:01 pml010070 aide[57175]:  RMD160    : 1+EE+mVMQl0wLRZQk5qSwegYvLY=
 +Mar 15 05:53:01 pml010070 aide[57175]:  TIGER     : mvvYirLAo30g35dnku/8KcCkoHfg4Dz+
 +Mar 15 05:53:01 pml010070 aide[57175]:  CRC32     : h+Fz5Q==
 +Mar 15 05:53:01 pml010070 aide[57175]:  WHIRLPOOL : 5wn7egFu5xf5IPQnBCdZbRsz+UXf1BdQ
 +Mar 15 05:53:01 pml010070 aide[57175]:              QauE/6ZI2VaMzGs3antSVbmkHmCnMoWT
 +Mar 15 05:53:01 pml010070 aide[57175]:              xj4keofx/JSJWKvUUMLnnA==
 +Mar 15 05:53:01 pml010070 aide[57175]:  GOST      : iHuOTlg03FrPEX9ror1szxOomv/c+eUc
 +Mar 15 05:53:01 pml010070 aide[57175]:              olR6ymPJlBM=
 +Mar 15 05:53:01 pml010070 aide[57175]:  STRIBOG256: FJPuiouF2Rs9qxvN9czdHdVbp1eAHdwc
 +Mar 15 05:53:01 pml010070 aide[57175]:              nVp7Q31aqCE=
 +Mar 15 05:53:01 pml010070 aide[57175]:  STRIBOG512: HMJSk//+5BxO2Z3620Zz4u/blN5yPvRC
 +Mar 15 05:53:01 pml010070 aide[57175]:              d0yzK7LYs9uC3cZx1GxpL6sBIWqMMn1x
 +Mar 15 05:53:01 pml010070 aide[57175]:              4rib/WieOl1eeUTP8YefKQ==
 +Mar 15 05:53:01 pml010070 aide[57175]: End timestamp: 2025-03-15 05:53:01 +0100 (run time: 1m 52s)
 +Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: Main process exited, code=exited, status=4/NOPERMISSION
 +Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: Failed with result 'exit-code'.
 +Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: Consumed 2min 36.983s CPU time, 708.7M memory peak.
 +</code>
 +++++
 +
 +===== Fazit und Ausblick =====
 +<WRAP center round tip 80%>
 +Mit **AIDE** haben wir nun ein Instrument an der Hand, mit der wir die Dateisysteme unserer Host einfach auf Anomalien hin überwachen kann. Mit Hilfe unseres Ansible-Playbooks können wir nun auch nicht nur die Installation und Konfiguration des Aide-Daemon erledigen, sondern auch einfach die jeweiligen AIDE-DAtenbanken der Hosts nach Änderungen durch den Admin bzw. bei Updates oder Ansible-Läufen, aktuualisieren und automatisiert zum zentralen internen Repository-/Spiegelserver transverieren. Somit erübrigt sich ein Aufwändiges Signieren oder Wegsichern der Datenbank auf RO-Devices. Die AIDE-Datenbanken wir somit getrennt von den verwalteten Systemen gespeichert und ist folglich vor ungewollten Änderungen geschützt, sollte ein Remote-System kompromittiert worden sein! 
 +
 +In diesem Konfigurationsbeispiel wurde lediglich aufgezeigt, wie man einfach mit Hilfe von Ansible installieren, konfigurieren und Datenbanken der Host erstellen und wegsichern kann. Die AIDE-Protokolldateien müssen nun natürlich entsprechend überwacht und ausgewertet werden! Diesen Aspekt werden wir uns noch eingehend bei unserer Installation und Konfiguration eines zentralen Logauswertungstool wie z.B. [[centos:web_c7:graylog2|graylog]] 
 +noch im Detail ansehen!
 +</WRAP>
  
 +====== Links ======
 +  * **[[linux:ansible:detail|zurück zum Kapitel "Ansible - Erweiterte Konfigurationsbeispiele"]] <= **
 +  * **=> [[linux:dhcpd|weiter zum Kapitel "DNS Server für IPv4|6 unter Arch Linux einrichten und nutzen"]] <= **
 +  * **[[linux:start#ansible|Zurück zur "Ansible"-Übersicht]]**
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
  
-FIXME! 
  • linux/aide.1741946675.txt.gz
  • Zuletzt geändert: 14.03.2025 10:04.
  • von django