Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Prüfprotokoll

Das Prüfprotokoll von Exponential aus Sicht eines Hosters - was pro Kanal festgehalten wird, der Cronjob, der rotiert, prüft und archiviert, die Hash-Kette und exp:audit verify für die Überwachung, Empfänger von…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/security/audit-trail.md

On this page

This page is a translation. Read the English original

Prüfprotokoll

Diese Seite ist für Systemadministratoren und Sicherheitsverantwortliche bei einem Hoster. Jede Exponential-6-Website führt eine manipulationssichtbare Aufzeichnung darüber, wer was getan hat: Anmeldungen und Fehlschläge, Änderungen an Rollen und Einstellungen, entfernte Inhalte, ausgeführte Befehle, Bestellungen. Es ist standardmäßig an und braucht keine Einrichtung, aber ein Hoster hat drei Aufgaben: seinen Cronjob am Laufen halten, seine Alarme zu einem Menschen bringen und eine Kopie außerhalb der Maschine halten. Die Kurzreferenz ist Das Prüfprotokoll; die vollständige Anleitung ist Audit.

Inhalt

  1. Was festgehalten wird
  2. Die Befehle, die ein Hoster nutzt
  3. Der Cronjob
  4. Die Kette prüfen
  5. Alarme
  6. Von der Maschine weiterleiten
  7. Schlüssel
  8. Festplatte, Schreibfehler und Cluster
  9. Checkliste

Was festgehalten wird

Jeder Eintrag ist eine JSON-Zeile in einer Datei pro Kanal und Tag, var/<site>/log/audit/<channel>-<YYYY-MM-DD>.jsonl, und jede Zeile trägt den Hash der Zeile davor, sodass eine geänderte, entfernte oder eingefügte Zeile sichtbar wird.

Das Prüfprotokoll in der Administration: wer was wann geändert hat, mit Filtern
Das Prüfprotokoll in der Administration: wer was wann geändert hat, mit Filtern
KanalBeispieleAktuell / archiviert (Tage)
contentveröffentlichen, verschieben, entfernen, verbergen, Papierkorb, Versionen, Klassen90 / 730
accessAnmeldung, gescheiterte Anmeldung, verweigerte Ansicht, Kontosperre, Rollenzuweisung, Zurücksetzen des Passworts90 / 730
systemgeschriebene Einstellungen, geleerte Caches, Läufe von Cronjobs, Befehle, Paketinstallationen, Wartung, Ausrollen90 / 730
commerceBestellungen, Zahlungen (nie Kartendaten), Mehrwertsteuer, Währungen90 / 730
readstichprobenartige Ansichten, Suchen, Downloads; nur wenn Lesezugriffe eingeschaltet sind30 / 90

Datenschutz als Standard: Adressen auf /24 und /48 gekürzt, Sitzungen gehasht, User Agents gekürzt, Passwörter, Tokens und Geheimnisse nie festgehalten. Einstellungen zu Aufbewahrung und Datenschutz: Aufbewahrung von Logs und Daten und Compliance und DSGVO.

Wer es innerhalb der Website lesen darf: die Richtlinien audit/read und audit/manage, in einer neuen Installation nur bei der Rolle Administrator. Der Reiter Audit der Administration ist /audit/dashboard.

Die Befehle, die ein Hoster nutzt

./console exp:audit status --allow-root-user                       # enabled, directory, key, each channel intact or broken
./console exp:audit verify --allow-root-user                       # exit 0 intact, 1 broken, 2 error
./console exp:audit verify --archives --allow-root-user            # the archives as well
./console exp:audit tail --channel=access --lines=20 --allow-root-user
./console exp:audit alerts recipients --allow-root-user            # who receives alert mail, and why
./console exp:audit sinks list --allow-root-user

exp:audit hat außerdem channels, show, checkpoint, search (--query=<text>), rotate, archive, restore, purge, reindex, pseudonymise, export, import, key, alerts und cron (Von der Kommandozeile).

Der Cronjob

Der Cronjob-Teil audit ist in der Gruppe frequent von settings/cronjob.ini. Jeder Lauf indiziert, liefert die Warteschlangen der Senken aus und wertet Alarmregeln aus; einmal am Tag (nach RotateAfter, 00:15 Ortszeit der Website) schließt er Tagesdateien, prüft jeden Kanal, archiviert, was älter als LiveDays ist, bereinigt, was älter als ArchiveDays ist, pseudonymisiert alte Indexzeilen und schreibt einen signierten Checkpoint (4.1 Cron).

*/5 * * * * cd /var/www/vhosts/<domain>/<installation> && php runcronjobs.php -q frequent

Führen Sie ihn als Benutzer der Website aus. Ein Lauf nimmt eine Sperre, sodass sich Läufe nie überschneiden. Das Dashboard des Audits warnt, wenn der Teil seit einer Stunde nicht gelaufen ist. Planung pro Kunde: Cronjobs.

Die Kette prüfen

exp:audit verify endet mit 0 (unversehrt), 1 (gebrochen) oder 2 (Fehler), passt also zu jedem Überwachungssystem:

Die Einstellungen des Audits: was festgehalten wird, die Archive und die Prüfung der Kette
Die Einstellungen des Audits: was festgehalten wird, die Archive und die Prüfung der Kette
./console exp:audit verify -q --allow-root-user || <your alert command>

Wenn eine Kette BROKEN ist: Bearbeiten oder entfernen Sie nichts. Notieren Sie Datei, Zeile und Art, kopieren Sie das Verzeichnis an einen sicheren Ort und vergleichen Sie mit dem, was den Server verlassen hat (syslog-Kopien, Empfänger des Webhooks, Checkpoints, Archive) (4.4 Prüfen und wiederherstellen). Folgen Sie dann Kompromittierte Website.

