Samba логи

Приведу пример настройки детальных логов Samba, в логах может сохранятся IP адрес клиента, его действие, hostname, а также много другой отладочной информации.

Чтобы писались более детальные логи, откроем файл конфигурации samba в текстовом редакторе:

 sudo nano /etc/samba/smb.conf 

И например добавим в секции «global»:

 log level = 2
max log size = 20480 

log level 1 самый низкий, 0 — для отключения и является по умолчанию, max log size определяет максимальный размер файла логов в килобайтах, я указал 20мб.

 sudo smbcontrol all reload-config 

Или перезапустим samba:

 sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
sudo systemctl restart nmbd
sudo systemctl restart smbd 

Можно указывать разный уровень для разных классов отладки, например:

 log level = 1 auth:10 winbind:5 passdb:4 

Классы отладки могут быть: all, tdb, printdrivers, lanman, smb, rpc_parse, rpc_srv, rpc_cli, passdb, sam, auth, winbind, vfs, idmap, quota, acls, locking, msdfs, dmapi, registry.

Для ведения логов активности пользователей более удобно указать vfs:

 log level = 0 vfs:2
max log size = 20480 

И допустим ранее была настроена шара:

 [test]
path = /srv/samba/test
comment = test
browseable = yes
writable = yes
read only = no 

Теперь в конце ее настроек добавим параметры ведения логов, в итоге получится так:

 [test]
path = /srv/samba/test
comment = test
browseable = yes
writable = yes
read only = no
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:failure = none
full_audit:success = mkdir rmdir open read pread write pwrite sendfile rename unlink lock
full_audit:facility = local5
full_audit:priority = debug 

После этого логи будут писаться в /var/log/syslog, чтобы писались в отдельный файл, добавим в конфигурации syslog:

 local5.debug -/var/log/samba/audit.log 

I will give an example of setting up detailed logs of Samba, the logs can save the client’s IP address, its action, the hostname, as well as many other debugging information.

To write more detailed logs, open the samba configuration file in a text editor:

 sudo nano /etc/samba/smb.conf 

And for example, add in the section “global”:

 log level = 2
max log size = 20480 

log level 1 is the lowest, 0 is for shutdown and is the default, max log size determines the maximum size of the log file in kilobytes, I specified 20mb.

Apply the changes:

 sudo smbcontrol all reload-config 

Or restart samba:

 sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
sudo systemctl restart nmbd
sudo systemctl restart smbd 

You can specify a different level for different debugging classes, for example:

 log level = 1 auth:10 winbind:5 passdb:4 

Debug classes can be: all, tdb, printdrivers, lanman, smb, rpc_parse, rpc_srv, rpc_cli, passdb, sam, auth, winbind, vfs, idmap, quota, acls, locking, msdfs, dmapi, registry.

 логарифмический уровень = 0 vfs:2
максимальный размер журнала = 20480 

И допустим ранее был настроен каталог:

 [тест]
путь = /srv/самба/тест
комментарий = тест
просмотр = да
запись = да
только чтение = нет 

Теперь в конце его настроек добавим опции логирования, в итоге получится вот так:

 [тест]
путь = /srv/самба/тест
комментарий = тест
просмотр = да
запись = да
только чтение = нет
объекты vfs = полный_аудит
полный_аудит: префикс = %u|%I|%m|%S
полный_аудит: сбой = нет
full_audit:success = mkdir rmdir open read pread write pwrite sendfile rename unlink lock
полный_аудит: объект = местный5
полный_аудит: приоритет = отладка 

После этого логи будут записываться в /var/log/syslog, для записи в отдельный файл добавить в конфигурации syslog:

 local5.debug -/var/log/samba/audit.log 

См. также мою статью:
Установка и настройка Samba

Установка в Linux Ubuntu/Debian:

Создание резервной копии конфигурации файла на всякий случай:

 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup 

Открытие конфига для скачивания, например в редакторе nano:

 sudo nano /etc/samba/smb.conf 

Коротко опишу параметры стандартного конфига:

 [все страны]
