Product SiteDocumentation Site

6.15.5. Интерпретация журналов аудита JSON

Если включено ведение журнала аудита в формате JSON, сведения о различных событиях регистрируются в формате JSON. Каждое событие описывается определенным набором атрибутов, соответствующим его типу. Внешний слой атрибутов состоит из трёх элементов: метки времени, типа события и объекта данных (в примере добавлены переносы на новую строку и отступы; реальные записи всегда форматируются в виде одной строки):
{
"timestamp": 2024-05-29T14:32:52.509393+0200,
"type": одно из значений "Authentication", "Authorization", "dsdbChange",
        "dsdbTransaction", "passwordChange", "replicatedUpdate",
        "groupChange",
type: { data }
}

Примечание

Некоторые атрибуты могут присутствовать в записях, даже если они неприменимы. Например, если NETLOGON не используется (согласно serviceDescription), для параметра netlogonComputer будет установлено значение «null», для параметра netlogonNegotiateFlags будет установлено значение «0x00000000», другие параметры, оносящиеся к NETLOGON, будут иметь аналогичные пустые значения.

6.15.5.1. Общие атрибуты

В таблице Общие атрибуты приведен набор атрибутов, которые присутсвуют при регистрации любого события.

Таблица 6.16. Общие атрибуты

Атрибут
Значение
version
Номер версии формата JSON. Состоит из двух частей:
  • «major» — увеличивается, если поля меняют значение
  • «minor» — увеличивается, если добавляется новое поле
Изменения в перечне возможных значений обычно не приводят к изменению версии. Это распространяется на все данные, предоставляемые клиентами. Также это относится, например, к атрибуту passwordType, набор поддерживаемых форматов которого может меняться с течением времени без изменения версии в JSON.

6.15.5.2. Атрибуты событий аутентификации (Authentication)

В таблице Атрибуты событий аутентификации приведен набор атрибутов, который используется для регистрации событий аутентификации.

Таблица 6.17. Атрибуты событий аутентификации

Атрибут
Значение
authDescription
Тип аутентификации:
  • «simple bind/TLS», «simple bind» — простая привязка LDAP с каналом TLS или без него
  • «guest» — анонимный запрос SMB1
  • «bare-NTLM» — запрос SMB, использующий протокол NT1
  • «plaintext» — запрос SMB, в виде обычного текста
  • «interactive» — аналог физического входа на конкретной рабочей станции
  • «network» — проверка подлинности запроса/ответа по сети
  • «Unknown Auth Description», «Unknown Pre-authentication» — события KDC
  • «ServerAuthenticate» — запрос/ответ компьютера при входе в систему с использованием NETLOGON
  • «LDAP Modify» — смена пароля (не событие аутентификации, но регистрируется здесь, чтобы администратор не пропустил его)
becameAccount
Имя учетной записи, под которой выполнен вход (может не совпадать со значением, предоставленным клиентом)
becameDomain
Имя домена, в который произведён вход
becameSid
Идентификатор безопасности (SID) аутентифицированной учетной записи
clientAccount
Имя учётной записи, предоставленное клиентом
clientDomain
Имя домена, предоставленное клиентом
duration
Время (в микросекундах), в течение которого выполнялась аутентификация
eventId
Идентификатор события Windows, указывающий в общих чертах, что произошло
localAddress
Адрес сервера и используемый порт
logonId
Случайный 64-битный идентификатор, помогающий отслеживать события входа в систему на разных этапах
logonType
Тип входа в Windows. Для Samba один из:
  • 2 — интерактивный, то есть вход выполняется на текущем компьютере
  • 3 — сетевой, то есть вход выполняется по сети
  • 8 — сетевой с использованием нехешированных паролей, то есть вход выполняется по сети, при этом пароль передается в пакет подтверждения подлинности в нехешированной форме (NetworkCleartext)
