guidugli.audit

Ansible-Rolle: Audit

Eine Ansible-Rolle, die die Überwachung auf RHEL/CentOS, Fedora und Debian/Ubuntu installiert und konfiguriert.

Standardregeln basieren auf dem CIS-Benchmark für RedHat/Ubuntu/Debian sowie auf diesem GitHub-Repository: https://github.com/Neo23x0/auditd.

Haftungsausschluss: Ich bin kein Sicherheits-Experte, und diese Rolle sollte nicht verwendet werden, ohne zunächst zu lernen, wie Auditing funktioniert und welche Regeln von dieser Rolle konfiguriert werden. Die Sicherheit Ihrer Server liegt in Ihrer Verantwortung!

Anforderungen

Betriebssystem, das auf Bare Metal oder auf einem Hypervisor virtualisiert läuft. Auf containerisierten Systemen kann nur ein auditd-Prozess laufen, normalerweise auf dem Host-System. Diese Rolle versucht nicht, den auditd-Daemon in Containern zu starten.

Variablen der Rolle

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml):

audit_local_events: true

Dieses Ja/Nein-Schlüsselwort gibt an, ob lokale Ereignisse einbezogen werden sollen oder nicht. Normalerweise möchte man lokale Ereignisse, daher ist der Standardwert ja. Fälle, in denen man dies auf nein setzen würde, sind, wenn man nur Ereignisse aus dem Netzwerk aggregieren möchte.

#audit_log_file: /var/log/audit/audit.log

Dieses Schlüsselwort gibt den vollständigen Dateinamen zur Protokolldatei an, in der Auditergebnisse gespeichert werden. Es muss sich um eine reguläre Datei handeln.

audit_write_logs: true

Dieses Ja/Nein-Schlüsselwort bestimmt, ob Protokolle auf die Festplatte geschrieben werden sollen oder nicht. Normalerweise möchte man dies, daher ist der Standardwert wahr.

audit_log_format: ENRICHED

Das Protokollformat beschreibt, wie die Informationen auf der Festplatte gespeichert werden sollen. Es gibt 2 Optionen: raw und enriched (angereichert).

audit_log_group: root

Dieses Schlüsselwort gibt die Gruppe an, die auf die Berechtigungen der Protokolldatei angewendet wird. Der Standardwert ist root. Der Gruppenname kann entweder numerisch oder ausgeschrieben sein.

audit_priority_boost: 4

Dies ist eine nicht-negative Zahl, die dem Audit-Daemon mitteilt, wie hoch die Prioritätssteigerung sein soll. Der Standardwert ist 4. Keine Änderung ist 0.

audit_flush: INCREMENTAL_ASYNC

Gültige Werte sind none, incremental, incremental_async, data und sync.

audit_freq: 50

Dies ist eine nicht-negative Zahl, die dem Audit-Daemon mitteilt, wie viele Datensätze geschrieben werden sollen, bevor ein expliziter Flush-Befehl an die Festplatte ausgegeben wird. Dieser Wert ist nur gültig, wenn das Flush-Schlüsselwort auf incremental oder incremental_async gesetzt ist.

audit_num_logs: 5

Dieses Schlüsselwort gibt die Anzahl der Protokolldateien an, die beibehalten werden sollen, wenn "rotate" als max_log_file_action angegeben ist. Wenn die Zahl < 2 ist, werden die Protokolle nicht rotiert. Diese Zahl muss 999 oder weniger sein.

audit_name_format: NONE

Diese Option steuert, wie Computer-Namen in den Audit-Ereignisstrom eingefügt werden. Es gibt folgende Auswahlmöglichkeiten: none, hostname, fqd, numeric und user. "None" bedeutet, dass kein Computername in das Audit-Ereignis eingefügt wird.

#audit_name: mydomain

Dies ist der von einem Administrator definierte String, der den Computer identifiziert, wenn "user" als name_format-Option angegeben wird.

audit_max_log_file: 256

Dieses Schlüsselwort gibt die maximale Dateigröße in Megabyte an. Wenn dieses Limit erreicht ist, wird eine konfigurierbare Aktion ausgelöst.

audit_max_log_file_action: keep_logs

