Zum Inhalt

Zeitsprünge

Zeitsprünge Zeitsprünge

Einführung

Ein CUSTOM_TIME_JUMP-Ereignis meldet, dass sich die Systemzeit der IRF1000 oder IRF3000 sprunghaft geändert hat. Diese Ereignisse ermöglichen es, manuelle Uhrzeitmanipulationen, eine fehlerhafte NTP-Synchronisation oder eine Fehlfunktion der Zeitverwaltungsdienste zu erkennen. Für OT- und Industrieautomatisierungsumgebungen sind stabile und vertrauenswürdige Zeitstempel entscheidend, weil sie die Log-Korrelation, die Rekonstruktion von Vorfällen, die Zertifikatsprüfung und geplante Aufgaben beeinflussen. Wenn Ihr SIEM oder SOC unerwartete oder häufige Zeitsprung-Ereignisse feststellt, sollten Sie auf Konfigurationsfehler, ausfallende NTP-Server oder mögliche Versuche prüfen, Aktivitäten durch Ändern der Gerätezeit zu verbergen. Das Gerät begrenzt die Erzeugung von CUSTOM_TIME_JUMP-Audit-Einträgen auf 4 Meldungen pro Dienst und Stunde, um ein unkontrolliertes Anwachsen der Audit-Log-Datei zu vermeiden, sodass extrem häufige Zeitänderungen möglicherweise nicht vollständig im Log sichtbar sind.

Ansicht im Webinterface

Im VIEW-Webinterface erscheinen CUSTOM_TIME_JUMP-Audit-Einträge im Abschnitt System audit. Die Ereignisse werden als einfache Zeilen in einer Tabelle angezeigt. Das Screenshot-Beispiel zeigt Einträge wie:

  • Title: Time jump detected, Manual Time jump detected, WWH Time jump detected, NTP Time jump detected
  • Description: Jumped back 10 s, Jumped forward 11 s, oder größere Werte wie Jumped back 63075266 s

Das Webinterface zeigt nicht alle Rohdatenfelder der audit.log an. Es stellt nur die wichtigsten Informationen für Bediener dar.

Felder in der Tabelle System audit

Web-Feld Beschreibung Beispielwert
Date Lokales Kalenderdatum, an dem der Zeitsprung protokolliert wurde. 11/23/25
Time Lokale Uhrzeit des Ereignisses, abgeleitet aus dem Audit-Zeitstempel zum Zeitpunkt der Protokollierung. 12:35:11
Title Kurztext aus dem Feld title der Audit-Meldung. Er identifiziert die Quelle des Zeitsprungs (manuell, WWH, NTP). NTP Time jump detected
Description Detailtext aus dem Feld description der Audit-Meldung. Er gibt die Richtung der Änderung an und um wie viele Sekunden sich die Uhr verschoben hat. Jumped back 92556 s