mappedAccount
Имя учетной записи клиента, преобразованное в имя учетной записи AD
mappedDomain
Имя домена клиента, преобразованное в доменное имя AD
netlogonComputer
Имя компьютера, заявленное при аутентификации через NETLOGON RPC
netlogonNegotiateFlags
Флаги NETLOGON, согласуемые в процессе взаимодействия клиента и сервера
netlogonSecureChannelType
Тип безопасного канала, используемого для входа по протоколу NETLOGON
netlogonTrustAccount
Учетная запись, используемая для аутентификации по протоколу NETLOGON
netlogonTrustAccountSid
Идентификатор безопасности (SID) учётной записи, используемый для аутентификации по протоколу NETLOGON
passwordType
Алгоритм/протокол пароля (например, «HMAC-SHA256», «NTLMv2», «arcfour-hmac-md5»)
remoteAddress
Заявленный адрес (и порт) удаленного клиента
serviceDescription
Тип службы (например, «LDAP», «SMB2», «NETLOGON», «Kerberos KDC»)
status
Сообщение NT STATUS. Для успешной аутентификации это будет «NT_STATUS_OK». Неудачная аутентификация может иметь значение «NT_STATUS_OK», если аутентификация не удалась после регистрации этого сообщения, но обычно имеет код ошибки.
Некоторые типы сообщений при неудачной аутентификации:
  • NT_STATUS_ACCESS_DENIED — доступ запрещен по неустановленным причинам, (наиболее вероятная причинаvнеправильные учетные данные)
  • NT_STATUS_WRONG_PASSWORD — неверный пароль
  • NT_STATUS_NO_SUCH_USER — пользователь не существует
  • NT_STATUS_NO_SUCH_DOMAIN — домен не существует
  • NT_STATUS_ACCOUNT_RESTRICTION — учетная запись защищена или иным образом ограничена
  • NT_STATUS_DOWNGRADE_DETECTED — клиент, возможно, предпринимает какие-либо действия для использования некорректных способов аутентификации
  • NT_STATUS_INVALID_SERVER_STATE — сервер, возможно, используется не по назначению
  • NT_STATUS_INVALID_INFO_CLASS — сервер, возможно, используется не по назначению
  • NT_STATUS_INVALID_PARAMETER — клиент получил некорректные данные
  • NT_STATUS_NETWORK_CREDENTIAL_CONFLICT — в процессе входа произошли изменения (возможно, имеет место гонка в рамках изменения учетных данных, либо при согласовании данных шифрования возникла ошибка)
  • NT_STATUS_NOT_IMPLEMENTED — тип аутентификации не реализован в Samba
  • NT_STATUS_NOT_SUPPORTED — тип аутентификации, либо способ его использования со стороны клиента не поддерживается Samba
  • NT_STATUS_INVALID_SYSTEM_SERVICE — выбранная служба аутентификации недоступна
  • NT_STATUS_INTERNAL_ERROR — сервер не может завершить выполнение аутентификации по причине внутренней ошибки
  • NT_STATUS_NO_MEMORY — сервер не может завершить аутентификацию по причине нехватки памяти
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 3}
workstation
Заявленное имя клиентской рабочей станции
Пример записи об успешной попытке аутентификации:
{"timestamp": "2024-05-29T14:39:06.426725+0200", "type": "Authentication",
"Authentication": {"version": {"major": 1, "minor": 3}, "eventId": 4624, "logonId": "11424f6685e647f9",
"logonType": 3, "status": "NT_STATUS_OK", "localAddress": null, "remoteAddress": "ipv4:192.168.0.135:55134",
"serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication",
"clientDomain": null, "clientAccount": "ivanov\\@TEST@TEST.ALT", "workstation": null,
"becameAccount": "ivanov", "becameDomain": "TEST", "becameSid": "S-1-5-21-578923263-1107570656-1287136478-1103",
"mappedAccount": "ivanov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null,
"netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null,
"passwordType": "aes256-cts-hmac-sha1-96", "clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null, "duration": 5421}}

6.15.5.3. Атрибуты событий авторизации (Authorization)

В таблице Успешные события авторизации приведен набор атрибутов, который используется для регистрации успешных событий авторизации.

Таблица 6.18. Успешные события авторизации

Атрибут
Значение
account
Имя авторизуемой учетной записи
accountFlags
Битовое поле атрибутов учетной записи
authType
Строка, описывающая тип авторизации (например, «krb5», «NTLMSSP», «simple bind»)
domain
Имя домена
localAddress
Адрес сервера и используемый порт
logonServer
Сервер, на котором выполнена аутентификация
remoteAddress
Видимый адрес клиента
serviceDescription
Тип службы (например, «LDAP», «SMB2», «DCE/RPC»)
sessionId
Уникальный идентификатор сессии (GUID)
sid
Идентификатор безопасности (SID) авторизуемой учетной записи
transportProtection
Тип защиты, используемой в канале (например, «SMB», «TLS», «SEAL», «NONE»)
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 2}
Пример записи об успешной попытке авторизации:
{"timestamp": "2024-05-29T15:32:39.282334+0200", "type": "Authorization",
"Authorization": {"version": {"major": 1, "minor": 2}, "localAddress": "ipv4:127.0.0.1:389",
"remoteAddress": "ipv4:127.0.0.1:43350", "serviceDescription": "LDAP",
"authType": "simple bind", "domain": "NT AUTHORITY", "account": "ANONYMOUS LOGON",
"sid": "S-1-5-7", "sessionId": "5accdd86-4c6e-4bd2-8ab1-7e95f641ecf2",
"logonServer": "DC1", "transportProtection": "NONE", "accountFlags": "0x00000010",
"clientPolicyAccessCheck": null, "serverPolicyAccessCheck": null}}

6.15.5.4. Атрибуты событий, связанных с изменениями в базе данных (dsdbChange)

События dsdbChange регистрируются, когда клиент вызывает существенные изменения в базе данных AD (известной как DSDB внутри Samba). Некоторые конкретные изменения, а именно изменения пароля, группы и изменения репликации, регистрируются отдельно как события «passwordChange», «groupChange» и «replicationUpdate».
В таблице События dsdbChange приведен набор атрибутов, который используется для регистрации событий, связанных с внесением значимых изменений в базу данных службы каталогов.

Таблица 6.19. События dsdbChange

Атрибут
Значение
attributes
Список изменяемых атрибутов
dn
Уникальное составное имя (DN) изменяемого объекта
operation
Операция LDAP, соответствующая выполняемому действию по изменению данных:
  • «Modify»
  • «Add»
  • «Delete»
performedAsSystem
Признак системного или пользовательского действия:
  • «true» — действие выполняется Samba с использованием системной учетной записи
  • «false» — действие выполняется от имени пользователя
remoteAddress
Удаленный адрес пользователя, инициировавшего операцию
sessionId
Уникальный идентификатор (GUID) сессии аутентификации
status
Строка, указывающая на успешное завершение действия или невозможность его выполнения по той или иной причине; выводимая информация соответствует кодам ответа LDAP, которые фиксируются в атрибуте statusCode.
Примеры значений:
  • «Success»
  • «Operations error»
  • «Protocol error»
  • «Time limit exceeded»
  • «Size limit exceeded»
  • «Unsupported critical extension»
  • «No such attribute»
  • «Undefined attribute type»
  • «Constraint violation»
  • «Attribute or value exists»
  • «Invalid attribute syntax»
  • «No such object»
  • «Alias problem»
  • «Invalid DN syntax»
  • «Insufficient access rights»
  • «Unwilling to perform»
  • «Naming violation»
  • «Object class violation»
  • «Not allowed on non-leaf»
  • «Not allowed on RDN»
  • «Entry already exists»
Числовой код, соответствующий статусу в атрибуте status
В общем случае в качестве значения атрибута приводится код ответа LDAP в соответствии с RFC 4511
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 2}
Значение поля attributes может рассматриваться в качестве аналога описания изменения в формате LDIF.
Например, следующий JSON:
"dsdbChange": {
"operation": "Modify",
"dn": "@SAMBA_DSDB",
"attributes": {
"backupDate": {"actions": [
{"action": "add",
    "values": [
    {"value": "2024-05-29T15:32:39.282334+0200"}
    ]
  }
 ]
}}}
описывает изменение, выполненное этим LDIF:
dn: @SAMBA_DSDB
changetype: modify
add: backupDate
backupDate:  2024-05-29T15:32:39.282334+0200
Для секретных атрибутов вместо каких-либо значений указывается тег redacted: true.
Если значение очень длинное (> 1024 байт), оно будет усечено с добавлением «…» и флагом truncated: true, например:
"values": [
    {truncated: true,
                "value": "It was the best of times, it was the worst of times, it was the age…"
    }
]
Пример записи о внесении изменений в базу данных AD:
{"timestamp": "2024-05-29T09:52:14.813697+0200", "type": "dsdbChange",
"dsdbChange": {"version": {"major": 1, "minor": 0}, "statusCode": 0,
"status": "Success", "operation": "Modify",
"remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:38500", "performedAsSystem": false,
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"dn": "CN=Марков Кирилл,CN=Users,DC=test,DC=alt", "transactionId": "ce759566-8bf9-46ce-95a1-0d632232a220",
"sessionId": "48c760f6-6cdc-4fba-b16d-1689f2cfad33",
"attributes": {"unicodePwd": {"actions": [{"action": "replace", "redacted": true}]}}}}