Dieses Parameter gibt an, welche Aktion ergriffen werden soll, wenn das System festgestellt hat, dass das maximale Dateigrößenlimit erreicht wurde. Gültige Werte sind ignore, syslog, suspend, rotate und keep_logs.

audit_verify_email: true

Diese Option bestimmt, ob die in action_mail_acct angegebene E-Mail-Adresse überprüft wird, um sicherzustellen, dass der Domainname aufgelöst werden kann. Diese Option muss vor action_mail_acct angegeben werden oder der Standardwert "ja" wird verwendet.

audit_action_mail_acct: root

Diese Option sollte eine gültige E-Mail-Adresse oder Alias enthalten. Die Standardadresse ist root. Wenn die E-Mail-Adresse nicht lokal zur Maschine gehört, müssen Sie sicherstellen, dass E-Mails korrekt auf Ihrem Computer und Netzwerk konfiguriert sind. Diese Option erfordert auch, dass /usr/lib/sendmail auf der Maschine vorhanden ist.

audit_space_left: 75

Wenn der freie Speicherplatz im Dateisystem, das die log_file enthält, unter diesen Wert fällt, ergreift der Audit-Daemon die Aktion, die durch space_left_action angegeben ist. Wenn der Wert von space_left als ganze Zahl angegeben wird, wird er als absoluter Wert in Megabyte (MiB) interpretiert. Wenn der Wert als Zahl zwischen 1 und 99 gefolgt von einem Prozentzeichen (z.B. 5%) angegeben wird, berechnet der Audit-Daemon die absolute Größe in Megabytes basierend auf der Größe des Dateisystems, das log_file enthält.

audit_space_left_action: email

Dieses Parameter gibt an, welche Aktion ergriffen werden soll, wenn das System festgestellt hat, dass der Speicherplatz auf der Festplatte zu schwinden beginnt. Gültige Werte sind ignore, syslog, rotate, email, exec, suspend, single und halt.

audit_admin_space_left: 50

Dies ist ein numerischer Wert in Megabyte, der dem Audit-Daemon mitteilt, wann er eine konfigurierbare Aktion durchführen soll, weil der Speicherplatz auf der Festplatte gering ist. Dies sollte als letzte Chance angesehen werden, etwas zu tun, bevor der Speicherplatz vollständig erschöpft ist.

audit_admin_space_left_action: suspend

Dieses Parameter gibt an, welche Aktion ergriffen werden soll, wenn das System festgestellt hat, dass der Speicherplatz auf der Festplatte gering ist. Gültige Werte sind ignore, syslog, rotate, email, exec, suspend, single und halt.

audit_disk_full_action: SUSPEND

Dieses Parameter gibt an, welche Aktion ergriffen werden soll, wenn das System festgestellt hat, dass die Partition, auf die Protokolldateien geschrieben werden, voll geworden ist. Gültige Werte sind ignore, syslog, rotate, exec, suspend, single und halt.

audit_disk_error_action: SUSPEND

Dieses Parameter gibt an, welche Aktion ergriffen werden soll, wenn ein Fehler beim Schreiben von Audit-Ereignissen auf die Festplatte oder beim Rotieren von Protokollen festgestellt wird. Gültige Werte sind ignore, syslog, exec, suspend, single und halt.

#audit_tcp_listen_port: 60

Dies ist ein numerischer Wert im Bereich 1..65535, der, wenn angegeben, bewirkt, dass auditd auf dem entsprechenden TCP-Port auf Audit-Daten von entfernten Systemen hört. Der Audit-Daemon kann mit tcp_wrappers verknüpft sein. Sie möchten möglicherweise den Zugriff mit einem Eintrag in den Dateien hosts.allow und deny steuern. Wenn dies auf einem systemd-basierten Betriebssystem bereitgestellt wird, müssen Sie möglicherweise die "After"-Direktive anpassen.

#audit_tcp_listen_queue: 5