Zuordnung zwischen Web-Ansicht und Audit-Rohdaten:

  • Title in der Tabelle ist der Wert von title="..." innerhalb der msg-Nutzlast des Audit-Datensatzes.
  • Description in der Tabelle ist der Wert von description="..." innerhalb der msg-Nutzlast.
  • Date und Time werden aus dem numerischen Audit-Zeitstempel abgeleitet, der nach audit( in der Rohlog-Zeile erscheint.

Die Web-Ansicht zeigt keine Felder wie pid, uid, exe oder res an. Um diese zu analysieren, müssen Sie die rohe audit.log-Datei oder Ihr SIEM verwenden, das die vollständige Meldung parsen kann.

Erläuterung des rohen audit.log-Eintrags

Die rohen audit.log-Datensätze für Zeitsprünge verwenden den benutzerdefinierten Typ CUSTOM_TIME_JUMP. Jeder Datensatz wird von auditd geschrieben, wenn einer der Zeitverwaltungsdienste einen erkannten Sprung meldet.

Beispielstruktur

Ein typischer Eintrag sieht so aus (Zeilenumbrüche nur zur besseren Lesbarkeit eingefügt):

type=CUSTOM_TIME_JUMP msg=audit(1763897711.524:66): pid=17180 uid=323 auid=4294967295 \
  ses=4294967295 msg='title="NTP Time jump detected" description="Jumped back 92556 s" \
  exe="/usr/sbin/chronyd" hostname=? addr=? terminal=? res=success'UID="chrony" AUID="unset"

Relevante Felder für CUSTOM_TIME_JUMP

Feldname Beschreibung Beispielwert
type Audit-Datensatztyp. Für diese Ereignisse ist er immer CUSTOM_TIME_JUMP. CUSTOM_TIME_JUMP
msg (Header) Standard-Audit-Header, der den Ereignis-Zeitstempel und eine Sequenz-ID enthält. audit(1763897711.524:66)
pid Prozess-ID des Dienstes, der den Zeitsprung gemeldet hat. 17180
uid Effektive Unix-Benutzer-ID dieses Prozesses. 323
auid Von auditd gesetzte Audit-Benutzer-ID. Für System-Daemons ist sie üblicherweise der Wert „unset". 4294967295
ses Audit-Sitzungs-ID. Für System-Daemons üblicherweise unset. 4294967295
msg (Nutzlast) Freitext-Nutzlast mit Schlüssel-Wert-Paaren wie title=, description=, exe=, hostname= usw. msg='title="..." description="..." ...'
title Zusammenfassung des Ereignisses. Gibt an, ob der Sprung manuell, WWH- oder NTP-basiert war. NTP Time jump detected
description Detaillierte Beschreibung mit Richtung und Größe des Sprungs in Sekunden. Jumped back 92556 s
exe Absoluter Pfad der ausführbaren Datei, die den Zeitsprung erkannt und gemeldet hat. /usr/sbin/chronyd
hostname Hostname-Feld von auditd für dieses Ereignis. Auf dem Gerät ist es nicht gefüllt und erscheint als ?. ?
addr Dem Ereignis zugeordnete Remote-Adresse. Für Zeitsprünge nicht verwendet und erscheint als ?. ?
terminal Terminal-Kennung. Für Daemon-generierte Ereignisse ist sie nicht gesetzt und erscheint als ?. ?
res Ergebnis-Flag von auditd. Für diese Ereignisse ist es immer auf success gesetzt, da die Erkennung selbst erfolgreich war. success
UID Textdarstellung von uid als Name, bereitgestellt von auditd. chrony
AUID Textdarstellung von auid. Für System-Daemons typischerweise unset. unset

Für die SIEM- oder SOC-Integration parsen Sie üblicherweise auf type=CUSTOM_TIME_JUMP und extrahieren dann title, description, exe sowie den numerischen Zeitstempel aus dem Header msg=audit(...). Nutzen Sie Größe und Richtung des Sprungs, um Warnungen für verdächtige manuelle Änderungen oder abnormale NTP- oder WWH-Korrekturen zu erstellen.

Wann das Ereignis erzeugt wird

Ein CUSTOM_TIME_JUMP-Ereignis wird immer dann erzeugt, wenn das System erkennt, dass die aktuelle Systemzeit um einen definierten Schwellenwert vor- oder zurückgesprungen ist.

Die folgenden Dienste können dieses Ereignis erzeugen, indem sie audit_log_user_message() aus libaudit aufrufen:

  • systemd für alle manuellen Zeitänderungen
  • chronyd (NTP-Client)
  • wwhd (WWH-Dienst)
  • wwhngd (WWH-Next-Generation-Dienst)

Erzeugungsregeln:

  • Manuelle Zeitänderungen über systemd werden immer protokolliert, unabhängig von der Zeitdifferenz.
  • chronyd protokolliert einen CUSTOM_TIME_JUMP, wenn die NTP-Synchronisation die Zeit um 10 Sekunden oder mehr ändert.
  • wwhd und wwhngd protokollieren einen CUSTOM_TIME_JUMP, wenn die WWH-Zeitanpassung die Zeit um 60 Sekunden oder mehr ändert.
  • Sowohl Vorwärts- als auch Rückwärtskorrekturen werden protokolliert, wobei Richtung und Anzahl der Sekunden im Feld description angezeigt werden.
  • Jeder beteiligte Dienst ist auf 4 CUSTOM_TIME_JUMP-Ereignisse pro Stunde begrenzt, um die Größe der audit.log zu schützen.

Verwendung im Security-Monitoring:

  • Untersuchen Sie jeden manuellen Zeitsprung auf produktiven Systemen.
  • Korrelieren Sie Zeitsprung-Ereignisse mit Konfigurationsänderungen, Software-Updates oder Sicherheitsvorfällen.
  • Prüfen Sie auf instabile NTP- oder WWH-Zeitquellen, wenn viele automatische Zeitsprünge auftreten.

Beispiel eines audit.log-Eintrags

(1) type=CUSTOM_TIME_JUMP msg=audit(1731567032.156:14): pid=6122 uid=0 auid=4294967295 ses=4294967295 msg='title="Manual Time jump detected" description="Jumped back 63075266 s" exe="/usr/sbin/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
(2) type=CUSTOM_TIME_JUMP msg=audit(1794639032.140:16): pid=6122 uid=0 auid=4294967295 ses=4294967295 msg='title="Manual Time jump detected" description="Jumped forward 63071999 s" exe="/usr/sbin/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
(3) type=CUSTOM_TIME_JUMP msg=audit(1763727845.000:18): pid=8340 uid=0 auid=4294967295 ses=4294967295 msg='title="WWH Time jump detected" description="Jumped back 30911257 s" exe="/usr/sbin/wwhd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
(4) type=CUSTOM_TIME_JUMP msg=audit(1763897711.524:66): pid=17180 uid=323 auid=4294967295 ses=4294967295 msg='title="NTP Time jump detected" description="Jumped back 92556 s" exe="/usr/sbin/chronyd" hostname=? addr=? terminal=? res=success'UID="chrony" AUID="unset"
(5) type=CUSTOM_TIME_JUMP msg=audit(1764156911.372:67): pid=22722 uid=323 auid=4294967295 ses=4294967295 msg='title="NTP Time jump detected" description="Jumped forward 166572 s" exe="/usr/sbin/chronyd" hostname=? addr=? terminal=? res=success'UID="chrony" AUID="unset"