6.15.5.5. Атрибуты событий, связанных с транзакциями (dsdbTransaction)

Транзакция связывает вместе несколько операций базы данных; либо все они происходят атомарно, либо ни одна из них не происходит. Если все операции в транзакции завершаются успешно, она фиксируется, а изменения остаются постоянными, но если одна из операций завершается неудачей, все предыдущие операции откатываются, даже если они завершились успешно и были зарегистрированы как события dsdbChange.
Каждая транзакция имеет идентифицирующий GUID; другие операции DSDB, являющиеся частью транзакции, будут включать этот GUID в атрибут transactionId.
В таблице Атрибуты событий, связанных с транзакциями приведен набор атрибутов, связанных с транзакциями (dsdbTransaction).

Таблица 6.20. Атрибуты событий, связанных с транзакциями

Атрибут
Значение
action
Текущий этап транзакции:
  • «begin»
  • «commit»
  • «rollback»
duration
Продолжительность транзакции в микросекундах (до момента записи этого поля)
transactionId
Уникальный идентификатор (GUID) транзакции
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 0}
Пример регистрации событий, связанных с транзакциями:
{"timestamp": "2024-05-29T20:41:36.895027+0200", "type": "dsdbTransaction",
"dsdbTransaction": {"version": {"major": 1, "minor": 0}, "action": "commit",
"transactionId": "a89149be-5c19-42c2-bf08-94ddc5b0eb78", "duration": 8819}}

