Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:aide [14.03.2025 09:57. ] – [Installation] django | linux:aide [05.06.2025 20:16. ] (aktuell) – [Fazit und Ausblick] 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 | + | 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äßig |
- | Weiterführende Informationen rund um Intrusion-Detection-Systeme findet man im **[[https:// | + | Weiterführende Informationen rund um Intrusion-Detection-Systeme findet man im **[[https:// |
Eine der Herausforderungen bei der Verwendung von HIDS besteht darin, dass es auf jedem einzelnen Host installiert, | Eine der Herausforderungen bei der Verwendung von HIDS besteht darin, dass es auf jedem einzelnen Host installiert, | ||
Zeile 16: | Zeile 16: | ||
* Benutzer | * Benutzer | ||
* Gruppen | * Gruppen | ||
- | * Dateigrössen | + | * Dateigrößen |
* mtime | * mtime | ||
* ctime | * ctime | ||
* atime | * atime | ||
- | * wachsende | + | * wachsende |
* Anzahl von Links | * Anzahl von Links | ||
* Linknamen | * Linknamen | ||
- | AIDE erstellt | + | AIDE erstellt |
- | * sha1 | + | * sha1 (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt) |
* sha256 | * sha256 | ||
* sha512 | * sha512 | ||
- | * md5 | + | * md5 (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt) |
- | * rmd160 | + | * rmd160 |
- | * tiger | + | * ghost (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt) kann kompiliert werden, sofern mhash-Unterstützung verfügbar ist. |
- | * gost und whirlpool können | + | |
Darüber hinaus können die erweiterten Attribute verwendet werden, sofern sie während der Kompilierung explizit aktiviert werden: | Darüber hinaus können die erweiterten Attribute verwendet werden, sofern sie während der Kompilierung explizit aktiviert werden: | ||
Zeile 43: | Zeile 42: | ||
</ | </ | ||
- | **[[https:// | + | **[[https:// |
- | In aller Regel wird ein Admin, nachdem ein neuer Host erstellt wurde, initial eine AIDE-Datenbank auf dem neuen System erstellen, bestenfalls bevor der neue Host produktiv mit dem Netzwerk verbunden wird. Diese initiale AIDE-Datenbank ist eine Momentaufnahme des Systems in seinem Normalzustand und ist der Massstab, an dem alle nachfolgenden Aktualisierungen und Änderungen gemessen werden. Diese Datenbank sollte Informationen über die wichtigsten Systembinärdateien, | + | In aller Regel wird ein Admin, nachdem ein neuer Host erstellt wurde, initial eine AIDE-Datenbank auf dem neuen System erstellen, bestenfalls bevor der neue Host produktiv mit dem Netzwerk verbunden wird. Diese initiale AIDE-Datenbank ist eine Momentaufnahme des Systems in seinem Normalzustand und ist der Maßstab, an dem alle nachfolgenden Aktualisierungen und Änderungen gemessen werden. Diese Datenbank sollte Informationen über die wichtigsten Systembinärdateien, |
Durch erneutes Ausführen von AIDE zur Systemüberprüfung kann ein Systemadministrator Änderungen an systemrelevanten Verzeichnissen und Dateien schnell erkennen und sich ziemlich sicher sein, dass die protokollierten Ergebnisse korrekt sind. | Durch erneutes Ausführen von AIDE zur Systemüberprüfung kann ein Systemadministrator Änderungen an systemrelevanten Verzeichnissen und Dateien schnell erkennen und sich ziemlich sicher sein, dass die protokollierten Ergebnisse korrekt sind. | ||
Zeile 51: | Zeile 50: | ||
<WRAP center round alert 60%> | <WRAP center round alert 60%> | ||
**ACHTUNG**: | **ACHTUNG**: | ||
- | Ein Admin muss sich aber auch im Klaren sein, dass auch mit **AIDE** **__keine | + | Ein Admin muss sich aber auch im Klaren sein, dass auch mit **AIDE** **__keine |
Ebenso ist vor allem in orchestrierten Umgebungen (Puppet) darauf zu achten, dass nicht etwa ein gerade initiierter Datenbank-Update durch einen Puppet-Agent Lauf abgebrochen wird. So stünde im Extremfall keine aktuelle und valide Datenbank für spätere Systemchecks zur Verfügung, was zu unzähligen false-positive Meldungen führen würde. Die Reputation des HIDS bei den Administratoren wäre in einem solch einem Fall dahin und der erhoffte bzw. geforderte Erfolg mehr als fraglich! | Ebenso ist vor allem in orchestrierten Umgebungen (Puppet) darauf zu achten, dass nicht etwa ein gerade initiierter Datenbank-Update durch einen Puppet-Agent Lauf abgebrochen wird. So stünde im Extremfall keine aktuelle und valide Datenbank für spätere Systemchecks zur Verfügung, was zu unzähligen false-positive Meldungen führen würde. Die Reputation des HIDS bei den Administratoren wäre in einem solch einem Fall dahin und der erhoffte bzw. geforderte Erfolg mehr als fraglich! | ||
</ | </ | ||
==== Installation ==== | ==== Installation ==== | ||
- | AIDE kann unter Arch Linux nicht einfach aus dem Core- oder Extras-Repository mit Hilfe des Paketverwaltungswerkzeugs **'' | + | AIDE kann unter Arch Linux __nicht__ |
Da bei der Installation bzw. beim Kompilieren die Integrität des Quell-Archives an Hand dessen PGP-Signatur geprüft wird, ist es notwendig dass der PGP-Schlüssel mit der Key-ID **'' | Da bei der Installation bzw. beim Kompilieren die Integrität des Quell-Archives an Hand dessen PGP-Signatur geprüft wird, ist es notwendig dass der PGP-Schlüssel mit der Key-ID **'' | ||
Zeile 87: | Zeile 86: | ||
🛴 AUR package will be installed: | 🛴 AUR package will be installed: | ||
- | | + | |
🛴 Proceed with installation? | 🛴 Proceed with installation? | ||
Zeile 101: | Zeile 100: | ||
🛴 Starting the build: | 🛴 Starting the build: | ||
- | ==> Making package: aide 0.18.8-1 (Sun 09 Feb 2025 01:15:33 PM CET) | + | ==> Making package: aide 0.19-1 (Wed 09 Apr 2025 03:15:30 PM CET) |
==> Checking runtime dependencies... | ==> Checking runtime dependencies... | ||
==> Checking buildtime dependencies... | ==> Checking buildtime dependencies... | ||
==> Retrieving sources... | ==> Retrieving sources... | ||
- | -> Downloading aide-0.18.8.tar.gz... | + | -> Downloading aide-0.19.tar.gz... |
% Total % Received % Xferd Average Speed | % Total % Received % Xferd Average Speed | ||
| | ||
0 | 0 | ||
100 374k 100 374k 0 | 100 374k 100 374k 0 | ||
- | -> Downloading aide-0.18.8.tar.gz.asc... | + | -> Downloading aide-0.19.tar.gz.asc... |
% Total % Received % Xferd Average Speed | % Total % Received % Xferd Average Speed | ||
| | ||
Zeile 119: | Zeile 118: | ||
-> Found aidecheck.timer | -> Found aidecheck.timer | ||
==> Validating source files with b2sums... | ==> Validating source files with b2sums... | ||
- | aide-0.18.8.tar.gz ... Passed | + | aide-0.19.tar.gz ... Passed |
- | aide-0.18.8.tar.gz.asc ... Skipped | + | aide-0.19.tar.gz.asc ... Skipped |
aide.conf ... Passed | aide.conf ... Passed | ||
aidecheck.service ... Passed | aidecheck.service ... Passed | ||
aidecheck.timer ... Passed | aidecheck.timer ... Passed | ||
==> Verifying source file signatures with gpg... | ==> Verifying source file signatures with gpg... | ||
- | aide-0.18.8.tar.gz ... Passed | + | aide-0.19.tar.gz ... Passed |
==> Extracting sources... | ==> Extracting sources... | ||
- | -> Extracting aide-0.18.8.tar.gz with bsdtar | + | -> Extracting aide-0.19.tar.gz with bsdtar |
==> Starting build()... | ==> Starting build()... | ||
checking build system type... x86_64-pc-linux-gnu | checking build system type... x86_64-pc-linux-gnu | ||
Zeile 264: | Zeile 263: | ||
config.status: | config.status: | ||
make all-am | make all-am | ||
- | make[1]: Entering directory '/ | + | make[1]: Entering directory '/ |
gcc -DHAVE_CONFIG_H -I. -I./ | gcc -DHAVE_CONFIG_H -I. -I./ | ||
mv -f src/ | mv -f src/ | ||
Zeile 334: | Zeile 333: | ||
==> Starting package()... | ==> Starting package()... | ||
make install-am | make install-am | ||
- | make[1]: Entering directory '/ | + | make[1]: Entering directory '/ |
- | make[2]: Entering directory '/ | + | make[2]: Entering directory '/ |
/ | / | ||
/ | / | ||
Zeile 342: | Zeile 341: | ||
/ | / | ||
/ | / | ||
- | make[2]: Leaving directory '/ | + | make[2]: Leaving directory '/ |
- | make[1]: Leaving directory '/ | + | make[1]: Leaving directory '/ |
==> Tidying install... | ==> Tidying install... | ||
-> Removing libtool files... | -> Removing libtool files... | ||
Zeile 363: | Zeile 362: | ||
-> Compressing package... | -> Compressing package... | ||
==> Leaving fakeroot environment. | ==> Leaving fakeroot environment. | ||
- | ==> Finished making: aide 0.18.8-1 (Sun 09 Feb 2025 01:15:51 PM CET) | + | ==> Finished making: aide 0.19-1 (Wed 09 Apr 2025 03:15:55 PM CET) |
loading packages... | loading packages... | ||
Zeile 369: | Zeile 368: | ||
looking for conflicting packages... | looking for conflicting packages... | ||
- | Packages (1) aide-0.18.8-1 | + | Packages (1) aide-0.19-1 |
Total Installed Size: 0.22 MiB | Total Installed Size: 0.22 MiB | ||
Zeile 413: | Zeile 412: | ||
++++ | ++++ | ||
- | Darf man aus Sicherheitsgründen auf allen Zielsystemen keine Kompilierwerkzeuge vorhalten, so holt man sich das vom eigenen Maintainer erstellen Paketes vom eigenen internen Repo-Server und installiert das Paket mit Hilfe von | + | Darf man aus Sicherheitsgründen auf den Zielsystemen keine Kompilierwerkzeuge vorhalten, so holt man sich das vom eigenen Maintainer erstellen Paketes vom eigenen internen Repo-Server und installiert das Paket mit Hilfe von |
**'' | **'' | ||
++++ Lokale Installation von AIDE mit Hilfe von Pacman | | ++++ Lokale Installation von AIDE mit Hilfe von Pacman | | ||
- | Hier in dem folgenden Beispiel wird das zuvor vom eigenen Repository vorgehaltenen Paketes in der Version **'' | + | Hier in dem folgenden Beispiel wird das zuvor vom eigenen Repository vorgehaltenen Paketes in der Version **'' |
- | # pacman -U aide-0.18.8-1-x86_64.pkg.tar.zst | + | # pacman -U aide-0.19-1-x86_64.pkg.tar.zst |
++++ | ++++ | ||
- | <WRAP center round important | + | <WRAP center round important |
- | Bevor das Programm AIDE gestartet werden kann muss es allerdings konfiguriert werden! | + | Bevor das Programm AIDE gestartet werden kann muss es allerdings |
</ | </ | ||
+ | |||
+ | ==== Dokumentation ==== | ||
+ | Die Dokumentation von AIDE findet man in der Datei **[[https:// | ||
+ | |||
+ | === Paketinfo === | ||
+ | Was uns das Paket alles ins System gebracht hat finden wir am einfachsten mit Hilfe von **'' | ||
+ | ++++ Ausgabe der Befehls pacman -Qil aide | | ||
+ | < | ||
+ | Version | ||
+ | Description | ||
+ | Architecture | ||
+ | URL : https:// | ||
+ | Licenses | ||
+ | Groups | ||
+ | Provides | ||
+ | Depends On : acl e2fsprogs | ||
+ | Optional Deps : None | ||
+ | Required By : None | ||
+ | Optional For : None | ||
+ | Conflicts With : None | ||
+ | Replaces | ||
+ | Installed Size : 252.71 KiB | ||
+ | Packager | ||
+ | Build Date : Wed 09 Apr 2025 05:18:04 PM CEST | ||
+ | Install Date : Wed 09 Apr 2025 07:26:41 PM CEST | ||
+ | Install Reason | ||
+ | Install Script | ||
+ | Validated By : None | ||
+ | |||
+ | aide /etc/ | ||
+ | aide / | ||
+ | aide /usr/ | ||
+ | aide /usr/bin/ | ||
+ | aide / | ||
+ | aide /usr/lib/ | ||
+ | aide / | ||
+ | aide / | ||
+ | aide / | ||
+ | aide / | ||
+ | aide /usr/share/ | ||
+ | aide / | ||
+ | aide / | ||
+ | aide / | ||
+ | aide / | ||
+ | aide / | ||
+ | aide /var/ | ||
+ | aide /var/lib/ | ||
+ | aide / | ||
+ | aide /var/log/ | ||
+ | aide / | ||
+ | ++++ | ||
+ | === Programminfo === | ||
+ | Bei Bedarf können wir uns alle Optionen mit denen das AIDE-Binary gebaut wurde zusammen mit den Default Konfigurationsparametern, | ||
+ | |||
+ | ++++ Ausgabe der Befehls aide -v | | ||
+ | # aide -v | ||
+ | < | ||
+ | |||
+ | Compile-time options: | ||
+ | use pcre2: mandatory | ||
+ | use pthread: mandatory | ||
+ | use zlib compression: | ||
+ | use POSIX ACLs: yes | ||
+ | use SELinux: no | ||
+ | use xattr: yes | ||
+ | use POSIX 1003.1e capabilities: | ||
+ | use e2fsattrs: yes | ||
+ | use cURL: yes | ||
+ | use Nettle crypto library: yes | ||
+ | use GNU crypto library: no | ||
+ | use Linux Auditing Framework: no | ||
+ | use locale: no | ||
+ | syslog ident: aide | ||
+ | syslog logopt: LOG_CONS | ||
+ | syslog priority: LOG_NOTICE | ||
+ | default syslog facility: LOG_LOCAL0 | ||
+ | |||
+ | Default config values: | ||
+ | config file: / | ||
+ | database_in: | ||
+ | database_out: | ||
+ | |||
+ | Available compiled-in attributes: | ||
+ | acl: yes | ||
+ | xattrs: yes | ||
+ | selinux: no | ||
+ | e2fsattrs: yes | ||
+ | caps: no | ||
+ | |||
+ | Available hashsum attributes: | ||
+ | md5: yes | ||
+ | sha1: yes | ||
+ | sha256: yes | ||
+ | sha512: yes | ||
+ | rmd160: yes | ||
+ | tiger: no | ||
+ | crc32: no | ||
+ | crc32b: no | ||
+ | haval: no | ||
+ | whirlpool: no | ||
+ | gost: yes | ||
+ | stribog256: yes | ||
+ | stribog512: yes | ||
+ | sha512_256: yes | ||
+ | sha3_256: yes | ||
+ | sha3_512: yes | ||
+ | |||
+ | Available file system type names: | ||
+ | 9p autofs | ||
+ | bpf | ||
+ | configfs | ||
+ | exfat | ||
+ | fusectl | ||
+ | nilfs | ||
+ | ramfs | ||
+ | sysfs | ||
+ | vfat xfs | ||
+ | |||
+ | Default compound groups: | ||
+ | R: l+p+u+g+s+c+m+i+n+acl+xattrs+ftype+e2fsattrs+sha3_256 | ||
+ | L: l+p+u+g+i+n+acl+xattrs+ftype+e2fsattrs | ||
+ | >: l+p+u+g+s+i+n+acl+xattrs+ftype+e2fsattrs+growing | ||
+ | H: sha256+sha512+stribog256+stribog512+sha512_256+sha3_256+sha3_512 | ||
+ | X: acl+xattrs+e2fsattrs</ | ||
+ | ++++ | ||
+ | |||
+ | === Manpages === | ||
+ | ++++ Manual-Page aide | | ||
+ | # man aide | ||
+ | < | ||
+ | |||
+ | NAME | ||
+ | aide - Advanced Intrusion Detection Environment | ||
+ | |||
+ | SYNOPSIS | ||
+ | aide [parameters] command | ||
+ | |||
+ | DESCRIPTION | ||
+ | AIDE is an intrusion detection system for checking the integrity of files. | ||
+ | |||
+ | COMMANDS | ||
+ | | ||
+ | Checks | ||
+ | do this. This is also the default command. Without any command aide does a check. | ||
+ | |||
+ | | ||
+ | Initialize the database. You must initialize a database and move it to the appro‐ | ||
+ | priate | ||
+ | mand. | ||
+ | |||
+ | | ||
+ | Traverse the file system, match each file against the rule tree and report to std‐ | ||
+ | out. | ||
+ | |||
+ | Neither reports nor the database are written in this mode. | ||
+ | |||
+ | To change the log level in this mode please use the --log-level command line para‐ | ||
+ | meter. | ||
+ | |||
+ | In this mode aide exits with status 0. | ||
+ | |||
+ | | ||
+ | Checks the database and updates the database | ||
+ | output databases must be different. | ||
+ | |||
+ | | ||
+ | Compares | ||
+ | and database_new=< | ||
+ | |||
+ | | ||
+ | List the entries of the database in human readable format (analogous | ||
+ | tailed report output of new files). Note that the checksums are base16 encoded. | ||
+ | |||
+ | | ||
+ | Stops after reading | ||
+ | change the log level in this mode please use the --log-level command line parame‐ | ||
+ | ter. | ||
+ | |||
+ | | ||
+ | | ||
+ | Read configuration | ||
+ | (added in AIDE v0.19, Linux only) and path against rule tree. | ||
+ | |||
+ | The path is independent of what is in the actual file system and needs to be ab‐ | ||
+ | solute. See RESTRICTED RULES section in aide.conf (5) for supported file types and | ||
+ | file system types. | ||
+ | |||
+ | Please | ||
+ | not to the parent directories of the path. If a restricted rule cannot be matched | ||
+ | against a parent directory due to the missing file system type aide raises a warn‐ | ||
+ | ing. | ||
+ | |||
+ | To change the log level in this mode please use the --log-level command line para‐ | ||
+ | meter. | ||
+ | |||
+ | In this mode aide exits with status 0 if the file would be added to the tree, 1 if | ||
+ | not and 2 if the file does not match the specified limit. | ||
+ | |||
+ | PARAMETERS | ||
+ | | ||
+ | Configuration | ||
+ | value). | ||
+ | |||
+ | | ||
+ | Limit command to entries matching REGEX. Note that the REGEX only matches | ||
+ | first position. | ||
+ | |||
+ | Example | ||
+ | | ||
+ | tory) while leaving all other entries unchecked and unchanged: | ||
+ | |||
+ | aide --update --limit /etc | ||
+ | |||
+ | | ||
+ | These configparameters are handled before the reading of the configuration | ||
+ | See aide.conf (5) for more details on what to put here. | ||
+ | |||
+ | | ||
+ | These configparameters | ||
+ | See aide.conf (5) for more details on what to put here. | ||
+ | |||
+ | | ||
+ | The log level to use (see aide.conf (5) for available | ||
+ | tails). | ||
+ | |||
+ | | ||
+ | Removed, | ||
+ | for details). | ||
+ | |||
+ | | ||
+ | Removed, use report_url config option instead (see aide.conf (5) for details). | ||
+ | |||
+ | | ||
+ | Specifies the number of workers (see aide.conf (5) for details). | ||
+ | the num_workers value set in any configuration file. | ||
+ | |||
+ | | ||
+ | Turn progress | ||
+ | connected to a terminal. | ||
+ | |||
+ | | ||
+ | Turn colored log output off explicitly. By default colored log output | ||
+ | if standard error is connected to a terminal. | ||
+ | |||
+ | | ||
+ | Print version information and exit. | ||
+ | |||
+ | | ||
+ | Prints out the standard help message. | ||
+ | |||
+ | EXIT STATUS | ||
+ | | ||
+ | or --update command was requested, in which case the exit status is defined as: | ||
+ | |||
+ | 1 * (new files reported? | ||
+ | |||
+ | 2 * (removed files reported?) + | ||
+ | |||
+ | 4 * (changed files reported?) | ||
+ | |||
+ | Since those three cases can occur together, the respective error codes are added. For ex‐ | ||
+ | | ||
+ | 3. | ||
+ | |||
+ | | ||
+ | |||
+ | 14 Writing error | ||
+ | |||
+ | 15 Invalid argument error | ||
+ | |||
+ | 16 Unimplemented function error | ||
+ | |||
+ | 17 Configuration error | ||
+ | |||
+ | 18 IO error | ||
+ | |||
+ | 19 Version mismatch error | ||
+ | |||
+ | 20 EXEC error | ||
+ | |||
+ | 21 File lock error | ||
+ | |||
+ | 22 Memory allocation error | ||
+ | |||
+ | 23 Thread error | ||
+ | |||
+ | 24 Database error | ||
+ | |||
+ | 25 received SIGINT, SIGTERM or SIGHUP | ||
+ | |||
+ | SIGNAL HANDLING | ||
+ | | ||
+ | |||
+ | Remove an incompletely written database (only if database | ||
+ | aide) and exit (code 25). | ||
+ | |||
+ | | ||
+ | |||
+ | Toggle the log_level between current and debug level. | ||
+ | |||
+ | SIGUSR1 is only handled after config parsing. | ||
+ | |||
+ | | ||
+ | |||
+ | Resize the progress bar (if enabled). | ||
+ | |||
+ | NOTES | ||
+ | | ||
+ | | ||
+ | |||
+ | echo < | ||
+ | |||
+ | FILES | ||
+ | See --version output for the default config file and the default | ||
+ | |||
+ | Remove an incompletely written database (only if database | ||
+ | aide) and exit (code 25). | ||
+ | |||
+ | | ||
+ | |||
+ | Toggle the log_level between current and debug level. | ||
+ | |||
+ | SIGUSR1 is only handled after config parsing. | ||
+ | |||
+ | | ||
+ | |||
+ | Resize the progress bar (if enabled). | ||
+ | |||
+ | NOTES | ||
+ | | ||
+ | | ||
+ | |||
+ | echo < | ||
+ | |||
+ | FILES | ||
+ | See --version output for the default config file and the default | ||
+ | | ||
+ | |||
+ | SEE ALSO | ||
+ | | ||
+ | |||
+ | BUGS | ||
+ | | ||
+ | | ||
+ | |||
+ | DISCLAIMER | ||
+ | All trademarks are the property of their respective owners. | ||
+ | | ||
+ | ings were hurt. | ||
+ | |||
+ | aide v0.19 | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ++++ Manual-Page aide.conf | | ||
+ | # man aide.conf | ||
+ | < | ||
+ | |||
+ | NAME | ||
+ | | ||
+ | |||
+ | SYNOPSIS | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | FILE FORMAT | ||
+ | | ||
+ | line must end with new line. | ||
+ | |||
+ | AIDE uses the backslash character (\) as escape character for ' ' (space), | ||
+ | | ||
+ | | ||
+ | |||
+ | There are three types of lines in aide.conf. First there are the configuration | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | CONFIG OPTIONS | ||
+ | These lines have the format parameter=value. See URLS for a list of valid urls. | ||
+ | |||
+ | | ||
+ | | ||
+ | The url from which database is read. There can only be one of these lines. | ||
+ | there are multiple database lines then the first is used. | ||
+ | |||
+ | Examples: | ||
+ | |||
+ | | ||
+ | |||
+ | Read database locally from / | ||
+ | |||
+ | | ||
+ | |||
+ | Read database from stdin. | ||
+ | |||
+ | | ||
+ | |||
+ | Read database remotely from https:// | ||
+ | |||
+ | | ||
+ | The url to which the new database is written to. There can only be one of these | ||
+ | lines. If there are multiple database_out lines then the first is used. | ||
+ | |||
+ | | ||
+ | The url from which the other database for --compare is read. | ||
+ | |||
+ | | ||
+ | The attributes of the (uncompressed) database files which are to be added to the | ||
+ | reports in report level >= database_attributes . Only checksum attributes are sup‐ | ||
+ | ported. To disable set database_attrs to ' | ||
+ | |||
+ | | ||
+ | Whether to add the AIDE version and the time of database generation as comments to | ||
+ | the database | ||
+ | release. | ||
+ | |||
+ | | ||
+ | The log level to use. Log messages are written to stderr. If there are multiple | ||
+ | log_level lines then the first one is used. The --log-level or -L command line op‐ | ||
+ | tion overwrites this option. | ||
+ | |||
+ | The following log levels are available: | ||
+ | |||
+ | | ||
+ | rors are fatal to the AIDE process. | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | info: additionally show informational messages | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | rule: additionally show messages to help to debug the path rule matching | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | the flow of the application (e.g. in-loop logging) (extremely verbose) | ||
+ | |||
+ | | ||
+ | Removed, use log_level and report_level options instead. | ||
+ | |||
+ | | ||
+ | Whether the output to the database is gzipped or not. This option | ||
+ | only if zlib support is compiled in. | ||
+ | |||
+ | | ||
+ | The prefix | ||
+ | rules and writing to database. AIDE removes a trailing slash from the prefix. | ||
+ | there are multiple root_prefix lines then the first one is used. This option has | ||
+ | no effect in compare mode. | ||
+ | |||
+ | | ||
+ | Whether to check ACLs for symlinks or not. This option is available | ||
+ | support is compiled in. | ||
+ | |||
+ | | ||
+ | Whether to warn about dead symlinks or not. | ||
+ | |||
+ | | ||
+ | The value of config_version is printed in the report and also printed to the data‐ | ||
+ | base. This is for informational purposes only. It has no other functionality. | ||
+ | |||
+ | | ||
+ | Whether | ||
+ | unrestricted rules use 0 (zero) as restriction character. | ||
+ | |||
+ | | ||
+ | Specifies the number of simultaneous workers (threads) for file attribute process‐ | ||
+ | ing (i.a. hashsum calculation). | ||
+ | |||
+ | The number of workers can be a positive integer (e.g. ' | ||
+ | the available processors (e.g. ' | ||
+ | up to the next integer (e.g. ' | ||
+ | |||
+ | If there are multiple num_workers lines then the first one is used. | ||
+ | |||
+ | Use 0 (zero) to disable (multi-threaded) workers. | ||
+ | |||
+ | The default value 1 (single worker thread) may be changed in a future release. | ||
+ | |||
+ | REPORT OPTIONS | ||
+ | | ||
+ | |||
+ | The URL that the output is written to. | ||
+ | |||
+ | Multiple instances of the report_url option are supported. | ||
+ | |||
+ | Examples: | ||
+ | |||
+ | | ||
+ | |||
+ | Write report to / | ||
+ | |||
+ | | ||
+ | |||
+ | Write report to stdout. | ||
+ | |||
+ | | ||
+ | |||
+ | Write report to syslog using LOG_FACILITY. | ||
+ | |||
+ | The following report options are available (to take effect they have to be set before re‐ | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | The report level to use. The available report levels are as follows: | ||
+ | |||
+ | minimal: print single line whether AIDE found differences to the database | ||
+ | |||
+ | summary: additionally print number of added, removed and changed files | ||
+ | |||
+ | database_attributes: | ||
+ | |||
+ | list_entries: | ||
+ | |||
+ | changed_attributes: | ||
+ | |||
+ | | ||
+ | |||
+ | File: / | ||
+ | | ||
+ | | ||
+ | |||
+ | The left column shows the old value (e.g. from the database_in | ||
+ | and the right column shows the new value (e.g. from the file system). | ||
+ | |||
+ | added_removed_attributes: | ||
+ | tributes | ||
+ | |||
+ | added_removed_entries: | ||
+ | |||
+ | | ||
+ | The report format to use. The available report formats are as follows: | ||
+ | |||
+ | plain: Print report in plain human-readable format. | ||
+ | |||
+ | json: Print report in json machine-readable format. | ||
+ | |||
+ | | ||
+ | Base16 encode the checksums in the report. The default is to report | ||
+ | base64 encoding. | ||
+ | |||
+ | | ||
+ | Report | ||
+ | >= added_removed_entries) in initialization mode. | ||
+ | |||
+ | | ||
+ | Suppress report output if no differences to the database have been found. | ||
+ | |||
+ | | ||
+ | Append to the report URL. | ||
+ | |||
+ | | ||
+ | | ||
+ | Group the files in the report by added, removed and changed files. | ||
+ | |||
+ | | ||
+ | | ||
+ | Summarize changes in the added, removed and changed files sections of the report. | ||
+ | |||
+ | The general format is like the string YlZbpugamcinHAXSECF, | ||
+ | the file-type | ||
+ | link, ' | ||
+ | a unix socket, ' | ||
+ | type has changed and '?' | ||
+ | |||
+ | The Z is replaced as follows: A ' | ||
+ | ports a shrinked size and a '>' | ||
+ | string | ||
+ | the item has been changed or a ' | ||
+ | |||
+ | Otherwise a ' | ||
+ | moved, a ':' | ||
+ | tribute has not been checked. | ||
+ | |||
+ | The exceptions | ||
+ | ' | ||
+ | |||
+ | The attribute that is associated with each letter is as follows: | ||
+ | |||
+ | o An l means that the link name has changed. | ||
+ | |||
+ | o A b means that the block count has changed. | ||
+ | |||
+ | o A p means that the permissions have changed. | ||
+ | |||
+ | o A u means that the uid has changed. | ||
+ | |||
+ | o A g means that the gid has changed. | ||
+ | |||
+ | o An a means that the access time has changed. | ||
+ | |||
+ | o An m means that the modification time has changed. | ||
+ | |||
+ | o A c means that the change time has changed. | ||
+ | |||
+ | o An i means that the inode has changed. | ||
+ | |||
+ | o An n means that the link count has changed. | ||
+ | |||
+ | o An H means that one or more message digests have changed. | ||
+ | |||
+ | o An F means that one file system type has changed (Linux only). | ||
+ | |||
+ | The following letters are only available when explicitly enabled using configure: | ||
+ | |||
+ | o An A means that the access control list has changed. | ||
+ | |||
+ | o An X means that the extended attributes have changed. | ||
+ | |||
+ | o An S means that the SELinux attributes have changed. | ||
+ | |||
+ | o An E means that the file attributes on a second extended file system | ||
+ | | ||
+ | |||
+ | o A C means that the file capabilities have changed. | ||
+ | |||
+ | | ||
+ | | ||
+ | Attributes whose addition is to be ignored in the report. | ||
+ | |||
+ | | ||
+ | | ||
+ | Attributes whose removal is to be ignored in the report. | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | Attributes whose change is to be ignored in the report. | ||
+ | |||
+ | | ||
+ | | ||
+ | Attributes | ||
+ | tribute is both ignored and forced the attribute is not considered for file change | ||
+ | but printed in the final report as long as the file has been otherwise changed. | ||
+ | |||
+ | | ||
+ | List (no delimiter) of ext2 file attributes which are to be ignored in the report. | ||
+ | See chattr(1) for the available attributes. Use 0 (zero) to not ignore | ||
+ | tribute. Ignored attributes are represented by a ':' | ||
+ | |||
+ | By default | ||
+ | chattr(1) (see example below how to ignore those changes). | ||
+ | |||
+ | Example: | ||
+ | |||
+ | | ||
+ | (N), indexed directory (I) and encrypted (E): | ||
+ | |||
+ | report_ignore_e2fsattrs=VNIE | ||
+ | |||
+ | GROUPS | ||
+ | | ||
+ | |||
+ | Group definitions have the format <group name> = < | ||
+ | |||
+ | Group names are limited to alphanumeric characters (A-Za-z0-9). | ||
+ | |||
+ | See ATTRIBUTES for a description of all available attributes. | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | > | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | v0.16) | ||
+ | |||
+ | | ||
+ | |||
+ | Use 'aide --version' | ||
+ | |||
+ | RULES | ||
+ | AIDE supports three types of rules: | ||
+ | |||
+ | | ||
+ | < | ||
+ | |||
+ | Files and directories matching the regular expression are added to the database. | ||
+ | |||
+ | | ||
+ | !< | ||
+ | |||
+ | Files and directories matching the regular expression are excluded and NOT added | ||
+ | to the database. The children of directories and sub-directories are recursed into | ||
+ | and only not added to the database if they also match the regular expression. | ||
+ | |||
+ | | ||
+ | -< | ||
+ | |||
+ | Files and directories matching the regular expression are excluded and NOT added | ||
+ | the database. The children of directories and sub-directories | ||
+ | into and hence not added to the database by any means. | ||
+ | |||
+ | | ||
+ | =< | ||
+ | |||
+ | Files and directories matching the regular expression are added to the database. | ||
+ | The children of directories are only added if the regular expression ends with a | ||
+ | "/" | ||
+ | |||
+ | | ||
+ | front of each regular expression. | ||
+ | the first position against the complete path. Special characters can be escaped | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | See EXAMPLES for examples. | ||
+ | |||
+ | More in-depth discussion of the selection algorithm can be found in the AIDE manual. | ||
+ | |||
+ | RESTRICTED RULES | ||
+ | | ||
+ | | ||
+ | |||
+ | The syntax of restricted rules is as follows: | ||
+ | |||
+ | | ||
+ | |||
+ | < | ||
+ | -< | ||
+ | |||
+ | Files and directories matching both the regular expression and the restriction expres‐ | ||
+ | sion are excluded and NOT added the database. The children of directories and sub-di‐ | ||
+ | rectories are not recursed into and hence not added to the database by any means. | ||
+ | |||
+ | | ||
+ | |||
+ | =< | ||
+ | |||
+ | Files and directories matching both the regular expression and the restriction expres‐ | ||
+ | sion are added the database. The children of directories are only added if the regular | ||
+ | expression ends with a "/" | ||
+ | base. | ||
+ | |||
+ | | ||
+ | |||
+ | An restriction expression is of the following form: | ||
+ | |||
+ | < | ||
+ | | =<file system type> | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | Multiple file type restrictions can be given as a comma-separated list. | ||
+ | |||
+ | File system types (Linux only) | ||
+ | |||
+ | The file system | ||
+ | (e.g. ' | ||
+ | able file system type names). The magic number must start with ' | ||
+ | in hexdecimal format. | ||
+ | |||
+ | Empty restriction | ||
+ | |||
+ | To explicitly don't restrict a rule use 0 (added in AIDE v0.18). | ||
+ | |||
+ | | ||
+ | |||
+ | / d,f R -/dev =tmpfs | ||
+ | |||
+ | | ||
+ | |||
+ | MACRO LINES | ||
+ | | ||
+ | Define variable VAR to value val. | ||
+ | |||
+ | | ||
+ | Undefine variable VAR. | ||
+ | |||
+ | @@if boolean_expression (added in AIDE v0.18) | ||
+ | | ||
+ | | ||
+ | @@if begins an if statement. It must be terminated with an @@endif statement. | ||
+ | lines between | ||
+ | true. If there is an @@else statement then the part between @@if and @@else | ||
+ | used if boolean_expression evaluates to true otherwise the part between @@else and | ||
+ | @@endif is used. | ||
+ | |||
+ | Available operators and functions in boolean expressions: | ||
+ | |||
+ | not boolean_expression | ||
+ | Evaluates | ||
+ | boolean_expression is true. | ||
+ | |||
+ | | ||
+ | |||
+ | Evaluates to true if VARIABLE is defined. | ||
+ | |||
+ | | ||
+ | |||
+ | Evaluates to true if HOSTNAME equals the hostname of the machine | ||
+ | is running | ||
+ | ' | ||
+ | |||
+ | | ||
+ | |||
+ | Evaluates to true if PATH exists. | ||
+ | |||
+ | | ||
+ | |||
+ | Evaluates to true if VERSION_STRING1 | ||
+ | SION_STRING2 | ||
+ | sion_ge 1.1 to false). The version strings must be in the formaat | ||
+ | NOR.PATCH | ||
+ | for pre-release) will be truncated). | ||
+ | |||
+ | | ||
+ | same as @@if defined VARIABLE | ||
+ | |||
+ | | ||
+ | same as @@if not defined VARIABLE | ||
+ | |||
+ | | ||
+ | same as @@if hostname HOSTNAME | ||
+ | |||
+ | | ||
+ | same as @@if not hostname HOSTNAME | ||
+ | |||
+ | | ||
+ | @@{VAR} is replaced with the value of the variable V | ||
+ | The content of the file is used as if it were inserted in this part of the config | ||
+ | file. | ||
+ | |||
+ | The maximum depth of nested includes is 16. | ||
+ | |||
+ | | ||
+ | Include all (regular) files found in DIRECTORY matching regular | ||
+ | (sub-directories are ignored). The file are included in lexical sort order. | ||
+ | |||
+ | If RULE_PREFIX | ||
+ | are prefixed with given RULE_PREFIX. Prefixes from nested include | ||
+ | concatenated. | ||
+ | |||
+ | The content of the files is used as if it were inserted in this part of the config | ||
+ | file. | ||
+ | |||
+ | | ||
+ | | ||
+ | @x_include | ||
+ | is is run and the output is used as config. | ||
+ | |||
+ | If the executable file exits with status greater than zero or writes | ||
+ | aide stops with an error. | ||
+ | |||
+ | For security | ||
+ | the current user or root. They must not be group- or world-writable. | ||
+ | |||
+ | | ||
+ | |||
+ | Adds the variable VAR with the value VALUE to the environment used for config file | ||
+ | execution. | ||
+ | |||
+ | Environment variable names are limited to alphanumeric characters (A-Za-z0-9) | ||
+ | the underscore ' | ||
+ | |||
+ | TYPES | ||
+ | bool | ||
+ | Valid values are yes, true, no or false. | ||
+ | |||
+ | | ||
+ | |||
+ | An attribute expression is of the following form: | ||
+ | |||
+ | < | ||
+ | | < | ||
+ | | < | ||
+ | |||
+ | URLS | ||
+ | Urls can be one of the following. Input urls cannot be used as outputs and vice versa. | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | Input is read from path or output is written to path. | ||
+ | |||
+ | | ||
+ | Input is read from filedescriptor number or output is written to number. | ||
+ | |||
+ | | ||
+ | Output is written to syslog using LOG_FACILITY. | ||
+ | |||
+ | ATTRIBUTES | ||
+ | File attributes | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | v0.20) | ||
+ | |||
+ | Use growing+s attributes instead | ||
+ | |||
+ | | ||
+ | |||
+ | When I is used, the inode of the new file is used to search for a moved source | ||
+ | file in the old database. | ||
+ | |||
+ | Source and target file have to be located in the same directory and must share the | ||
+ | same attributes (except for special attributes ANF, ARF, I, growing, | ||
+ | pressed). | ||
+ | |||
+ | For moved entries a change of the ctime attribute is ignored. | ||
+ | |||
+ | | ||
+ | ignore growing file (added in AIDE v0.18) | ||
+ | |||
+ | When growing is used, changes of the following attributes are ignored: | ||
+ | |||
+ | size: if new size is greater than old size | ||
+ | |||
+ | bcount: if new bcount is greater than old bcount | ||
+ | |||
+ | atime: if new atime is greater than old atime | ||
+ | |||
+ | mtime: if new mtime is greater than old mtime | ||
+ | |||
+ | ctime: if new ctime is greater than old ctime | ||
+ | |||
+ | hashsums: | ||
+ | hashsums of the old file | ||
+ | |||
+ | For hashsum attributes the growing attribute is ignored in compare mode. | ||
+ | |||
+ | | ||
+ | ignore compressed file (added in AIDE v0.18) | ||
+ | |||
+ | When compressed is used, the uncompressed hashsums | ||
+ | (supported compressions: | ||
+ | old database. | ||
+ | |||
+ | The old uncompressed | ||
+ | directory and must share the same attributes (except for special | ||
+ | ARF, I, growing, and compressed) including at least one common hashsum. | ||
+ | |||
+ | Changes of the inode, size, bcount and ctime attributes are ignored. | ||
+ | |||
+ | The growing | ||
+ | files during the calculation of the uncompressed hashsums. | ||
+ | |||
+ | The compressed attribute is ignored in compare mode. | ||
+ | |||
+ | | ||
+ | |||
+ | When ' | ||
+ | the report. | ||
+ | |||
+ | | ||
+ | |||
+ | When ' | ||
+ | are ignored in the report. | ||
+ | |||
+ | | ||
+ | |||
+ | sha256 SHA-256 checksum | ||
+ | |||
+ | sha512 SHA-512 checksum | ||
+ | |||
+ | sha512_256 (added in AIDE v0.19) | ||
+ | | ||
+ | |||
+ | sha3_256 (added in AIDE v0.19) | ||
+ | | ||
+ | |||
+ | sha3_512 (added in AIDE v0.19) | ||
+ | | ||
+ | |||
+ | stribog256 (added in AIDE v0.17) | ||
+ | GOST R 34.11-2012, 256 bit checksum | ||
+ | |||
+ | stribog512 (added in AIDE v0.17) | ||
+ | GOST R 34.11-2012, 512 bit checksum | ||
+ | |||
+ | md5 (DEPRECATED since AIDE v0.19, will be removed in AIDE v0.21) | ||
+ | MD5 checksum (not in libgcrypt FIPS mode) | ||
+ | |||
+ | sha1 (DEPRECATED since AIDE v0.19, will be removed in AIDE v0.21) | ||
+ | SHA-1 checksum | ||
+ | |||
+ | rmd160 (DEPRECATED since AIDE v0.19, will be removed in AIDE v0.21) | ||
+ | | ||
+ | |||
+ | gost (DEPRECATED since AIDE v0.19, will be removed in AIDE v0.21) | ||
+ | GOST R 34.11-94 checksum | ||
+ | |||
+ | crc32 (REMOVED in AIDE v0.19) | ||
+ | crc32 checksum | ||
+ | |||
+ | crc32b (REMOVED in AIDE v0.19) | ||
+ | crc32 checksum | ||
+ | |||
+ | haval (REMOVED in AIDE v0.19) | ||
+ | | ||
+ | |||
+ | tiger (REMOVED in AIDE v0.19) | ||
+ | tiger checksum | ||
+ | |||
+ | whirlpool (REMOVED in AIDE v0.19) | ||
+ | | ||
+ | |||
+ | Use 'aide --version' | ||
+ | |||
+ | Hashsum transitions (since AIDE v0.19): | ||
+ | |||
+ | AIDE has limited support for hashsum transitions | ||
+ | when hashsums | ||
+ | entry do mot share common hashsum(s) AIDE tries to additionally calculate the removed | ||
+ | hashsum(s) | ||
+ | tribute) and compressed (compressed attribute) entries). | ||
+ | |||
+ | EXAMPLES | ||
+ | / R This adds all files on your machine to the database. | ||
+ | qualified configuration file. | ||
+ | |||
+ | | ||
+ | |||
+ | =/foo R | ||
+ | Only /foo and / | ||
+ | added. | ||
+ | |||
+ | | ||
+ | Only /foo and its children (e.g. /foo/file and / | ||
+ | database. | ||
+ | added. | ||
+ | |||
+ | / d,f R | ||
+ | Only add directories and files to the database | ||
+ | |||
+ | !/run d | ||
+ | /run R Add all but directory entries to the database | ||
+ | |||
+ | /run d R-m-c-i | ||
+ | /run R Use specific rule for directories | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | Check permissions, | ||
+ | |||
+ | Size = s+b | ||
+ | Check size and block count | ||
+ | |||
+ | | ||
+ | | ||
+ | Files that stay static | ||
+ | |||
+ | Full = InodeData+StaticFile | ||
+ | Full = ftype+p+l+u+g+s+m+c+a+i+b+n+H+X | ||
+ | / 0 Full | ||
+ | This line defines group Full. It has all attributes, all compiled in hashsums (H) | ||
+ | and all compiled in extra file attributes (X). See ' | ||
+ | compiled | ||
+ | rule at the end of the rule list. | ||
+ | |||
+ | | ||
+ | / | ||
+ | Files that change their mtimes or ctimes but not their contents. | ||
+ | / | ||
+ | Directories that are recreated regularly and change their contents | ||
+ | |||
+ | Log Handling | ||
+ | |||
+ | Logs pose a number of special challenges to AIDE. An active log is nearly constantly be‐ | ||
+ | ing written to. The process of log rotation changes file names for files that are sup‐ | ||
+ | | ||
+ | their rotation, and finally, they get deleted. | ||
+ | | ||
+ | | ||
+ | |||
+ | The following examples suggest a way to handle the common case of log rotation | ||
+ | | ||
+ | The vast majority of logs are rotated this way on most Linux systems. | ||
+ | |||
+ | | ||
+ | / | ||
+ | An Active Log is typically named foo.log. | ||
+ | file does neither change its mode nor its inode number. | ||
+ | and what is written to the file is not supposed to change (growing). | ||
+ | rotation, foo.log is typically renamed to foo.log.1 (or foo.log.0) and the process | ||
+ | is instructed | ||
+ | (ANF) and will eventually be renamed to foo.log | ||
+ | |||
+ | | ||
+ | / | ||
+ | In the next rotation step, foo.log.1 gets compressed to foo.log.2.gz, | ||
+ | Compressed Log in the Log Series. | ||
+ | because it uncompresses the contents of the file and takes the checksum of the un‐ | ||
+ | compressed | ||
+ | changes are ignored (compressed). | ||
+ | |||
+ | | ||
+ | / | ||
+ | In the next log rotation, all foo.log.{x} get renamed to foo.log.{x+1}. | ||
+ | attributes are not supposed to change. | ||
+ | |||
+ | | ||
+ | / | ||
+ | The configuration of the log rotation process specifies a number | ||
+ | tions to keep. The last log in the series is therefore removed from the disk | ||
+ | (ARF). | ||
+ | |||
+ | aide 0.18 does not yet support the following cases of log rotation: | ||
+ | |||
+ | empty files | ||
+ | It might be the case that a log is actually created, but never written | ||
+ | commonly | ||
+ | to cater for data protection regulation. | ||
+ | identical, | ||
+ | sible workaround is to begin a newly rotated log with a timestamp. | ||
+ | tate, this can be done in a postrotate scriptlet. | ||
+ | |||
+ | | ||
+ | With logrotate' | ||
+ | naming | ||
+ | ways use the delaycompress option to avoid this behavior. | ||
+ | |||
+ | | ||
+ | empty files | ||
+ | It might be the case that a log is actually created, but never written | ||
+ | commonly | ||
+ | to cater for data protection regulation. | ||
+ | identical, | ||
+ | sible workaround is to begin a newly rotated log with a timestamp. | ||
+ | tate, this can be done in a postrotate scriptlet. | ||
+ | |||
+ | | ||
+ | With logrotate' | ||
+ | naming | ||
+ | ways use the delaycompress option to avoid this behavior. | ||
+ | |||
+ | | ||
+ | With logrotate' | ||
+ | ated but copied to the new file name. After the copy operation, the old file is | ||
+ | truncated | ||
+ | open file handle. | ||
+ | That doesn' | ||
+ | For the time being, it is recommended to avoid the copytruncate | ||
+ | this behavior. | ||
+ | |||
+ | HINTS | ||
+ | In the following, the first is not allowed in AIDE. Use the latter instead. | ||
+ | |||
+ | /foo epug | ||
+ | |||
+ | /foo e+p+u+g | ||
+ | |||
+ | SEE ALSO | ||
+ | | ||
+ | |||
+ | DISCLAIMER | ||
+ | All trademarks are the property of their respective owners. | ||
+ | | ||
+ | |||
+ | aide v0.19 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ==== Konfiguration ==== | ||
+ | Die Konfiguration wird über die Dateien **''/ | ||
+ | # cp -av / | ||
+ | |||
+ | So können wir später leichter Änderungen mit Hilfe von **'' | ||
+ | |||
+ | Anpassungen und Änderungen an der Konfiguration nehmen mit mit dem Editor unserer Wahl, wie z.B. **'' | ||
+ | # sudo vim / | ||
+ | |||
+ | <file bash / | ||
+ | # Ansible managed configuration file, do not modify manually! | ||
+ | # | ||
+ | # ┌──────────────────────────────────────────────────────────────────────┐ | ||
+ | # │ Contents of configuration file aide.conf | ||
+ | # ├──────────────────────────────────────────────────────────────────────┤ | ||
+ | # │ │ | ||
+ | # ├──┬───── 1. VARIABLES | ||
+ | # │ ├───── 1.1 | ||
+ | # │ └───── 1.2 | ||
+ | # │ │ | ||
+ | # ├──┬───── 2. RULES │ | ||
+ | # │ ├───── 2.1 LIST OF ATTRIBUTES | ||
+ | # │ ├───── 2.2 LIST OF CHECKSUMS | ||
+ | # │ └───── 2.3 | ||
+ | # │ │ | ||
+ | # ├──┬───── 3. PATHS │ | ||
+ | # │ ├──┬── 3.1 | ||
+ | # │ │ ├── 3.1.1 ETC │ | ||
+ | # │ │ ├── 3.1.2 USR │ | ||
+ | # │ │ ├── 3.1.3 VAR │ | ||
+ | # │ │ └── 3.1.4 OTHERS | ||
+ | # │ └──┬── 3.2. INCLUDED | ||
+ | # │ | ||
+ | # │ | ||
+ | # │ | ||
+ | # │ | ||
+ | # │ │ | ||
+ | # └──────────────────────────────────────────────────────────────────────┘ | ||
+ | # | ||
+ | ## 1. VARIABLES | ||
+ | ## 1.1 DATABASE | ||
+ | |||
+ | @@define DBDIR / | ||
+ | @@define LOGDIR / | ||
+ | |||
+ | # The location of the database to be read. | ||
+ | database_in = http:// | ||
+ | |||
+ | # The location of the database to be written. | ||
+ | database_out = file: | ||
+ | |||
+ | # Whether to gzip the output to database. | ||
+ | gzip_dbout = no | ||
+ | |||
+ | ## 1.2 REPORT | ||
+ | |||
+ | # Default | ||
+ | log_level=warning | ||
+ | report_level=changed_attributes | ||
+ | report_url=syslog: | ||
+ | |||
+ | ## 2. RULES | ||
+ | ## 2.1 LIST OF ATTRIBUTES | ||
+ | |||
+ | # These are the default parameters we can check against. | ||
+ | # p: permissions | ||
+ | # i: inode | ||
+ | # n: number of links | ||
+ | # u: user | ||
+ | # g: group | ||
+ | # s: size | ||
+ | # b: block count | ||
+ | # m: mtime | ||
+ | # a: atime | ||
+ | # c: ctime | ||
+ | # S: check for growing size | ||
+ | # acl: Access Control Lists | ||
+ | # selinux | ||
+ | # (must be enabled at compilation time) | ||
+ | # xattrs: | ||
+ | |||
+ | # 2.2 LIST OF CHECKSUMS | ||
+ | |||
+ | # md5: md5 checksum | ||
+ | # sha1: sha1 checksum | ||
+ | # sha256: | ||
+ | # sha512: | ||
+ | # rmd160: | ||
+ | # tiger: | ||
+ | # haval: | ||
+ | # gost: gost checksum (MHASH only) | ||
+ | # crc32: | ||
+ | # whirlpool: | ||
+ | |||
+ | # 2.3 AVAILABLE RULES | ||
+ | |||
+ | # These are the default rules | ||
+ | # R: p+i+l+n+u+g+s+m+c+md5 | ||
+ | # L: p+i+l+n+u+g | ||
+ | # E: Empty group | ||
+ | # >: 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 | ||
+ | |||
+ | # Everything but access time (Ie. all changes) | ||
+ | EVERYTHING = R+sha256+sha512 | ||
+ | |||
+ | # Sane, with multiple hashes | ||
+ | # NORMAL = R+rmd160+sha256+whirlpool | ||
+ | # NORMAL = R+sha256+sha512 | ||
+ | NORMAL = p+i+l+n+u+g+s+m+c+sha256 | ||
+ | |||
+ | # For directories, | ||
+ | DIR = p+i+n+u+g+acl+xattrs | ||
+ | |||
+ | # Access control only | ||
+ | PERMS = p+i+u+g+acl | ||
+ | |||
+ | # Logfile are special, in that they often change | ||
+ | LOG = > | ||
+ | |||
+ | # Just do sha256 and sha512 hashes | ||
+ | FIPSR = p+i+n+u+g+s+m+c+acl+xattrs+sha256 | ||
+ | LSPP = FIPSR+sha512 | ||
+ | |||
+ | # Some files get updated automatically, | ||
+ | # but we want to know when the data inside them changes | ||
+ | DATAONLY = p+n+u+g+s+acl+xattrs+sha256 | ||
+ | |||
+ | ## 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 | ||
+ | |||
+ | # Ignore root cache files | ||
+ | !/root/.* | ||
+ | |||
+ | # Ignore backup files | ||
+ | !/etc/.*~ | ||
+ | |||
+ | # Ignore mtab | ||
+ | !/etc/mtab | ||
+ | |||
+ | ## 3.1.2 USR | ||
+ | |||
+ | # These are too volatile | ||
+ | !/usr/src | ||
+ | !/usr/tmp | ||
+ | |||
+ | ## 3.1.3 VAR | ||
+ | |||
+ | # Ignore logs | ||
+ | !/ | ||
+ | !/ | ||
+ | !/ | ||
+ | !/ | ||
+ | !/ | ||
+ | |||
+ | ## 3.1.4 OTHERS | ||
+ | # Ignore cups | ||
+ | !/etc/cups | ||
+ | |||
+ | # Ignore backup files | ||
+ | !/root/.* | ||
+ | |||
+ | |||
+ | ## 3.2 INCLUDED | ||
+ | ## 3.2.1 ETC | ||
+ | |||
+ | # Check only permissions, | ||
+ | # important files closely. | ||
+ | /etc PERMS | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | ## 3.2.2 USR | ||
+ | |||
+ | /usr | ||
+ | / | ||
+ | |||
+ | ## 3.2.3 VAR | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | ## 3.2.4 OTHERS | ||
+ | |||
+ | /boot NORMAL | ||
+ | /bin | ||
+ | /lib | ||
+ | / | ||
+ | /opt | ||
+ | /root NORMAL | ||
+ | |||
+ | |||
+ | # Host based OTHERS | ||
+ | # local user scripts | ||
+ | / | ||
+ | |||
+ | # local scripts with root rights | ||
+ | / | ||
+ | |||
+ | |||
+ | # | ||
+ | # END ANSIBLE MANAGED - DO NOT EDIT BLOCK</ | ||
+ | |||
+ | Wie eigentlich immer bei der Konfiguration von neuen Programmen lohnt es sich die zugehörige Konfigurationsdatei - in unserem Falle von **AIDE** die **''/ | ||
+ | |||
+ | * Die ersten Einstellungen die man sich überlegen sollte, wären wo die Datenbanken erstellt und vorgehalten werden sollen und ob diese gepackt werden sollen.\\ Die Erstellung der AIDE-Datenbank erfolgt lokal. **'' | ||
+ | Leider existiert aktuell((Stand: | ||
+ | </ | ||
+ | * Logging : Der Parameter **'' | ||
+ | report_url=stdout'' | ||
+ | * Anschließend sollte man sich Gedanken machen, welche Hashingalgorithmen verwendet werden sollen. In den Standardeinstellungen bildet AIDE sieben verschiedene Prüfsummen für jede überwachte Datei. Zu beachten ist hierbei ggf. ob der bei der Erzeugung der Hash-Werte benötige Rechenaufwand gerechtfertigt ist, oder ob man auf einige davon aus Performancegründen besser verzichtet! In der Regel sollten eigentlich zwei verschiedene Hash-Werte Pro Datei ausreichen. \\ \\ | ||
+ | * Ferner kann über Regelsätze definiert werden welche Eigenschaften (Parameter) von Verzeichnissen und/oder Dateien überwacht werden sollen. Hier können entsprechende Vorgaben in der Default-Konfigurationsdatei übernommen bzw. auch ganz eigene individuelle Rule-Sets definiert werden. Folgende Parameter können dabei bei der Bewertung und Überwachung herangezogen werden: | ||
+ | * p: Überprüfen Sie die Dateiberechtigungen der ausgewählten Dateien oder Verzeichnisse. | ||
+ | * i: Überprüfen Sie die Inode-Nummer. Jeder Dateiname hat eine eindeutige Inode-Nummer, | ||
+ | * n: Überprüfen Sie die Anzahl der Links, die auf die betreffende Datei verweisen. | ||
+ | * u: Überprüfen Sie, ob sich der Eigentümer der Datei geändert hat. | ||
+ | * g: Überprüfen Sie, ob sich die Gruppe der Datei geändert hat. | ||
+ | * s: Überprüfen Sie, ob sich die Dateigröße geändert hat. | ||
+ | * b: Prüfen, ob sich die von der Datei verwendete Blockanzahl geändert hat. | ||
+ | * m: Prüfen, ob sich das Änderungsdatum der Datei geändert hat. | ||
+ | * c: Prüfen, ob sich die Zugriffszeit der Datei geändert hat. | ||
+ | * S: Auf eine geänderte Dateigröße prüfen. | ||
+ | * I: Änderungen des Dateinamens ignorieren. \\ Folgende Hash-Werte können bei der berechnung der Prüfsummen verwendet werden: | ||
+ | * md5: md5 Prüfsumme (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt - die Verwendung von sha256 oder sha512 ist hier empfohlen.) | ||
+ | * sha1: sha1 Prüfsumme (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt - die Verwendung von sha256 oder sha512 ist hier empfohlen.) | ||
+ | * sha256: sha256 Prüfsumme | ||
+ | * sha512: sha512 Prüfsumme | ||
+ | * rmd160: rmd160 Prüfsumme (deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt) | ||
+ | * tiger: tiger Prüfsumme | ||
+ | * haval: haval Prüfsumme (MHASH only) | ||
+ | * gost: gost Prüfsumme ((deprecated seit AIDE v0.19, wird in AIDE v0.21 entfernt - MHASH only) | ||
+ | * crc32: crc32 Prüfsumme (MHASH only) | ||
+ | * whirlpool: whirlpool Prüfsumme (MHASH only) \\ \\ | ||
+ | * Zum Schluß muss man sich noch Gedanken machen welche Dateien und Verzeichnis ggf. ausgenommen werden sollen und welche Dateien und Verzeichnisse man in welcher Tiefe überwachen möchte. Die manpage zu **'' | ||
+ | |||
+ | Ist man mit der Konfiguration von **AIDE** soweit zufrieden und fertig, ist man gut beraten mit Hilfe der Option **'' | ||
+ | # aide --config-check | ||
+ | |||
+ | ==== Betrieb ==== | ||
+ | === AIDE Command Options === | ||
+ | Bevor wir nun die AIDE-Datenbank initial erstellen, werfen wir noch kurz einen Blick auf die Optionen, die bei Aufruf von **'' | ||
+ | # aide --help | ||
+ | < | ||
+ | |||
+ | Usage: aide [options] command | ||
+ | |||
+ | Commands: | ||
+ | -i, --init Initialize the database | ||
+ | -n, --dry-init Traverse the file system and match each file against rule tree | ||
+ | -C, --check Check the database | ||
+ | -u, --update Check and update the database non-interactively | ||
+ | -E, --compare Compare two databases | ||
+ | --list List the entries of the database in human readable format | ||
+ | |||
+ | Miscellaneous: | ||
+ | -D, | ||
+ | -p FILE_TYPE: | ||
+ | -v, | ||
+ | -h, | ||
+ | |||
+ | Options: | ||
+ | -c CFGFILE --config=CFGFILE Get config options from CFGFILE | ||
+ | -l REGEX --limit=REGEX Limit command to entries matching REGEX | ||
+ | -B " | ||
+ | -A " | ||
+ | -L LEVEL --log-level=LEVEL Set log message level to LEVEL | ||
+ | -W WORKERS --workers=WORKERS Number of simultaneous workers (threads) for file attribute processing (i.a. hashsum calculation) | ||
+ | --no-progress Turn progress off explicitly | ||
+ | --no-color TUrn color off explicitly</ | ||
+ | |||
+ | === Datenbank erstellen === | ||
+ | Zunächst erstellen wir initial unsere AIDE Datenbank entsprechend unserer [[# | ||
+ | [django@pml010074 ~]$ sudo aide --init | ||
+ | |||
+ | < | ||
+ | AIDE successfully initialized database. | ||
+ | New AIDE database written to / | ||
+ | |||
+ | Number of entries: | ||
+ | |||
+ | --------------------------------------------------- | ||
+ | The attributes of the (uncompressed) database(s): | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | End timestamp: 2025-04-09 20:24:33 +0200 (run time: 2m 53s) | ||
+ | </ | ||
+ | |||
+ | === positive Prüfen des Filesystems gegen die Datenbank === | ||
+ | Mit der Option **'' | ||
+ | [django@pml010074 ~]$ sudo aide --check | ||
+ | < | ||
+ | |||
+ | Number of entries: | ||
+ | |||
+ | --------------------------------------------------- | ||
+ | The attributes of the (uncompressed) database(s): | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | http:// | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | End timestamp: 2025-04-09 20:27:51 +0200 (run time: 2m 25s) | ||
+ | </ | ||
+ | |||
+ | 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 / | ||
+ | |||
+ | Führen wir erneut eine Überprüfung unseres Systems aus, sollte die neue unbekannte Datei entsprechend detektiert werden. | ||
+ | [django@pml010074 ~]$ sudo aide --check | ||
+ | |||
+ | < | ||
+ | AIDE found differences between database and filesystem!! | ||
+ | |||
+ | Summary: | ||
+ | Total number of entries: | ||
+ | Added entries: 1 | ||
+ | Removed entries: 0 | ||
+ | Changed entries: 2 | ||
+ | |||
+ | --------------------------------------------------- | ||
+ | Added entries: | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | f+++++++++++++++: | ||
+ | |||
+ | --------------------------------------------------- | ||
+ | Changed entries: | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | f | ||
+ | d = ... mc.. : /root | ||
+ | |||
+ | --------------------------------------------------- | ||
+ | Detailed information about changes: | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | File: / | ||
+ | | ||
+ | |||
+ | Directory: /root | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | --------------------------------------------------- | ||
+ | The attributes of the (uncompressed) database(s): | ||
+ | --------------------------------------------------- | ||
+ | |||
+ | http:// | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | End timestamp: 2025-04-09 20:27:51 +0200 (run time: 2m 25s) | ||
+ | </ | ||
+ | |||
+ | In der Zusammenfassung sehen wir also in Summe 470.035 Datenbankeinträge, | ||
+ | Total number of entries: | ||
+ | Added entries: 1 | ||
+ | Removed entries: 0 | ||
+ | Changed entries: 2 | ||
+ | |||
+ | Die Datei **''/ | ||
+ | |||
+ | Im Abschnitt **'' | ||
+ | < | ||
+ | d < ... mc.. : / | ||
+ | f > ... mci.H : / | ||
+ | f < ... mci.H : / | ||
+ | d > ... mc.. : / | ||
+ | * In der ersten Spalte kennzeichnet ein **'' | ||
+ | * In der zweiten Spalte wird eine Änderung angezeigt, ob sich die Grösse einer Datei bzw. des Verzeichnisses geändert hat. **'' | ||
+ | * Die mit jedem Buchstaben verbundenen Attribute sind wie folgt: | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * Die folgenden Buchstaben sind nur verfügbar, wenn sie explizit mit „configure“ aktiviert werden: | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | |||
+ | Im Abschnitt **'' | ||
+ | |||
+ | === Update Database === | ||
+ | Nach Änderungen am System, z.B. bei Konfigurationsänderungen, | ||
+ | $ sudo aide --update | ||
+ | |||
+ | Alternativ kann man auch direkt die Datenbank neu initialisieren: | ||
+ | $ sudo aide --init | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Ein anderer Ansatz wäre dann ein **'' | ||
+ | |||
+ | === tägliche checks enablen === | ||
+ | Wiederkehrende | ||
+ | |||
+ | [django@pml010074 ~] $ sudo systemctl enable --now aidecheck.timer | ||
+ | |||
+ | Created symlink '/ | ||
+ | |||
+ | Den Status können wir wie gewohnt via **'' | ||
+ | [django@pml010074 ~] $ sudo systemctl status aidecheck.timer | ||
+ | < | ||
+ | <font style=" | ||
+ | | ||
+ | | ||
+ | | ||
+ | Trigger: Mon 2025-02-10 05:00:00 CET; 14h left | ||
+ | | ||
+ | |||
+ | Feb 09 13:47:17 pml010074 systemd[1]: Started Aide check every day at 5AM.</ | ||
+ | </ | ||
+ | |||
+ | === jounald (tägliche) logs === | ||
+ | In der Konfigurationsdatei **''/ | ||
+ | |||
+ | # vim / | ||
+ | < | ||
+ | |||
+ | # Default | ||
+ | log_level=warning | ||
+ | report_level=changed_attributes | ||
+ | report_url=stdout | ||
+ | report_url=syslog: | ||
+ | |||
+ | ...</ | ||
+ | |||
+ | Somit können wir einfach die Logeinträge von AIDE einfach ausgeben. | ||
+ | # journalctl -f / | ||
+ | ++++ Ausgabe der AIDE Logeinträge im Journal | | ||
+ | < | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Number of entries: | ||
+ | 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]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | Mar 14 16:20:38 pml010070 aide[102360]: | ||
+ | | ||
+ | End timestamp: 2025-03-14 16:20:38 +0100 (run time: 1m 41s) | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | ===== 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: | ||
+ | |||
+ | 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-/ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | < | ||
+ | -O - | tar -xz --strip-components=1 -C ~/ | ||
+ | |||
+ | Nach Anpassung der Daten im Inventory kann man anschließend direkt **[[# | ||
+ | </ | ||
+ | |||
+ | === Vorbereitung - Daten im Inventory === | ||
+ | Bei unserem Konfigurationsbeispiel hier gehen wir von folgenden Parametern aus: | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | |||
+ | Die Konfigurationsdatei unseres **inventory** in unsere, Ansible-Verzeichnis beinhaltet demnach unter anderem: | ||
+ | $ vim inventories/ | ||
+ | ++++ inventories/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Für alle Host aus der Gruppe **'' | ||
+ | $ vim inventories/ | ||
+ | ++++ inventories/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Die beiden Beispiel-Hosts aus der Gruppe|Zone **'' | ||
+ | * Der Host **'' | ||
+ | * Der Host **'' | ||
+ | |||
+ | Wir legen uns also nun die Definitionsdateien für die beiden Hosts im SOHO an. | ||
+ | $ vim inventories/ | ||
+ | ++++ inventories/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | $ vim inventories/ | ||
+ | ++++ inventories/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Unser Beispiel-Inventory hat also nunmehr folgenden Aufbau: | ||
+ | < | ||
+ | ├── group_vars | ||
+ | │ └── arch | ||
+ | │ | ||
+ | ├── hosts | ||
+ | └── hosts_vars | ||
+ | ├── pml010070 | ||
+ | └── pml010074 | ||
+ | |||
+ | 4 directories, | ||
+ | |||
+ | === Rolle === | ||
+ | Für die Installation und Konfiguration von **aide** verwenden wir eine eigene Rolle **'' | ||
+ | $ cp -avr roles/ | ||
+ | ++++ Ausgabe von cp -avr roles/ | ||
+ | < | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | 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/ | | ||
+ | < | ||
+ | ├── 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, | ||
+ | </ | ||
+ | ++++ | ||
+ | == tasks == | ||
+ | Wie wir sehen ist die Rolle durchaus überschaubar, | ||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Die Installation von AIDE wird in der ersten Task-Gruppe mit dem tag **'' | ||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Die eigentliche Installation Konfiguration sowie das Erstellen der initialen AIDE-Datenbank erfolgt im anschließenden Task **'' | ||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | Was nun noch fehlt ist das Kopieren der erstellten AIDE-Datenbank auf unseren internen Repository-/ | ||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | == templates == | ||
+ | Für die Erstellung der AIDE-Konfigurationsdatei **''/ | ||
+ | |||
+ | <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-/ | ||
+ | </ | ||
+ | |||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | == handlers == | ||
+ | Sollte bei der Abarbeitung des Playbook die individuelle systemd-timer Konfigurationsdatei **''/ | ||
+ | |||
+ | Zu guter Letzt brauchen wir noch eine Konfiguration der Aufgaben die bei einem **'' | ||
+ | $ vim roles/ | ||
+ | ++++ roles/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | === Playbook === | ||
+ | Unser Playbook zum Installieren und Konfigurieren unseres HIDS auf Basis AIDE, ist wie immer schlank, unscheinbar und unspektakulär, | ||
+ | $ vim playbooks/ | ||
+ | ++++ playbooks/ | ||
+ | {{gh> https:// | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | |||
+ | === Ausführung - Playbooklauf === | ||
+ | Die orchestrierte Variante der Installation und Konfiguration unseres **AIDE**-Daemon 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 **'' | ||
+ | $ ansible-playbook playbooks/ | ||
+ | |||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Ergebniskontrolle ==== | ||
+ | Bei einem Blick in unser System-Journal finden wir nun unter anderem zunächst einmal das Setzen des **'' | ||
+ | # journalctl -f / | ||
+ | < | ||
+ | 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.</ | ||
+ | |||
+ | Des weiteren finden wir auch Informationen zum initialen Erstellen der Aide-Datenbank. | ||
+ | # journalctl -f / | ||
+ | ++++ journal bei Erstellung der initialen Datenbank | | ||
+ | < | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | 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]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | Mar 14 14:43:07 pml010070 aide[94384]: | ||
+ | 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: | ||
+ | Mar 14 14:43:07 pml010070 systemd[1]: aidecheck.service: | ||
+ | ++++ | ||
+ | |||
+ | Täglich um **05:51** Uhr wird nun unser Host die aktuelle Datenbank gegen die bestehende AIDE-Datenbank auf unserem internen Repository-/ | ||
+ | # journalctl | ||
+ | ++++ journal beim täglichen check um 05:51 Uhr dieses Hosts | | ||
+ | < | ||
+ | Mar 15 05:51:27 pml010070 rtkit-daemon[1200]: | ||
+ | Mar 15 05:51:27 pml010070 rtkit-daemon[1200]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | | ||
+ | Total number of entries: | ||
+ | Added 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]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | 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]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | 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]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 aide[57175]: | ||
+ | Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: | ||
+ | Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: | ||
+ | Mar 15 05:53:01 pml010070 systemd[1]: aidecheck.service: | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ===== Fazit und Ausblick ===== | ||
+ | <WRAP center round tip 80%> | ||
+ | Mit **AIDE** haben wir nun ein Instrument an der Hand, mit der wir in der Lage sind die Dateisysteme unserer Host einfach auf Anomalien hin zu überwachen. 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, | ||
+ | |||
+ | In diesem Konfigurationsbeispiel wurde lediglich aufgezeigt, wie man einfach mit Hilfe von Ansible installieren, | ||
+ | noch im Detail ansehen! | ||
+ | </ | ||
+ | |||
+ | ====== Links ====== | ||
+ | * **[[linux: | ||
+ | * **=> [[linux: | ||
+ | * **[[linux: | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||
+ |