# нетбиос имя
netbios имя = ИМЯ
# Имя рабочей группы
рабочая группа = РАБОЧАЯ ГРУППА
# Описание сервера
строка сервера = сервер %h (Samba, Ubuntu)
# Включение функции WINS (Windows Internet Name Service) сервера. W INS сервер регистрирует связки NETBIOS-имени с IP-адресом.
# wins support = no
# Адрес другого существующего в сети WINS сервера.
; wins server = w.x.y.z
# Делать ли запрос к DNS серверу если WINS сервер не смог разрешить NetBIOS имя dns proxy = no
# Параметр определяет в каком порядке использовать сервисы имен для получения IP адреса (lmhosts - искать IP в файле lmhosts самбы, host - /etc/hosts, wins - через wins сервер указанный в "wins server", bcast - послать широковещательный запрос на все сетевые интерфейсы)
; name resolve order = lmhosts host wins bcast
# Определяет какие будут использоваться интерфейсы
; interfaces = 127.0.0.0/8 eth0
# Указывает что нужно строго использовать только интерфейсы указанные в "interfaces"
; bind interfaces only = yes
# Адрес размещения файла логов
log file = /var/log/samba/log.%m
# Более детальный уровень логов
log level = 3
debug timestamp = yes
# Максимальный размер файла в килобайтах, если размер превышен, то создается новый, а к существующему добавляется расширение .old, "0" - без ограничения по размеру) max log size = 1000
# Записывать ли логи в системный журнал syslog
# syslog only = no
# Уровень логов которые будут писаться в системный журнал syslog (0 - LOG_ERR, 1 - LOG_WARNING, 2 - LOG_NOTICE, 3 - LOG_INFO) syslog = 0
# Доступ к ресурсам осуществляется по: user - имени пользователя и паролю, share - паролю, server - переадресация проверки на другой сервер (если не получится будет использоваться "security = user", domain - имитация работы сервера домена Windows
# security = user
# Шифрование передающихся между клиентом и сервером паролей encrypt passwords = true
# Механизм хранения информации о пользователях (smbpasswd, tdbsam, ldapsam) passdb backend = tdbsam
# Использование PAM для аутентификации obey pam restrictions = yes
# Cинхронизация пароля UNIX с паролем SMB при изменении зашифрованного пароля SMB в файле smbpasswd unix password sync = yes
# Программа которая будет использоваться для смены паролей UNIX passwd program = /usr/bin/passwd %u
# Строка управляющая обменом “chat” между демоном smbd и программой смены паролей passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# Использование PAM для смены паролей UNIX вместо указанной программы в "passwd program" pam password change = yes
# (Never - запросы с неправильным паролем отклоняются; Bad User - запросы с неправильным паролем отклоняются, но если имя пользователя существует, будет произведена попытка входа гостем; Bad Password - запросы с неправильным паролем обрабатываются как попытка зайти гостем; Bad Uid - в режиме security = domain/ads когда пользователь прошел аутентификацию, но не имеет учетной записи UNIX будет считаться гостем. map to guest = bad user
########## Domains ###########
# Поддержка службы входа в сеть для Windows 9X
; domain logons = yes
# Путь к директории где будут хранится пользовательские профили (Application Data, Рабочий стол, NTuser.dat, .)
; logon path = \\%N\profiles\%U
# logon path = \\%N\%U\profile
# Путь присоединения домашней директории для рабочих станций Windows NT
; logon drive = H:
# Домашняя директория при авторизации клиента
# logon home = \\%N\%U
# Файл сценария, который будет скачан и выполнен на клиентском компьютере при входе в систему.
; logon script = logon.cmd
# Путь к сценарию, который будет выполнен демоном smbd от пользователя root при обстоятельствах описанных ниже
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# Путь к сценарию который запускается при добавлении учетной записи компьютера в домен SAMBA
; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# Путь к сценарию который запускается от root пользователя smbd при создании новай группы
; add group script = /usr/sbin/addgroup --force-badname %g
########## Printing ##########
# Отображение всех принтеров
# load printers = yes
# Определяет какая статусная информация о принтере будет интерпретироваться в системе.
; printing = bsd
# Переопределение вкомпилированного printcap name
; printcap name = /etc/printcap
; printing = cups
; printcap name = cups
############ Misc ############
# Присоединение и обработка другого конфигурационного файла
; include = /home/samba/etc/smb.conf.%m
# SO_RCVBUF=8192 SO_SNDBUF=8192
# Параметры сокета для обслуживания клиентов
# socket options = TCP_NODELAY
# Команда выполняющаяся при получении сервером сообщения WinPopup
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# Сопоставление списка просмотра сети. Мастер браузеры в изолированных подсетях передадут свои локальные списки просмотра и запросят законченную копию списка для всей глобальной сети.
# domain master = auto
# Диапазон пользовательских идентификаторов для сопоставления SIDов UNIX пользователей SIDам NT пользователей.
; idmap uid = 10000-20000
# Диапазон групповых идентификаторов для сопоставления SIDов UNIX групп SIDам NT групп
; idmap gid = 10000-20000
; template shell = /bin/bash
; winbind enum groups = yes
; winbind enum users = yes
; usershare max shares = 100
# Разрешить не аутентифицированным пользователям получить доступ к общим ресурсам пользователей usershare allow guests = yes
#======================= Share Definitions =======================
;[homes]
# комментарий к папке
; comment = Home Directories
# Общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра
; browseable = no
# Запрет на изменение и создание файлов
; read only = yes
# Права доступа для создаваемого файла
; create mask = 0700
# Права доступа для создаваемой директории
; directory mask = 0700
# Список пользователей, которым разрешен доступ
; valid users = %S
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
# Не требовать для подключения пароль
; guest ok = yes
; read only = yes
;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700
[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700
[print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no
; write list = root, @lpadmin
;[cdrom]
; comment = Samba server's CD-ROM
; read only = yes
; locking = no
; path = /cdrom
; guest ok = yes
# Команда запускаемая при подключении к сервису
; preexec = /bin/mount /cdrom
# Команда запускаемая при отключении от сервиса
; postexec = /bin/umount /cdrom
# Разрешает только указанными IP адресам присоединяться к Samba-серверу, по умолчанию всем разрешено, можно не ограничивать - закомментировать строку, а ограничить фаерволом, например iptables
hosts allow = 172.16. 192.168.1. 192.168.0. 127. 10. 

Приведу пример конфигурации шары пользователя «ixnfo»:

 [ixnfo]
path = /srv/samba/ixnfo
comment = ixnfo
browseable = yes
writable = yes
read only = no
create mask = 0770
directory mask = 0770 

Проверить корректность параметров конфигурации можно командой:

Читайте также:  Быстрые и простые шаги: инициализация репозитория Gitlab

Узнать версию samba можно так:

Пример создания директории для шары:

 sudo mkdir -p /srv/samba/anonymous_share
sudo chown nobody.nogroup /srv/samba/anonymous_share/ 

Просмотр привилегий на файлы и папки:

Добавление пользователя «ixnfo» в Ubuntu:

Добавление samba пользователя (пользователь с таким именем уже должен быть создан в системе командой выше):

Создание файла пользователей:

 sudo touch /etc/samba/smbusers
sudo nano /etc/samba/smbusers
ixnfo = Admin 

Пример указания привилегий:

 sudo chown ixnfo:ixnfo -R /srv/samba/ixnfo/
sudo chmod -R 0770 /srv/samba/ixnfo/ 

 sudo smbcontrol all reload-config 

Или перезагрузим samba:

 sudo service samba restart
sudo restart smbd
sudo restart nmbd 

Или так перезагрузим:

 sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
sudo systemctl restart smbd
sudo systemctl restart nmbd 

Пример просмотра сетевой информации компьютера в Windows:

Пример команды подключения сетевого диска в Windows (можно добавить в автозагрузку bat файлом)

 net use K: \\192.168.1.5\dir /persistent:no /user:USER PASSWORD 

Решение ошибок:


Проблемы с автозапуском Samba в Linux


WARNING: The «syslog» option is deprecated


System error 1231 has occurred


«Unable to connect to CUPS server» и «failed to retrieve printer list»


«rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)»

Для логирования/аудита действий пользователей на файловом сервере предусмотрен модуль VFS (Virtual File System) —  full_audit
, рассмотрим его применение.

 # ПАРАМЕНТЫ ЛОГИРОВАНИЯ log level = 0 vfs:1
# ПОДКЛЮЧЕНИЕ МОДУЛЕЙ VFS (Virtual File System) vfs objects = full_audit
# АУДИТ СЕТЕВЫХ ПАПОК full_audit:prefix = %S|%u|%I full_audit:success = mkdir rmdir pwrite rename unlink full_audit:failure = none full_audit:facility = local5 full_audit:priority = notice 

Пояснения по параметрам full_audit:

Если уже используется какой-то модуль VFS, то перечисляем все объекты через пробел, например:

vfs object = acl_xattr full_audit

Если необходимо вести логирование пользовательский действий по какой то определенной общей папке, то тогда выше описанные параметры необходимо прописывать в секцию описания общей папки.

После изменения конфигурации, перезапускаем samba, командой:

 /etc/init.d/smbd restart 

По-умолчанию логирование записывается в файлы rsyslog
и messages 
и выглядит это следующим образом:

 Jan 17 16:14:45 datastore1 smbd_audit: DISK_Z|user1|10.10.16.31|pwrite|ok|test.doc
Jan 17 16:14:04 datastore1 smbd_audit: DISK_Z|user1|10.10.10.21|unlink|ok|test.doc
Jan 17 16:14:04 datastore1 smbd_audit: DISK_Z|user1|10.10.10.21|mkdir|ok|Новая папка
Jan 17 16:14:04 datastore1 smbd_audit: DISK_Z|user1|10.10.10.21|rename|ok|./Новая папка|./Новая папка 2
Jan 17 16:14:04 datastore1 smbd_audit: DISK_Z|user1|10.10.10.21|rmdir|ok|Новая папка 2 

Для удобства настроим запись логов в отдельный файл и настроим для этого файла ротацию. Сперва запретим логирование в файлы rsyslog и messages, в файле конфигурации rsyslog ( /etc/rsyslog.conf
) приводим к виду строки:

 *.*;local5,auth,authpriv.none -/var/log/syslog
*.=info;*.=notice;*.=warn;\
local5,auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages 

Теперь укажем в какой файл необходимо записывать события. В конец файла добавляем следующую строку:

 local5.notice -/var/log/samba/audit_shares.log 

ЗАМЕТКА. Знак минуса перед указанием файла означает, что после каждой записи в файл не будет выполняться операция sync, а данные некоторое время будут находится в оперативной памяти в дисковом буфере. При большой интенсивности потока записей это уменьшает нагрузку на дисковую систему.

Для применения изменений перезапускаем rsyslog
, командой:

 /etc/init.d/rsyslog restart 

Последний штрих, это настройка ротации для лог-файла. В файл ( /etc/logrotate.d/samba
) добавляем строки:

 /var/log/samba/audit_shares.log { daily rotate 60 missingok compress notifempty olddir /var/log/samba/audit_old
} 

ПОЯСНЕНИЯ. Используемые параметры указывают что ротацию необходимо делать каждый день ( daily
), хранить файлы не более 60 дней ( rotate
), не выдавать ошибок в случае если лог-файла не существует ( missingok
), не обрабатывать пустые файлы ( notifempty
) и перемещать старые лог-файлы в отдельную папку ( olddir
)

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Журналирование в Samba

Файлы журналов службы Samba находятся в каталоге /var/log/samba/
.



6.1.1. Уровни журналирования



6.1.1.1. Установка уровня журналирования в файле smb.conf

Установить уровень журналирования для Samba можно, используя параметр log level

в файле /etc/samba/smb.conf
. Для разных классов отладки можно указывать разные уровни журналирования и отдельные файлы журналов.

  • установить уровень журнала для всех классов отладки на 3:

     log level = 3 

  • установить общий уровень журнала на 3 и для классов passdb и auth на 5:

     log level = 3 passdb:5 auth:5 

  • установить уровень журнала для класса winbind на 1 и писать логи в файл /var/log/winbind.log
    :

     log level = 3 winbind:1@/var/log/winbind.log 

Получить дополнительную информацию и список классов отладки можно на справочной странице smb.conf

( man smb.conf
).



6.1.1.2. Установка уровня журналирования при выполнении команд

Команды Samba используют уровень журналирования, установленный в параметре log level

в файле /etc/samba/smb.conf
. Это значение можно переопределить, используя опцию -d
для всех команд Samba. Например:

 $ net usershare add Share2 /tmp/share2 -d 5 



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

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

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

Описание параметров logging

, syslog

и syslog only

можно посмотреть на справочной странице smb.conf

( man smb.conf
).

Samba генерирует некоторые журналы на узле в конфигурации файлового сервера и члена домена, но полная поддержка доступна только в AD DC.

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

Аутентификация происходит, когда Samba проверяет комбинацию имени пользователя и пароля.

Авторизация происходит при запуске сеанса.

Журнал аудита Samba поддерживает стандартный формат и формат JSON. Можно включить каждый формат по отдельности или оба вместе, используя разные классы отладки журнала.

В зависимости от уровня журналирования Samba регистрирует разные события. Чтобы ограничить количество записей в журнале, можно увеличить уровень журналирования только для классов отладки, связанных с аудитом. Для управления уровнем журнала аудита можно использовать следующие классы отладки:

  • auth_audit
    — стандартный формат журнала;

  • auth_json_audit
    — формат JSON.

Пример включения ведения журнала аудита аутентификации (установить уровень журнала по умолчанию — 1, включить регистрацию неудачных и успешных запросов аутентификации — 3):

Читайте также:  been hosting - Перевод на русский - примеры английский | Reverso Context

  1.  log level = 1 auth_audit:3 auth_json_audit:3 

  2. Перезапустить службу Samba.

Пример записей о неуспешной и успешной попытках аутентификации пользователя на контроллере домена Samba с использованием стандартного формата журнала:

 [2023/04/13 11:51:20.341735, 2] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:51:20.341726 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.125:49382] mapped to [TEST]\[petrov]. local host [NULL]