{"timestamp": "2024-05-29T20:41:37.691707+0200", "type": "dsdbTransaction",
"dsdbTransaction": {"version": {"major": 1, "minor": 0}, "action": "commit",
"transactionId": "92a8db3a-94d4-4ac5-b929-b1e4344b12e3", "duration": 5697}}

6.15.5.6. Атрибуты событий, связанных с изменением пароля (passwordChange)

PasswordChange — это особый вид dsdbChange.
В таблице Атрибуты событий, связанных с изменением пароля приведен набор атрибутов, который используется для регистрации событий, связанных с изменением пароля (passwordChange).

Таблица 6.21. Атрибуты событий, связанных с изменением пароля

Атрибут
Значение
action
Тип операции:
  • «Change» — смена пароля
  • «Reset» — сброс пароля
dn
Уникальное составное имя (DN) пользователя, пароль которого изменяется или сбрасывается
eventId
Идентификатор события Windows:
  • 4723 соответствует событию смены пароля (Change)
  • 4724 соответствует событию сброса пароля (Reset)
remoteAddress
Удаленный адрес пользователя, выполняющего операцию
sessionId
Идентификатор сессии DSDB
status
Текст ошибки
statusCode
Код ошибки
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 1}
Пример регистрации события сброса пароля пользователя:
{"timestamp": "2024-05-29T15:28:18.876663+0200", "type": "passwordChange",
"passwordChange": {"version": {"major": 1, "minor": 1}, "eventId": 4724,
"statusCode": 0, "status": "Success", "remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:35534",
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"dn": "CN=Орлов Игорь,CN=Users,DC=test,DC=alt", "action": "Reset",
"transactionId": "d7456cd1-6f32-4575-b530-dc22a34bdc6a", "sessionId": "ce6866f6-43ea-4665-a896-0d10bd3194e1"}}

