Product SiteDocumentation Site

6.15.4. Настройка ведения журнала аудита

Samba поддерживает ведение журнала событий аутентификации и авторизации, а также ведение журнала изменений базы данных AD DC. Это позволяет регистрировать, например, неудачные запросы аутентификации или сбросы пароля.
Ведение журнала аудита является локальной настройкой, эту функцию необходимо включить на каждом сервере Samba. События регистрируются только на том сервере Samba, на котором произошло событие. Чтобы хранить все журналы на централизованном сервере, следует настроить централизованный сервер системных журналов, настроить Samba для регистрации в syslog и настроить syslog для отправки журналов на централизованный сервер.
Для мониторинга файлов журналов и выполнения определенных действий на основе результатов их анализа могут использоваться дополнительные утилиты.

Примечание

Samba генерирует некоторые журналы на узле в конфигурации файлового сервера и члена домена, но полная поддержка доступна только в AD DC.
Журнал аудита Samba поддерживает стандартный формат и формат JSON. Можно включить каждый формат по отдельности или оба вместе, используя разные классы отладки журнала (например, auth_audit для ведения записи в стандартном формате и auth_json_audit для ведения записи в формате JSON).
В зависимости от уровня журналирования Samba регистрирует разные события. Чтобы ограничить количество записей в журнале, можно увеличить уровень журналирования только для классов отладки, связанных с аудитом.

6.15.4.1. Регистрация событий аутентификации и авторизации

Samba поддерживает протоколирование успешных и неуспешных событий аутентификации, а также успешных событий авторизации.

Примечание

Аутентификация
Аутентификация происходит, когда Samba проверяет комбинацию имени пользователя и пароля.
Авторизация
Авторизация происходит при запуске сеанса.
Следующие примеры показывают, в каких случаях Samba регистрирует события аутентификации и авторизации:
  1. При входе пользователя в домен центр распространения ключей Kerberos (KDC), работающий на DC, фиксирует событие аутентификации. Если в домене работают несколько контроллеров, запрос аутентификации регистрируется только на контроллере, который обслуживает данный запрос.
  2. При подключении к общему ресурсу на участнике домена:
    • участник домена регистрирует событие авторизации;
    • при использовании аутентификации Kerberos центр распространения ключей (KDC) на контроллере домена Samba фиксирует событие аутентификации. В случае использования аутентификации Kerberos за нее отвечает KDC. Поэтому Samba на участнике домена AD не может регистрировать такое событие аутентификации;
      при использовании аутентификации через NT LAN Manager (NTLM) участник домена регистрирует событие аутентификации.

Примечание

При использовании NTLM всегда регистрируется пара событий — событие аутентификации и событие авторизации. Однако при использовании Kerberos регистрируется только одно событие на контроллере домена в момент выдачи билета TGT (Ticket Granting Ticket). После этого каждый раз при получении доступа к какой-либо службе регистрируется событие авторизации.
Для регистрации событий аутентификации и авторизации используются следующие классы отладки:
  • auth_audit — регистрация в стандартном формате;
  • auth_json_audit — регистрация в формате JSON.
Для классов auth_audit и auth_json_audit доступны следующие уровни журналирования (каждый последующий уровень включает все предшествующие ему):
  • 2 — неуспешные события аутентификации;
  • 3 — успешные события аутентификации;
  • 4 — успешные события авторизации;
  • 5 — успешные анонимные события аутентификации и авторизации.
Пример включения ведения журнала аудита аутентификации (установить уровень журнала по умолчанию — 1, включить регистрацию неудачных и успешных запросов аутентификации — 3):
  1. Установить в секции [global] файла /etc/samba/smb.conf:
    log level = 1 auth_audit:3 auth_json_audit:3
  2. Перезапустить службу Samba.
Пример записей о неуспешной и успешной попытках аутентификации пользователя с использованием стандартного формата журнала:
[2024/05/29 14:32:52.509247,  2] ../../auth/auth_log.c:858(log_authentication_event_human_readable)
Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[ivanov\\@TEST@TEST.ALT] at [Wed, 29 May 2024 14:32:52.509236 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.135:51947] mapped to [TEST]\[ivanov]. local host [NULL]

[2024/05/29 14:39:06.426556,  3] ../../auth/auth_log.c:858(log_authentication_event_human_readable)
Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[ivanov\\@TEST@TEST.ALT] at [Wed, 29 May 2024 14:39:06.426540 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.135:55134] became [TEST]\[ivanov] [S-1-5-21-578923263-1107570656-1287136478-1103]. local host [NULL]
Пример записей о неуспешной и успешной попытках аутентификации пользователя с использованием формата JSON:
{"timestamp": "2024-05-29T14:32:52.509393+0200", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 3}, "eventId": 4625, "logonId": "5bd240f7cc4de1b5", "logonType": 3, "status": "NT_STATUS_WRONG_PASSWORD", "localAddress": null, "remoteAddress": "ipv4:192.168.0.135:51947", "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": 3129}}

{"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.4.2. Регистрация изменений в базе данных

Для регистрации изменений в базе данных контроллера домена Samba (sam.ldb) используются следующие классы отладки:
  • dsdb_audit — регистрация в стандартном формате;
  • dsdb_json_audit — регистрация в формате JSON.
Для регистрации изменений в составе групп используются следующие классы отладки:
  • dsdb_group_audit — регистрация в стандартном формате;
  • dsdb_group_json_audit — регистрация в формате JSON.
Для классов dsdb_audit, dsdb_json_audit, dsdb_group_audit и dsdb_group_json_audit доступны следующие уровни журналирования:
  • 5 — внесение изменений в базу данных;
  • 5 — регистрация изменений, полученных через механизм репликации с другого контроллера домена.
События изменения и сброса паролей регистрируются в рамках следующих классов отладки:
  • dsdb_password_audit — регистрация в стандартном формате;
  • dsdb_password_json_audit — регистрация в формате JSON.

Примечание

Каждое изменение пароля также регистрируется как событие аутентификации через классы отладки auth_audit и auth_audit_json.
Для классов dsdb_password_audit и dsdb_password_json_audit доступны следующие уровни журналирования:
  • 5 — успешные события изменения и сброса пароля.
Для регистрации не успешных транзакций, завершающихся откатом, и событий подготовки фиксации данных (prepare commit) используются следующие классы отладки:
  • dsdb_transaction_audit — регистрация в стандартном формате;
  • dsdb_transaction_json_audit — регистрация в формате JSON.
Для классов dsdb_transaction_audit и dsdb_transaction_json_audit доступны следующие уровни журналирования:
  • 5 — неуспешная транзакция (откат);
  • 10 — успешная транзакция (фиксация).
В Samba возможны откаты транзакций. Они редко отражают что-либо помимо неуспешного завершения отдельной операции (например, в результате попытки создания записи, которая конфликтует с существующими). Записи о транзакции формируются и фиксируются в системных журналах до ее завершения. Такое журналирование информации о транзакциях позволяет выявлять операции с паролями и операции по внесению изменении в sam.ldb, которые закончились откатом и фактически не были выполнены.
Пример включения ведения журнала аудита базы данных DC AD (установить уровень журнала по умолчанию — 1, включить ведение журнала изменений базы данных в формате JSON):
  1. Установить в секции [global] файла /etc/samba/smb.conf:
    log level = 1 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5 dsdb_transaction_json_audit:5
    
  2. Перезапустить службу Samba.