Dies ist ein numerischer Wert, der angibt, wie viele ausstehenden (angeforderten, aber nicht akzeptierten) Verbindungen erlaubt sind. Der Standardwert beträgt 5. Wenn dieser Wert zu klein ist, können Verbindungen abgelehnt werden, wenn zu viele Hosts genau zur gleichen Zeit gestartet werden, z. B. nach einem Stromausfall. Diese Einstellung wird nur für aggregierende Server verwendet. Clients, die sich bei einem Remote-Server anmelden, sollten dies auskommentiert lassen.

#audit_tcp_max_per_addr: 1

Dies ist ein numerischer Wert, der angibt, wie viele gleichzeitige Verbindungen von einer IP-Adresse zulässig sind. Der Standardwert beträgt 1 und das Maximum ist 1024. Wenn dieser Wert zu hoch gesetzt wird, kann dies einen Denial-of-Service-Angriff auf den Protokollserver ermöglichen.

audit_use_libwrap: true

Diese Einstellung bestimmt, ob tcp_wrappers verwendet werden soll, um Verbindungsversuche von erlaubten Maschinen zu unterscheiden.

#audit_tcp_client_ports: 1024-65535

Dieses Parameter kann ein einzelner numerischer Wert oder zwei durch einen Bindestrich getrennte Werte sein (keine Leerzeichen erlaubt). Es gibt an, welche Client-Ports für eingehende Verbindungen zulässig sind. Wenn nicht angegeben, ist jeder Port erlaubt.

audit_tcp_client_max_idle: 0

Dieses Parameter gibt die Anzahl von Sekunden an, die ein Client inaktiv sein darf (d.h. keine Daten von ihm) bevor auditd sich beschwert. Dies wird verwendet, um inaktive Verbindungen zu schließen, wenn die Clientmaschine ein Problem hat, bei dem sie die Verbindung nicht korrekt schließen kann. Beachten Sie, dass dies eine globale Einstellung ist und höher sein muss als jede einzelne client heartbeat_timeout-Einstellung, vorzugsweise um das doppelte. Der Standardwert ist Null, was diese Überprüfung deaktiviert.

audit_transport: TCP

Wenn auf TCP gesetzt, werden nur unverschlüsselte TCP-Verbindungen verwendet. Wenn auf KRB5 gesetzt, wird Kerberos 5 für Authentifizierung und Verschlüsselung verwendet.

audit_krb5_principal: auditd

Dies ist der Principal für diesen Server. Der Standardwert ist "auditd". Gegebenenfalls sucht der Server nach einem Schlüssel, der wie auditd/hostname@EXAMPLE.COM gespeichert in /etc/audit/audit.key ist, um sich zu authentifizieren, wobei hostname der kanonische Name des Hosts des Servers ist, wie er durch eine DNS-Suche seiner IP-Adresse zurückgegeben wird.

#audit_krb5_key_file: /etc/audit/audit.key

Standort des Schlüssels für den Principal dieses Clients. Beachten Sie, dass die Schlüsseldatei im Besitz von root sein muss und die Berechtigung 0400 haben muss.

audit_distribute_network: false

Wenn auf true gesetzt, werden netzwerkoriginierte Ereignisse an den Audit-Dispatcher zur Verarbeitung verteilt.

audit_q_depth: 400

Dies ist ein numerischer Wert, der angibt, wie groß die interne Warteschlange des Audit-Ereignis-Dispatchers sein soll. Eine größere Warteschlange ermöglicht eine bessere Verarbeitung von Ereignisfluten, könnte jedoch Ereignisse halten, die nicht verarbeitet werden, wenn der Daemon beendet wird. Wenn Sie Nachrichten im Syslog darüber erhalten, dass Ereignisse verworfen werden, erhöhen Sie diesen Wert.

audit_overflow_action: SYSLOG

Diese Option bestimmt, wie der Daemon auf Überläufe seiner internen Warteschlange reagieren soll. Wenn dies passiert, bedeutet das, dass mehr Ereignisse empfangen werden, als er an untergeordnete Prozesse weitergeben kann. Dieser Fehler bedeutet, dass das aktuelle Ereignis, das er zu dispatchen versucht, verloren gehen wird. Diese Option hat folgende Auswahlmöglichkeiten: ignore, syslog, suspend, single und halt.

audit_max_restarts: 10

Dies ist eine nicht-negative Zahl, die dem Audit-Ereignis-Dispatcher angibt, wie oft er versuchen kann, ein abgestürztes Plugin neu zu starten.