6.15.5.7. Атрибуты событий, связанных с изменением группы (groupChange)

Событие groupChange указывает на изменение DSDB, которое добавляет или удаляет пользователя из группы.
В таблице Атрибуты событий, связанных с изменением группы приведен набор атрибутов, который используется для регистрации событий, связанных с изменением группы (groupChange).

Таблица 6.22. Атрибуты событий, связанных с изменением группы

Атрибут
Значение
action
Тип операции:
  • «Removed» — удаление пользователя из группы
  • «Added» — добавление пользователя в группу
  • «PrimaryGroup» — смена основной группы
eventId
Идентификатор события Windows:
  • 4728 пользователь добавлен в глобальную группу безопасности
  • 4729 пользователь удален из глобальной группы безопасности
  • 4732 пользователь добавлен в локальную группу безопасности
  • 4733 пользователь удален из локальной группы безопасности
  • 4746 пользователь добавлен в локальную группу
  • 4747 пользователь удален из локальной группы
  • 4751 пользователь добавлен в глобальную группу
  • 4752 пользователь удален из глобальной группы
  • 4756 пользователь добавлен в универсальную группу безопасности
  • 4757 пользователь удален из универсальной группы безопасности
  • 4761 пользователь добавлен в универсальную группу
  • 4762 пользователь удален из универсальной группы
group
Уникальное составное имя (DN) группы
remoteAddress
Удаленный адрес пользователя, выполняющего операцию
sessionId
Идентификатор сессии DSDB
status
Текст ошибки
Числовой код, соответствующий статусу в атрибуте status
В общем случае в качестве значения атрибута приводится код ответа LDAP в соответствии с RFC 4511
transactionId
Уникальный идентификатор (GUID) транзакции, в рамках которой выполняется операция (если операция является частью транзакции)
user
Уникальное составное имя (DN) пользователя, членство в группе которого изменяется в рамках операции
userSid
Идентификатор безопасности (SID) пользователя, инициировавшего операцию
version
См. описание в таблице Общие атрибуты
Текущая версия:
{"major": 1, "minor": 1}
Пример регистрации события добавления пользователя в группу:
{"timestamp": "2024-05-29T15:20:19.634972+0200", "type": "groupChange",
"groupChange": {"version": {"major": 1, "minor": 1}, "eventId": 4728,
"statusCode": 0, "status": "Success", "action": "Added",
"remoteAddress": "ipv6:fd47:d11e:43c1:0:a00:27ff:fe9d:4de0:59778",
"userSid": "S-1-5-21-578923263-1107570656-1287136478-500",
"group": "CN=testgroup,CN=Users,DC=test,DC=alt", "transactionId": "28372270-093c-4bca-af45-ae3e93b71eda",
"sessionId": "9518687d-8ad1-4c2c-810c-8cc18c2943f7", "user": "CN=Марков Кирилл,CN=Users,DC=test,DC=alt"}}