[2023/04/13 11:51:32.859080, 3] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:51:32.859051 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.125:52630] became [TEST]\[petrov] [S-1-5-21-1723588197-2340999690-1379671080-1106]. local host [NULL] 

Пример записей о неуспешной и успешной попытках аутентификации пользователя на контроллере домена Samba с использованием формата JSON:

 [2023/04/13 11:46:08.614095, 2] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:46:08.614055 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.125:42738] mapped to [TEST]\[petrov]. local host [NULL] {"timestamp": "2023-04-13T11:46:08.614338+0200", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 2}, "eventId": 4625, "logonId": "10c3af2c9c39fef4", "logonType": 3, "status": "NT_STATUS_WRONG_PASSWORD", "localAddress": null, "remoteAddress": "ipv4:192.168.0.125:42738", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "petrov\\@TEST. ALT@TEST. ALT", "workstation": null, "becameAccount": "petrov", "becameDomain": "TEST", "becameSid": "S-1-5-21-1723588197-2340999690-1379671080-1106", "mappedAccount": "petrov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "duration": 6096}}
[2023/04/13 11:48:45.902778, 3] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:48:45.902759 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.125:52840] became [TEST]\[petrov] [S-1-5-21-1723588197-2340999690-1379671080-1106]. local host [NULL] {"timestamp": "2023-04-13T11:48:45.902942+0200", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 2}, "eventId": 4624, "logonId": "71c99af1de51eaf6", "logonType": 3, "status": "NT_STATUS_OK", "localAddress": null, "remoteAddress": "ipv4:192.168.0.125:52840", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "petrov\\@TEST. ALT@TEST. ALT", "workstation": null, "becameAccount": "petrov", "becameDomain": "TEST", "becameSid": "S-1-5-21-1723588197-2340999690-1379671080-1106", "mappedAccount": "petrov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "duration": 9023}} 