Alarme

Zu den mitgelieferten Regeln gehören brute_force (20 Fehlschläge aus einem Netz in 5 Minuten), brute_force_user (10 für ein Konto in 15 Minuten) und admin_role_granted. Mail geht an die Recipients[] der Regel, sonst an [AuditAlertSettings] Recipients[], sonst an [AuditSink_mail] Receivers[], sonst an die AdminEmail der Website (4.5 Alarme).

Entscheiden Sie mit jedem Kunden, wer Alarme erhält: der Administrator des Kunden, das Sicherheitspostfach des Hosters oder beide. Empfänger können Adressen, benannte Gruppen, Benutzer, Benutzergruppen oder Rollen sein:

# settings/override/audit.ini.append.php
[AuditAlertSettings]
Recipients[]
Recipients[]=admin
Recipients[]=address:[email protected]

Mail wird nur vom Cronjob versandt, höchstens eine pro Regel und Empfänger innerhalb von [AuditSink_mail] Throttle (900 s).

Von der Maschine weiterleiten

Eine Senke schickt Einträge vom Server weg, damit eine kompromittierte Maschine ihre eigene Geschichte nicht stillschweigend umschreiben kann (Sicherheitshärtung).

SenkeTransport
[AuditSink_syslog]Transport=local (nativer Socket von journald, sonst /dev/log; journalctl -t exponential), journald, devlog, udp, tcp, tls (Host, Port)
[AuditSink_webhook]ein signierter HTTPS-POST (HMAC-SHA-256 über Zeitstempel und Inhalt), mit Warteschlange und Wiederholungen
[AuditSink_mail]Mail bei kritischen Ereignissen
# settings/override/audit.ini.append.php: every channel to a central collector
[AuditSink_syslog]
Transport=tcp
Host=logs.example.com
Port=514

[AuditChannel_content]
Sinks[]=syslog

[AuditChannel_commerce]
Sinks[]=syslog

Netzwerktransporte laufen über die Warteschlange und werden vom Cronjob-Teil versandt. Ein Hoster, der eine zentrale Log-Plattform betreibt, kann das jedem Kunden anbieten; siehe Sicherheitslog für die anderen Sicherheitsquellen.

Schlüssel

settings/override/audit.ini.append.php enthält eine ID der Installation, die Signaturschlüssel und den Pseudonymschlüssel, beim ersten Ereignis erzeugt (Modus 0640, nie committet). Sichern Sie sie als Geheimnis mit dem Rest von settings/override/: Ohne die Signaturschlüssel lassen sich damit signierte Archive und Checkpoints nicht mehr prüfen. Erneuern Sie den Signaturschlüssel jährlich oder sofort, wenn er gelesen worden sein könnte (exp:audit key rotate; starten Sie danach Velocity neu, wenn ein Worker den alten behält) (4.6 Schlüssel). Schlüssel aus einem Geheimnisspeicher: [AuditKeySettings] GenerateKeys=disabled und die Schlüssel selbst in settings/override bereitstellen.

Festplatte, Schreibfehler und Cluster

  • Festplatte. Die aktuellen Dateien und Archive wachsen mit der Aktivität; Archive werden komprimiert (standardmäßig gzip). ArchiveDir liegt am besten auf einem anderen Dateisystem oder einem Mount, dem der Webserver Dateien hinzufügen, sie aber nicht ändern kann.
  • Schreibfehler. [AuditSettings] OnWriteFailure=continue (Standard): Eine volle Festplatte nimmt die Website nicht vom Netz; der Fehler steht in error.log als AUDIT-UNWRITTEN. refuse: Sicherheitsrelevante Aktionen (POSTs der Administration an sensible Ansichten, geschriebene Einstellungen) werden mit 503 verweigert, solange ihr Kanal nicht geschrieben werden kann (Wenn das Audit nicht schreiben kann). Beobachten Sie den Speicherplatz in beiden Fällen (Festplatte voll).
  • Mehrere Webserver. Ein gemeinsames LogDir auf einem Dateisystem mit POSIX-Sperren über Server hinweg (NFSv4, CephFS, GlusterFS), eine Schlüsseldatei, die jeder Server teilt, Schlüssel einmal erzeugt, bevor die anderen Server festhalten (6.3 Cluster).
  • Bestehende Installationen, die auf 6.0.15 aktualisiert wurden, legen die Indextabellen mit php update/common/scripts/6.0/createaudittables.php an.

Checkliste

  • To do: Die Cronjob-Gruppe frequent läuft alle paar Minuten als Benutzer der Website.
  • To do: exp:audit verify in der Überwachung, mit Alarm bei einem Exit ungleich null.
  • To do: Empfänger von Alarmen mit dem Kunden vereinbart und mit exp:audit alerts recipients geprüft.
  • To do: Eine Senke leitet mindestens access und system von der Maschine weiter.
  • To do: audit.ini.append.php als Geheimnis gesichert; Erneuerung der Schlüssel geplant.
  • To do: audit/read nur bei den Rollen, die es brauchen.
  • To do: Speicherplatz für aktuelle Dateien und Archive überwacht; OnWriteFailure entschieden.

Ereignisse des Demomodus. system.demo.mode (Warnung, immer festgehalten) kennzeichnet jeden Prozess, der mit EXP_DEMO_MODE=1 gestartet ist; verweigerte Änderungen und Zurücksetzungen des Administratorpassworts tragen den Grund demo_mode. Auf der Website eines Kunden ist beides ein Vorfall. Demomodus für Hoster.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x