Konfigurationsänderungen

Einführung
USYS_CONFIG-Ereignisse protokollieren jede Konfigurationsänderung auf ADS-TEC IRF1000/IRF3000-Geräten. Die Ereignis-Payload enthält die betroffene Konfigurationstabelle, den geänderten Schlüssel, den neuen Wert und die Bedingung, mit der die Zeile ausgewählt wurde. Das Gerät protokolliert sensible oder veraltete Werte als XXX, um ein Durchsickern von Anmeldedaten zu vermeiden und um gelöschte veraltete Felder wie password_md5 zu kennzeichnen. Nutzen Sie diese Ereignisse, um in OT-Umgebungen nachzuvollziehen, wer wann was geändert hat. Aus Sicherheitssicht sollten Sie auf unerwartete Insert- oder Delete-Operationen von Benutzern, Passwort-Aktualisierungen außerhalb genehmigter Wartungsfenster, Massenänderungen an der Tabelle config oder wiederholt fehlgeschlagene Änderungen achten. Untersuchen Sie Ereignisse, bei denen der handelnde Benutzer unerwartet ist, bei denen Änderungen von Konten stammen, für die Wartung deaktiviert ist, oder bei denen einer Konfigurationsänderung unmittelbar eine VPN- oder Sitzungserstellung von einer neuen Quelladresse folgt.
Webinterface-Ansicht
Konfigurationsänderungen werden im VIEW-Webinterface auf der Seite Konfigurations-Audit angezeigt. Jede Zeile in der Tabelle steht für eine USYS_CONFIG-Operation und wird in der lokalen Gerätezeit dargestellt. Für diese Ereignisse zeigt die Spalte Action Taken stets die normalisierte Bezeichnung changed-configuration.
| Feld | Beschreibung | Beispiel |
|---|---|---|
| Date | Ereignisdatum in lokaler Gerätezeit | 10/14/25 |
| Time | Ereigniszeit mit Sekunden | 15:57:21 |
| Username | Benutzer, der die Änderung durchgeführt hat (abgeleitet aus terminal) |
admin |
| Action Taken | Normalisierte Aktionsbezeichnung für Konfigurationsschreibvorgänge | changed-configuration |
| Result | Ergebnis der Operation | success |
| Table | Betroffene Konfigurationstabelle | users |
| Operation | Operationstyp (insert, update, delete) |
update |
| Key | Geänderte Spalte bzw. geänderter Konfigurationsschlüssel | password_md5 |
| Value | Neuer Wert. Sensible oder veraltete Werte werden als XXX angezeigt. |
XXX |
| Condition | Selektor zur Identifizierung der betroffenen Zeile; leer bei Inserts | name=test |
Insert-Operationen zeigen eine leere Condition und eine Value-Liste, die die Werte der neuen Zeile enthält, wobei sensible Felder als XXX maskiert sind.
Aktualisierungen von password_*-Schlüsseln werden in Value maskiert. Im Beispiel ist der Schlüssel password_md5 eine veraltete Spalte, die nicht mehr verwendet wird; sie wird gelöscht und erscheint daher als XXX.
Erläuterung des rohen audit.log-Eintrags
Jede USYS_CONFIG-Zeile in audit.log verwendet das Standard-Linux-Audit-Datensatzformat. ADS-TEC-spezifische Semantik ist in der zitierten msg-Payload enthalten. Auditd-interne Felder wie pid, uid, auid, ses, UID und AUID verhalten sich gemäß dem normalen auditd-Verhalten; Einzelheiten finden Sie in der offiziellen auditd-Dokumentation. Das Gerät befüllt hostname und addr für diese Ereignisse nicht.
| Feld | Beschreibung | Beispiel |
|---|---|---|
| type | Audit-Datensatztyp | USYS_CONFIG |
| msg header | audit(epoch:serial)-Kennung des Datensatzes |
audit(1760450241.912:100) |
| pid | Prozess-ID (auditd-Standardfeld) | 5465 |
| uid | Effektive UID (auditd-Standardfeld) | 0 |
| auid | Login-UID (auditd-Standardfeld) | 4294967295 |
| ses | Audit-Sitzungs-ID (auditd-Standardfeld) | 4294967295 |
| msg payload | Zitierte Schlüssel-Wert-Liste mit den Änderungsdetails | 'table="users" ...' |
| table | Betroffene Tabelle der Konfigurationsänderung | users |
| operation | Auf die Tabelle angewandte Operation (insert, update, delete) |
update |
| key | Spalte bzw. Konfigurationsschlüssel, dessen Wert geändert wird | password_argon2 |
| value | Neuer in den Schlüssel geschriebener Wert. Geheimnisse werden als XXX protokolliert. |
XXX |
| condition | WHERE-artiger Selektor, der die betroffene Zeile identifiziert; kann leer sein | name=test |
| exe | Ausführbare Datei, die die Änderung durchführt | /usr/sbin/systemd |
| hostname | Wird für diese Ereignisse nicht befüllt | ? |
| addr | Wird für diese Ereignisse nicht befüllt | ? |
| terminal | Benutzername, der die Änderung ausgelöst hat, wie vom System gesehen | admin |
| res | Ergebnis der Operation (success oder failure) |
success |
| UID | Menschenlesbare Form von uid |
root |
| AUID | Menschenlesbare Form von auid |
unset |
Hinweise zur SIEM- und SOC-Integration:
- Alarmieren Sie bei
operation=insertoderoperation=deleteauftable=userssowie beikey=password_*-Aktualisierungen außerhalb genehmigter Änderungsfenster. - Korrelieren Sie das Feld
terminal(im Webinterface als Username angezeigt) mit Authentifizierungsprotokollen, um die tatsächliche Benutzeridentität zu bestätigen. - Verfolgen Sie Häufungen von Aktualisierungen auf
table=config, um massenhafte oder skriptgesteuerte, nicht autorisierte Änderungen zu erkennen. - Untersuchen Sie Abfolgen mit
res=failuregefolgt vonres=successfür denselben Benutzer oder dieselbe Tabelle, da diese auf Ausprobieren oder Trial-and-Error-Änderungen hindeuten können.
Wann das Ereignis erzeugt wird
Ein USYS_CONFIG-Audit-Ereignis wird immer dann erzeugt, wenn das Gerät über einen der unterstützten Wege in seine Konfigurationsdatenbank schreibt: das VIEW-Webinterface, JSON-RPC oder die Adsdp-API. Die Änderung wird von systemd / adsdpd mithilfe der ADS-TEC-libnvram-Implementierung ausgeführt. libnvram ruft die libaudit-Funktion audit_log_user_message() auf, die das Ereignis in audit.log schreibt. Das Ereignis unterscheidet nicht, welcher API-Pfad die Änderung ausgelöst hat; Sie müssen den im Feld terminal aufgezeichneten Benutzer (im Webinterface als Username angezeigt) zusammen mit anderen Protokollen verwenden, um die Aktion zuzuordnen. Zu den protokollierten Operationen gehören insert, update und delete auf Konfigurationstabellen wie config und users. Das Feld res zeichnet auf, ob die Operation mit success oder failure endete.
Beispiel für einen audit.log-Eintrag
(1) type=USYS_CONFIG msg=audit(1760444592.644:86): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="config" operation="update" key="system_location" value="NT" condition="" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"
(2) type=USYS_CONFIG msg=audit(1760450240.952:98): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="users" operation="insert" key="" value="'test','XXX','XXX','1','XXX','1970-01-01','1970-01-01'" condition="" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"
(3) type=USYS_CONFIG msg=audit(1760450241.912:100): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="users" operation="update" key="password_argon2" value="XXX" condition="name=test" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"
(4) type=USYS_CONFIG msg=audit(1760450241.912:101): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="users" operation="update" key="password_md5" value="XXX" condition="name=test" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"
(5) type=USYS_CONFIG msg=audit(1760450241.912:102): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="users" operation="update" key="password_changetime" value="2025-10-14" condition="name=test" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"
(6) type=USYS_CONFIG msg=audit(1760450253.616:105): pid=5465 uid=0 auid=4294967295 ses=4294967295 msg='table="users" operation="delete" key="" value="" condition="name=test" exe="/usr/sbin/systemd" hostname=? addr=? terminal=admin res=success'UID="root" AUID="unset"