Пример включения ведения журнала аудита базы данных DC AD (установить уровень журнала по умолчанию — 1, включить ведение журнала изменений базы данных в формате JSON):

  1.  log level = 1 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5 dsdb_transaction_json_audit:5 

  2. Перезапустить службу Samba.



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

Если включено ведение журнала аудита в формате JSON, сведения о различных событиях регистрируются в формате JSON. Каждое событие имеет множество атрибутов. Внешний слой атрибутов состоит из трёх элементов: метки времени, типа события и объекта данных:

 { "timestamp": 2023-04-13T11:48:45.902942+0200, "type": одно из значений "Authentication", "Authorization", "dsdbChange", "dsdbTransaction", "passwordChange", "replicatedUpdate", "groupChange", type: { data }
} 

Некоторые атрибуты по-прежнему будут присутствовать в журнале, даже если они неприменимы. Например, если NETLOGON не используется (согласно serviceDescription

), для параметра netlogonComputer

будет установлено значение «null», для параметра netlogonNegotiateFlags

будет установлено значение «0x00000000», а другие поля сетевого входа будут иметь аналогичные пустые значения.

Таблица 6.1. Аутентификация

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

Остальные таблицы: dsdbChange? (https://wiki.samba.org/index.php/Interpreting_JSON_Audit_Logs)

Журналирование в Samba

Файлы журналов службы Samba находятся в каталоге /var/log/samba/
.



6.1.1. Уровни журналирования



6.1.1.1. Установка уровня журналирования в файле smb.conf

Установить уровень журналирования для Samba можно, используя параметр log level

в файле /etc/samba/smb.conf
. Для разных классов отладки можно указывать разные уровни журналирования и отдельные файлы журналов.

  • установить уровень журнала для всех классов отладки на 3:

     log level = 3 

  • установить общий уровень журнала на 3 и для классов passdb и auth на 5:

     log level = 3 passdb:5 auth:5 

  • установить уровень журнала для класса winbind на 1 и писать логи в файл /var/log/winbind.log
    :

     log level = 3 winbind:1@/var/log/winbind.log 

Получить дополнительную информацию и список классов отладки можно на справочной странице smb.conf

( man smb.conf
).



6.1.1.2. Установка уровня журналирования при выполнении команд

Команды Samba используют уровень журналирования, установленный в параметре log level

в файле /etc/samba/smb.conf
. Это значение можно переопределить, используя опцию -d
для всех команд Samba. Например:

 $ net usershare add Share2 /tmp/share2 -d 5 



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

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

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

Описание параметров logging

, syslog

и syslog only

можно посмотреть на справочной странице smb.conf

( man smb.conf
).

Samba генерирует некоторые журналы на узле в конфигурации файлового сервера и члена домена, но полная поддержка доступна только в AD DC.

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

Аутентификация происходит, когда Samba проверяет комбинацию имени пользователя и пароля.

Авторизация происходит при запуске сеанса.

Журнал аудита Samba поддерживает стандартный формат и формат JSON. Можно включить каждый формат по отдельности или оба вместе, используя разные классы отладки журнала.

В зависимости от уровня журналирования Samba регистрирует разные события. Чтобы ограничить количество записей в журнале, можно увеличить уровень журналирования только для классов отладки, связанных с аудитом. Для управления уровнем журнала аудита можно использовать следующие классы отладки:

  • auth_audit
    — стандартный формат журнала;

  • auth_json_audit
    — формат JSON.

Пример включения ведения журнала аудита аутентификации (установить уровень журнала по умолчанию — 1, включить регистрацию неудачных и успешных запросов аутентификации — 3):

  1.  log level = 1 auth_audit:3 auth_json_audit:3 

  2. Перезапустить службу Samba.

Пример записей о неуспешной и успешной попытках аутентификации пользователя на контроллере домена Samba с использованием стандартного формата журнала:

 [2023/04/13 11:51:20.341735, 2] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:51:20.341726 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.125:49382] mapped to [TEST]\[petrov]. local host [NULL]
