SCROLL
Среднее время на прочтение: 2 мин.

Логирование действий на файловом сервере в Samba 4.5

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

В файле конфигурации samba /etc/samba/smb.conf в секцию [global] добавим следующие параметры:

/etc/samba/smb.conf
#   ПАРАМЕНТЫ ЛОГИРОВАНИЯ
    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:prefix — запись сообщений в системный журнал с префиксом:
    • %S — название шары.
    • %u — имя пользователя.
    • %I — ip-адрес пользователя.
  • full_audit:success/full_audit:failure — фиксирование удачных/неудачных событий (создание, удаление каталога, запись файла, переименование, удаление). Полный список возможных команд.
  • full_audit:facility/full_audit:priority — параметры системного журнала (syslog), с помощью которых мы идентифицируем наши сообщения от samba.
Если уже используется какой-то модуль VFS, то в vfs object перечисляем все объекты через пробел.
Если необходимо вести логирование пользовательский действий по какой то определенной общей папке, то тогда выше описанные параметры необходимо прописывать в секцию описания общей папки.

После изменения конфигурации, перезапускаем 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

Для удобства настроим логирование в отдельный файл и настроим для этого файла ротацию.

Запретим логирование событий local5 в файлы rsyslog и messages и последней строкой укажем файл в который необходимо выполнять логирование. Файл /etc/rsyslog.conf приводим к виду:

/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 добавляем строки:

/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)
 

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

Обсуждение

1 комментариев