2.9.20.4.6.5 Журналирование событий SAMBA
Скачать документНастройка протоколирования событий, связанных с файловым хранилищем samba, является довольно важным вопросом. Рассмотрим случай, когда на файловом сервере присутствуют сетевые папки, для которых необходимо организовать запись действий, которые пользователи производят в данной папке.
За настройку журналирования действий samba отвечает конфигурационный файл /etc/samba/smb.conf.
Рассмотрим пример сетевой папки, имеющей в своем теле конфигурацию для протоколирования событий.
Секция сетевой папки:
[share_domain] path = /share_domain/ read only = no browseable = yes 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
Рассмотрим детально, что означают данные параметры:
В параметре vfs objects указывается модуль full_audit, на основе которого будет происходить протоколирование событий.
Запись full_audit:prefix = %u|%I|%m|%S представляет из себя набор тех данных, которые будут записываться в логи при определенных действиях пользователей в сетевой папке.
Полный список допустимых переменных
%U - имя пользователя.
%G - имя основной группы %U.
%h - сетевое имя ПК, на котором запущена Samba.
%L - NetBIOS имя сервера.
%M - сетевое имя ПК клиентской машины.
%R - выбранный уровень протокола. Он может быть одним из CORE, COREPLUS, LANMAN1, LANMAN2, NT1, SMB2_02, SMB2_10, SMB3_00, SMB3_02, SMB3_11 или SMB2_FF.
%d - идентификатор текущего серверного процесса.
%a - архитектура удаленной машины.
%I - IP-адрес клиентской машины.
%J - IP-адрес клиентской машины, двоеточия / точки заменены символами подчеркивания.
%i - локальный IP-адрес, к которому подключился клиент.
%j - локальный IP-адрес, к которому подключился клиент, двоеточия / точки заменены символами подчеркивания.
%T - текущие дата и время.
%t - текущие дата и время в минимальном формате без двоеточий (YYYYYmmdd_HHMMSS).
%D - имя домена или рабочей группы текущего пользователя.
%w - разделитель в winbind.
%$(envvar) - значение переменной envar.
Следующие параметры доступны, когда установка соединения состоялась:
%S - название текущей службы, если таковая имеется.
%P - корневой каталог текущей службы, если таковой имеется.
%u - имя пользователя текущего сервиса, если есть.
%g - имя основной группы %u.
%H - домашний каталог пользователя, заданного %u.
%N - Это значение совпадает с %L.
Параметры:
full_audit:failure = none
full_audit:success = mkdir rmdir open read pread write pwrite sendfile rename unlink lock
отвечают за протоколирование действий в случае успешного выполнения операции или неуспешного. Допустимо использование none - т.е. отсутствие протоколирования событий или команд.
Полный список допустимых команд
aio_force
audit_file
brl_lock_windows
brl_unlock_windows
chdir
chflags
chmod
close
closedir
connect
connectpath
create_dfs_pathat
create_file
disconnect
disk_free
durable_cookie
durable_disconnect
durable_reconnect
fallocate
fchmod
fchown
fdopendir
fget_compression
fget_dos_attributes
fget_nt_acl_at
fgetxattr
file_id_create
flistxattr
fremovexattr
fs_capabilities
fsctl
fset_dos_attributes
fset_nt_acl
fsetxattr
fs_file_id
fstat
fsync
fsync_recv
fsync_send
ftruncate
get_alloc_size
get_dfs_referrals
get_dos_attributes
get_dos_attributes_recv
get_dos_attributes_send
getlock
get_nt_acl
get_quota
get_real_filename
get_shadow_copy_data
getwd
getxattr
getxattrat_recv
getxattrat_send
is_offline
kernel_flock
lchown
linkat
linux_setlease
listxattr
lock
lseek
lstat
mkdirat
mknodat
ntimes
offload_read_recv
offload_read_send
offload_write_recv
offload_write_send
open
pread
pread_recv
pread_send
pwrite
pwrite_recv
pwrite_send
read
readdir
readdir_attr
readlinkat
realpath
recvfile
removexattr
renameat
rewinddir
seekdir
sendfile
set_compression
set_dos_attributes
set_offline
set_quota
setxattr
snap_check_path
snap_create
snap_delete
stat
statvfs
streaminfo
strict_lock_check
symlinkat
sys_acl_blob_get_fd
sys_acl_blob_get_file
sys_acl_get_fd
sys_acl_get_file
sys_acl_set_fd
telldir
translate_name
unlinkat
write
Параметры:
full_audit:facility = local5 - категория событий syslog, в которую будут попадать записи.
Для того чтобы каждая сетевая папка вела свои собственные логи, требуется указывать отличные друг от друга значения, т.е. local5, local6, local7 и т.д.
full_audit:priority = debug - категория событий syslog, в которую будут попадать записи.
Доступные приоритеты: notice, debug, alert
Необходимо помнить, для того чтобы настройки вступили в силу, требуется перезапустить сервис:
sudo -E systemctl restart smb
Настройка ведения логов в определенный файл
За пути логов отвечает конфигурационный файл /etc/rsyslog.conf, в конец файла вписывается для каждой сетевой папки свой параметр local4, local5, local6 и т.д.:
local5.debug -/var/log/samba/audit.log
Вместо debug необходимо указать тот режим, который был указан в параметре full_audit:priority.
Также для удобства ведения логов можно назвать файл логов идентично имени сетевой папки, т.е.:
local5.debug -/var/log/samba/share_dir.log
Для применения изменений потребуется перезапустить сервис командой:
sudo -E systemctl restart rsyslog
Настройка ротации логов
За ротации логов отвечает конфигурационный файл /etc/logrotate.d/samba.
По умолчанию в системе уже настроена ротация логов Samba и конфигурационный файл имеет следующее содержимое:
/var/log/samba/log.* { compress dateext maxage 365 rotate 99 notifempty olddir /var/log/samba/old missingok copytruncate }
Рассмотрим, за что отвечают параметры:
compress - сжатие данных;
dateext - добавляет дату ротации перед заголовком старого лога;
maxage - значение, отвечающее за удаление логов старше X дней;
rotate - параметр отвечает за частоту ротаций логов через X дней;
notifyempty - не сдвигать журнал, если он пуст;
olddir /var/log/samba/old - параметр отвечающий, куда сохранять старые логи;
missingok - в случае отсутствия файла журнала перейти к обработке следующего, не выдавая сообщения об ошибке;
copytruncate - после создания копии обрезать исходный файл журнала взамен перемещения старого файла журнала и создания нового. Данный параметр применяется в том случае, когда некоторой программе нельзя указать закрыть её журнал, и таким образом можно постоянно продолжать запись (добавление) в существующий файл журнала.
Запустить ротацию логов можно следующей командой:
sudo -E logrotate -v -f /etc/logrotate.conf
Дата последнего изменения: 06.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.