[2023/04/13 11:51:32.859080, 3] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:51:32.859051 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.125:52630] became [TEST]\[petrov] [S-1-5-21-1723588197-2340999690-1379671080-1106]. local host [NULL] 

Пример записей о неуспешной и успешной попытках аутентификации пользователя на контроллере домена Samba с использованием формата JSON:

 [2023/04/13 11:46:08.614095, 2] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:46:08.614055 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_WRONG_PASSWORD] workstation [(null)] remote host [ipv4:192.168.0.125:42738] mapped to [TEST]\[petrov]. local host [NULL] {"timestamp": "2023-04-13T11:46:08.614338+0200", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 2}, "eventId": 4625, "logonId": "10c3af2c9c39fef4", "logonType": 3, "status": "NT_STATUS_WRONG_PASSWORD", "localAddress": null, "remoteAddress": "ipv4:192.168.0.125:42738", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "petrov\\@TEST. ALT@TEST. ALT", "workstation": null, "becameAccount": "petrov", "becameDomain": "TEST", "becameSid": "S-1-5-21-1723588197-2340999690-1379671080-1106", "mappedAccount": "petrov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "duration": 6096}}
[2023/04/13 11:48:45.902778, 3] ././auth/auth_log.c:647(log_authentication_event_human_readable) Auth: [Kerberos KDC,ENC-TS Pre-authentication] user [(null)]\[petrov\\@TEST. ALT@TEST. ALT] at [Thu, 13 Apr 2023 11:48:45.902759 EET] with [aes256-cts-hmac-sha1-96] status [NT_STATUS_OK] workstation [(null)] remote host [ipv4:192.168.0.125:52840] became [TEST]\[petrov] [S-1-5-21-1723588197-2340999690-1379671080-1106]. local host [NULL] {"timestamp": "2023-04-13T11:48:45.902942+0200", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 2}, "eventId": 4624, "logonId": "71c99af1de51eaf6", "logonType": 3, "status": "NT_STATUS_OK", "localAddress": null, "remoteAddress": "ipv4:192.168.0.125:52840", "serviceDescription": "Kerberos KDC", "authDescription": "ENC-TS Pre-authentication", "clientDomain": null, "clientAccount": "petrov\\@TEST. ALT@TEST. ALT", "workstation": null, "becameAccount": "petrov", "becameDomain": "TEST", "becameSid": "S-1-5-21-1723588197-2340999690-1379671080-1106", "mappedAccount": "petrov", "mappedDomain": "TEST", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "aes256-cts-hmac-sha1-96", "duration": 9023}} 

