Configuration Changes

Introduction
USYS_CONFIG events record every configuration change on ADS-TEC IRF1000/IRF3000 devices. The event payload contains the affected configuration table, the changed key, the new value, and the condition that selected the row. The device logs sensitive or deprecated values as XXX to avoid credential leakage and to indicate cleared legacy fields such as password_md5. Use these events to understand who changed what and when in OT environments. From a security view you should look for unexpected user insert or delete operations, password updates outside approved maintenance windows, bulk edits to the config table, or repeated failed changes. Investigate events where the acting user is unexpected, where changes originate from maintenance-disabled accounts, or where a configuration change is immediately followed by VPN or session creation from a new source address.
Webinterface View
Configuration changes are shown in the VIEW web interface on the Configuration audit page. Each row in the table represents one USYS_CONFIG operation and is displayed in device local time. For these events the Action Taken column always shows the normalized label changed-configuration.
| Field | Description | Example |
|---|---|---|
| Date | Event date in device local time | 10/14/25 |
| Time | Event time with seconds | 15:57:21 |
| Username | User that performed the change (mapped from terminal) |
admin |
| Action Taken | Normalized action label for configuration writes | changed-configuration |
| Result | Outcome of the operation | success |
| Table | Target configuration table | users |
| Operation | Operation type (insert, update, delete) |
update |
| Key | Column or configuration key that changed | password_md5 |
| Value | New value. Sensitive or legacy values are shown as XXX. |
XXX |
| Condition | Selector used to identify the affected row; empty for inserts | name=test |
Insert operations show an empty Condition and a Value list that contains the new row values, with sensitive fields masked as XXX.
Updates of password_* keys are masked in Value. In the example, the password_md5 key is a legacy column that is no longer used; it is cleared and therefore appears as XXX.
Explanation of the raw audit.log entry
Each USYS_CONFIG line in audit.log uses the standard Linux audit record format. ADS-TEC specific semantics are contained in the quoted msg payload. Auditd-internal fields such as pid, uid, auid, ses, UID, and AUID follow the normal auditd behaviour; see the official auditd documentation for details. The device does not populate hostname or addr for these events.
| Field | Description | Example |
|---|---|---|
| type | Audit record type | USYS_CONFIG |
| msg header | audit(epoch:serial) identifier of the record |
audit(1760450241.912:100) |
| pid | Process ID (auditd standard field) | 5465 |
| uid | Effective UID (auditd standard field) | 0 |
| auid | Login UID (auditd standard field) | 4294967295 |
| ses | Audit session ID (auditd standard field) | 4294967295 |
| msg payload | Quoted key-value list carrying change details | 'table="users" ...' |
| table | Target table of the configuration change | users |
| operation | Operation applied to the table (insert, update, delete) |
update |
| key | Column or configuration key whose value is changed | password_argon2 |
| value | New value written to the key. Secrets are logged as XXX. |
XXX |
| condition | WHERE-like selector that identifies the affected row; can be empty | name=test |
| exe | Executable that performs the change | /usr/sbin/systemd |
| hostname | Not populated for these events | ? |
| addr | Not populated for these events | ? |
| terminal | User name that initiated the change, as seen by the system | admin |
| res | Result of the operation (success or failure) |
success |
| UID | Human-readable form of uid |
root |
| AUID | Human-readable form of auid |
unset |
SIEM and SOC integration hints:
- Alert on
operation=insertoroperation=deleteontable=users, and onkey=password_*updates outside approved change windows. - Correlate the
terminalfield (shown as Username in the web interface) with authentication logs to confirm the real user identity. - Track bursts of updates on
table=configto detect bulk or scripted unauthorized changes. - Investigate sequences with
res=failurefollowed byres=successfor the same user or table, because they can indicate guessing or trial-and-error changes.
When the event is generated
A USYS_CONFIG audit event is generated whenever the device writes to its configuration database through any supported path: the VIEW web interface, JSON-RPC, or the Adsdp API. The change is executed by systemd / adsdpd using the ADS-TEC libnvram implementation. libnvram calls the libaudit function audit_log_user_message(), which writes the event into audit.log. The event does not distinguish which API path triggered the change; you have to use the recorded user in the terminal field (shown as Username in the web interface) together with other logs to attribute the action. Logged operations include insert, update, and delete on configuration tables such as config and users. The res field records whether the operation ended with success or failure.
Sample audit.log entry
(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"