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

Логирование действий на файловом сервере в 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]

Обсуждение

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