Пример включения ведения журнала аудита базы данных DC AD (установить уровень журнала по умолчанию — 1, включить ведение журнала изменений базы данных в формате JSON):

  1.  log level = 1 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5 dsdb_transaction_json_audit:5 

  2. Перезапустить службу Samba.



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

Если включено ведение журнала аудита в формате JSON, сведения о различных событиях регистрируются в формате JSON. Каждое событие имеет множество атрибутов. Внешний слой атрибутов состоит из трёх элементов: метки времени, типа события и объекта данных:

 { "timestamp": 2023-04-13T11:48:45.902942+0200, "type": одно из значений "Authentication", "Authorization", "dsdbChange", "dsdbTransaction", "passwordChange", "replicatedUpdate", "groupChange", type: { data }
} 

Некоторые атрибуты по-прежнему будут присутствовать в журнале, даже если они неприменимы. Например, если NETLOGON не используется (согласно serviceDescription

), для параметра netlogonComputer

будет установлено значение «null», для параметра netlogonNegotiateFlags

будет установлено значение «0x00000000», а другие поля сетевого входа будут иметь аналогичные пустые значения.

Читайте также:  Освоение портов Mikrotik: повышение скорости подключения и скорости для повышения эффективности сети

Таблица 6.1. Аутентификация

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

Остальные таблицы: dsdbChange? (https://wiki.samba.org/index.php/Interpreting_JSON_Audit_Logs)



Настройка уровня логов Samba

Первым делом настройте уровень логов Samba.


Обычно логи в Samba не очень подробные, вследствие чего, иногда бывает трудно найти ошибку. Но, степень вывода логов можно изменить. Для этого нужно отредактировать конфигурационный файл Samba.

 # mcedit /etc/samba/smb.conf 

И в секции «global» добавить две строки:

 log level = 2
max log size = 20480 

где log level
— уровень логов от 1 до 5, чем больше значение, тем подробнее.

 # service samba restart 

Установите значение, например, на 5. Перезапустите службу. Начните выполнять в консоли настройку, которая у вас не получалась и Вы увидите что логи стали в разы подробней.


Логи у команды

 # net ads join -U administrator -d 1 


Команде net не удается подключиться по адресу 127.0.0.1

Используя настройки по-умолчанию, команда net
подключается к адресу 127.0.0.1. Если Samba не слушает петлевой интерфейс, подключение не удастся. Например:

 # net rpc rights list -U administrator
Enter administrator's password:
Could not connect to server 127.0.0.1
Connection failed: NT_STATUS_CONNECTION_REFUSED 

Для решения данной проблемы, настройте Samba на дополнительное прослушивание петлевого интерфейса. Для подробностей см. Настройка Samba для привязки к определенным интерфейсам.

В качестве временного решения проблемы, можно использовать ключ -I
IP_address
или -S
host_name
после команды net
.


Настройка Samba для привязки к определенным интерфейсам

Если ваш сервер использует несколько сетевых интерфейсов, вы можете настроить Samba для привязки только к определенному интерфейсу. Например, если Samba установлена ​​на маршрутизаторе с одним сетевым интерфейсом, подключенным к Интернету, и другим, подключенным к внутренней сети.

Чтобы привязать все службы Samba к eth0
и устройству loopback
( lo
):

 bind interfaces only = yes
interfaces = lo eth0 

Перезапустите службы Samba.

 # systemctl restart samba  [i 
] 


getent не находит доменных пользователей и групп

 getent passwd demo01 

ничего не возвращает, попробуйте ввести:

 getent passwd "SAMDOM\demo01" 

