Логирование действий на файловом сервере в Samba 4.5
Для логирования/аудита действий пользователей на файловом сервере предусмотрен модуль VFS (Virtual File System) — full_audit, рассмотрим его применение.
В файле конфигурации samba (/etc/samba/smb.conf) в секцию [global] добавим следующие параметры:
# ПАРАМЕНТЫ ЛОГИРОВАНИЯ 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
[stextbox id=’info’]Пояснения по параметрам full_audit:
full_audit:prefix — Запись сообщений в системный журнал с префиксом: %S — название шары, %u — имя пользователя, %I — ip-адрес пользователя.
full_audit:success/full_audit:failure — Фиксирование удачных/неудачных событий (создание, удаление каталога, запись файла, переименование, удаление). Полный список возможных команд
full_audit:facility/full_audit:priority — Параметры системного журнала (syslog), с помощью которых мы идентифицируем наши сообщения от samba[/stextbox]
[stextbox id=’info’]Если уже используется какой-то модуль VFS, то перечисляем все объекты через пробел, например:
vfs object = acl_xattr full_audit[/stextbox]
Если необходимо вести логирование пользовательский действий по какой то определенной общей папке, то тогда выше описанные параметры необходимо прописывать в секцию описания общей папки.
После изменения конфигурации, перезапускаем 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
[stextbox id=’warning’]ЗАМЕТКА. Знак минуса перед указанием файла означает, что после каждой записи в файл не будет выполняться операция sync, а данные некоторое время будут находится в оперативной памяти в дисковом буфере. При большой интенсивности потока записей это уменьшает нагрузку на дисковую систему.[/stextbox]
Для применения изменений перезапускаем 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 }
[stextbox id=’info’]ПОЯСНЕНИЯ. Используемые параметры указывают что ротацию необходимо делать каждый день (daily), хранить файлы не более 60 дней (rotate), не выдавать ошибок в случае если лог-файла не существует (missingok), не обрабатывать пустые файлы (notifempty) и перемещать старые лог-файлы в отдельную папку (olddir)[/stextbox]
По ссылке https://www.samba.org/samba/docs/current/man-html/vfs_full_audit.8.html уже указаны новые названия для некоторых операций. Например вместо mkdir нужно mkdirat. Иначе будут логироваться все операции.