audit_plugin_dir: /etc/audit/plugins.d

Dies ist der Speicherort, den auditd verwendet, um nach seinen Plugin-Konfigurationsdateien zu suchen.

force_overwrite_audit: true

Wenn die Audit-Datei bereits existiert, forcieren Sie das Überschreiben? Es wird überschrieben, wenn der Inhalt der Zieldatei sich von der Quelle unterscheidet.

audit_sudo_log: "{{ sudo_log | default('/var/log/sudo.log') }}"

Wenn die Sudo-Rolle definiert ist, wird der Wert aus der Variablen sudo_log abgerufen, andernfalls wird der Standardwert verwendet: /var/log/sudo.log. Dies soll verhindern, dass Benutzer dieselben Informationen mehrfach angeben müssen. Aber die Sudo-Rolle ist keine Abhängigkeit für diese Rolle.

Die unten aufgeführten Variablen müssen für gezielte Systeme nicht geändert werden (siehe vars/main.yml):

audit_packages: ['audit', 'audit-libs']

Diese Variable ist in vars/main.yml definiert und wird gemäß der Linux-Distribution gesetzt. Benutzer müssen diese Variable für die Zielsysteme dieser Rolle nicht ändern.

audit_config_path: /etc/audit/auditd.conf

Diese Variable ist in vars/main.yml definiert und steuert, wo sich die auditd.conf-Datei befindet.

audit_rulesd_path: /etc/audit/rules.d

Diese Variable ist in vars/main.yml definiert und steuert, wo sich das Verzeichnis rules.d befindet.

audit_rules_files:
  - 01-init.rules
  - 10-self-audit.rules
  - 20-filters.rules
  - 30-kernel.rules
  - 40-identity.rules
  - 40-login.rules
  - 40-mount.rules
  - 40-stunnel.rules
  - 40-swap.rules
  - 40-time.rules
  - 50-cron.rules
  - 50-dac.rules
  - 50-hostname.rules
  - 50-ip-connections.rules
  - 50-network.rules
  - 50-pkg-manager.rules
  - 50-remote-shell.rules
  - 50-sudoers.rules
  - 50-system-libs.rules
  - 50-system-startup.rules
  - 55-privileged.rules
  - 60-mail.rules
  - 60-pam.rules
  - 60-sshd.rules
  - 60-systemd.rules
  - 70-access.rules
  - 70-mac-policy.rules
  - 70-power-state.rules
  - 70-sessions.rules
  - 70-shell-profiles.rules
  - 80-data-compression.rules
  - 80-network.rules
  - 80-privilege-abuse.rules
  - 80-reconnaissance.rules
  - 80-socket-creation.rules
  - 80-suspicious.rules
  - 80-suspicious-shells.rules
  - 80-virtualization.rules
  - 90-cred-in-files.rules
  - 90-IPC.rules
  - 90-root-exec.rules
  - 90-special-sw.rules
  - 95-32bit-api-exploitation.rules

Geben Sie die zu kopierenden Regel-Dateien an. Standardmäßig wird keine Datei zum Kopieren ausgewählt. Die oben aufgeführten Dateien werden von der Rolle bereitgestellt, aber der Benutzer kann nach Bedarf eigene Dateien erstellen. Die Rolle stellt die Regeln in mehreren kleinen Dateien bereit (statt in einer großen), um die Wiederverwendbarkeit zu fördern: Sie können auswählen, welche Regeln Sie umsetzen möchten, und Ihre eigenen benutzerdefinierten Regeln erstellen. Die Regeln basieren auf CIS und anderen Sicherheitsstandards.

Abhängigkeiten

Keine Abhängigkeiten.

Beispiel-Playbook

- hosts: servers
  vars_files:
    - vars/main.yml
  roles:
     - { role: guidugli.audit }
  

Lizenz

MIT / BSD

Autorinfo

Diese Rolle wurde 2020 von Carlos Guidugli erstellt.

Über das Projekt

Install and configure audit on linux

Installieren
ansible-galaxy install guidugli.audit
GitHub Repository
Lizenz
mit
Downloads
116
Besitzer