если данная команда работает, а первая нет, вам может потребоваться добавить следующую строку в файл smb.conf

 winbind use default domain = yes 


  • Домен: DOMAIN. RU
  • WG: DOMAIN
  • Хост: Client


Вывод текущей схемы аутентификации

Примечание:
Для работы нужен пакет alterator-auth.

 # system-auth status 

Команда работает только из под root.

Примечание:
Вместо DOMAIN и CLIENT система выведет имена домена и клиента.

  • Доменная система
 [root@test ~]# system-auth status
ad PETR. RU TEST PETR 
  • Локальная система
 [root@localhost ~]# system-auth status
local 


Вывод системы аутентификации

 # control system-auth 

Команда работает только из под root

  • Доменная система
 [root@test ~]# control system-auth
sss 
  • Локальная система
 [root@localhost ~]# control system-auth
local 


Статус служб бэкендов Samba

 $ systemctl status sssd
$ systemctl status winbind 

Команда работает и под root и под обычным пользователем.

  • Локальная система:
 [root@host-9 ~]# systemctl status sssd
Unit sssd.service could not be found. 
 [root@host-9 ~]# systemctl status winbind
? winbind.service - Samba Winbind Daemon
Loaded: loaded (/lib/systemd/system/winbind.service; disabled; vendor preset: disabled) Active: inactive (dead)
Docs: man:winbindd

man:samba

 man:smb.conf
 
  • Доменная система:
 [root@test ~]# systemctl status sssd sssd.service - System Security Services Daemon
Loaded: loaded (/lib/systemd/system/sssd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-04-20 10:40:31 MSK; 6h ago 
 [petr@test ~]$ systemctl status winbind
winbind.service - Samba Winbind Daemon
Loaded: loaded (/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-04-20 10:40:33 MSK; 7h ago 


Информация о домене

 $ net ads info 

Команда работает и под root и под обычным пользователем.

  • Локальная система
 [ladmin@localhost -]$ net ads info
adsconnect: No logon servers are curently available to service the logon request.
adsconnect: No logon servers are curently available to service the logon request.
Didn't find the ldap server! 
  • Доменная система
 [ladmin@test ~]$ net ads info
LDAP server: 10.0.2.6
LDAP server name: dc.petr.ru
Realm: PETR. RU
Bind Path: dc=PETR,dc=RU
LDAP port: 389
Server time: Чт, 20 anp 2023 17:07:10 MSK
KDC server: 10.0.2.6
Server time offset: 2
Last machine account password change: Вт, 11 anp 2023 17:02:48 MSK 


Вывод имени хоста kdc по IP

 $ host kdc_ip 

Примечание:
Вместо kdc_ip введите IP адрес KDC из команды net ads info.

Команда работает и под root и под обычным пользователем.

  • Доменная система
 [ladmin@test ~]$ host 10.0.2.6
6.2.0.10.in-addr.arpa has no PTR record 


 $ ping kdc_ip 

Примечание:
Вместо kdc_ip введите IP адрес KDC из команды net ads info.

Команда работает и под root и под обычным пользователем.

  • Доменная система
 [root@test ~]# ping 10.0.2.6
PING 10.0.2.6 (10.0.2.6) 56 bytes of data.
bytes	from	10.0.2.6:	icmp_seq=l	ttl=64	time=0.413	ms
bytes	from	10.0.2.6:	icmp_seq=2	ttl=64	time=0.423	ms
bytes	from	10.0.2.6:	icmp_seq=3	ttl=64	time=0.434	ms
bytes	from	10.0.2.6:	icmp_seq=4	ttl=64	time=0.436	ms 


Получение билета Kerberos с подробным логом

 $ KRB5_TRACE=/dev/stdout kinit user 

Работает и под root и под обычным пользователем.

  • Локальная система
 [root@localhost ~]# kinit petг
kinit: Configuration file does not specify default realm when parsing name petr 
  • Доменная система
 [root@test ~]KRB5_TRACE=/deu/stdout кinit petr
[11850] 1682000087.974945: Getting initial credentials for petr@PETR. RU
[11050] 1682000087.974947: Sending unauthenticated request
[11050] 1682000087.974948: Sending request (193 bytes) to PETR. RU
[11050] 1682000087.974949: Sending initial UDP request to dgran 10.0.2.6:88
[11050] 1682000087.974950: Received answer (283 bytes) from dgran 10.0.2.6:88
[11050] 1682000087.974951: Response was from primary KDC
[11050] 1682000087.974952: Received error from KDC: -1765328359/Additional pre-authentication required
[11050] 1682000087.974955: Preauthenticating using KDC method data
[11050] 1682000087.974956: Processing preauth types: PA-PK-AS-REQ 
, PA-PK-AS-REP. OLD , PA-PK
INIT-KX (147), PA-ENC-TINESTAMP 

, PA-FX-FAST (136), 655, PA-ETYPE-INF02

[11050] 1682000087.974957: Selected etype info: etype aes256-cts, salt "PETR. RUpetr”, parans "\x00\x30\xl0\x00" [11050] 1682000087.974958: PKINIT client has no configured identity; giuing up [11050] 1682000087.974959: Preauth module pkinit (147) (info) returned: 0/Success [11050] 1682000087.974960: PKINIT client has no configured identity; giuing up 111050] 1682000087.974961: Preauth module pkinit
 (real) returned: 22/Heдопустимый аргумент
Password for petr@PETR. RU: 


Информация о проверке связи с доменом

 # net ads testjoin 

Работает только под root

  • Локальная система
 [root@localhost ~]# net ads testjoin
Join to domain is not valid: NT code 0xfffffff6 
  • Доменная система
 [root@test ~J# net ads testjoin
Join is OK 


Вывод списка пользователей

 $ getent passwd 

Или конкретного пользователя

 $ getent passwd petr 

Работает и под root и под обычным пользователем.

  • Общий вывод
 [petr@test ~]$ getent passwd
root:x:0:0:System Administrator:/root:/bin/bash
bin:x:1:1:bin:/:/dev/null
daemon:x:2:2:daemon:/:/dev/null
adm:x:3:4:adm:/var/adm:/dev/null
lp:x:4:7:lp:/var/spool/lpd:/dev/null
и т.д. 
  • Вывод указанного пользователя
 [petr@test ~]$ getent passwd petr
petr:*:1332601104:1332600513:petr:/home/PETR. RU/petr:/bin/bash 


Вывод списка пользователей

 $ wbinfo -u 

Работает и под root и под обычным пользователем.

 [ladmin@localhost ~]$ wbinfo -u
could not obtain winbind interface details: WBCERRWINBINDNOTAVAILABLE could not obtain winbind domain name!
Error looking up domain users 
 [petr@test ~]$ wbinfo -u
krbtgt
anton
serg
dima
administrator
guest
petr 


Вывод групп пользователя

 $ id 

Работает и под root и под обычным пользователем.

Можно указать конкретного пользователя:

 $ id dima 
  • Группы пользователя, зашедшего в систему:
 [admin@host-9 ~]$ id
uid=500(admin) gid=500(admin) группы=500(admin),10(wheel),14(uucp),19(proc),22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),464(scanner),465(xgrp),466(camera),488(video) 
  • Группы указанного пользователя:
 [petr@test ~]$ id dima
uid=133Z601105(dima) gid=133Z600513(domain users) rpynnu=133Z600513(domain users),100(users),80(cdur iter),ZZ(cdrom),81(aud io),475(u ideo),19(proc),83(rad io),465(camera), 71(floppy),498(xgrp),499(scanner),14(uucp),457(uboxusers),469(fuse),489(uboxadd),488(uboxsf) 


Вывод групп пользователя

 $ groups 

Можно указать конкретного пользователя

 $ groups dima 

Работает и под root и под обычным пользователем.

  • Группы пользователя зашедшего в систему (доменный):
 [petr@test ~]$ groups
domain users uucp proc cdrom floppy cdwriter audio radio users vboxusers camera fuse video vboxsf vboxadd xgrp scanner 
  • Группы пользователя зашедшего в систему (локальный администратор):
 [admin@host-9 ~]$ groups
admin wheel uucp proc cdrom floppy cdwriter audio radio scanner xgrp camera video 
  • Запрос групп пользователя из другой учетной записи (доменный):
 [petr@test ~]$ groups dima
dima : domain users uucp proc cdrom floppy cdwriter audio radio users vboxusers camera fuse video vboxsf vboxadd xgrp scanner 


Вывод групп пользователя

 $ wbinfo -g 

Работает и под root и под обычным пользователем.

  • Локальная система
 [ladmin@localhost ~]$ wbinfo -g
could not obtain winbind interface details: WBC ERR WINBIND NOT AVAILABLE could not obtain winbind domain name!
failed to call wbcListGroups: WBCERRWINBINDNOTAVAILABLE
Error looking up domain groups 
  • Доменная система
 [petr@test ~]$ wbinfo -g
domain computers
domain controllers
allowed rode password replication group
read-only domain controllers
domain admins
enterprise read-only domain controllers
dnsupdateproxy
group policy creator owners
dnsadmins
denied rode password replication group
enterprise admins
ras and ias servers
domain guests
domain users
schema admins
cert publishers 


Проверка доступа по ssh

 $ ssh user@localhost 

Работает и под root и под обычным пользователем.

Примечание:
Должна быть включена служба sshd

 [ladmin@test ~]$ ssh ladmin@localhost
The authenticity of host 'localhost (1Z7.0.0.1)' can't be established.
EDZ5519 key fingerprint is SHAZ56:Q0wrd5iKzKqaTuGguuyxyZ8RG8TZ68dS8oldBufBTNs.
Are you sure you want to continue connecting (yes/nо)? yes
Warning: Permanently added 'localhost' (EDZ5519) to the list of known hosts.
ladminl@localhost's password:
Last login: Thu Apr 20 10:45:05 2023
[ladmin@test ~]$ 


Вход в DM

Примечание:
Пускает пользователя в графическую часть

Оцените статью
Хостинги