Аудит samba

Иногда возникает желание или приходит решение сделать возможность логирования доступа к файлам на файловом сервере, где запущена samba.

В сети много таких мануалов (раз, два, три, четыре) и в общем-то в них написано всё правильно и верно, только в моём случае пришлось дёргать полезные настройки из разных статей.

Поэтому сразу перейду к тому что есть и что надо:

Есть

  • Ubuntu 18.04 Server
  • Samba 4.7 (доступна в репозитории)

Надо

  • Поддержка логирования разных шар
  • Для каждой шары свой файл лога
  • Ротация логов, чтобы не забивать место

Приступим.

Настройки шары

  1. В каждое описание шары надо добавить следующий текст
log level = 0 vfs:2
vfs objects = full_audit
full_audit:prefix = [Share Name] %u|%I
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 = notice

где
full_audit:prefix — формат логов. Можно указать имя шары, если логирование ведётся в один файл для всех шар, и настроить свой формат логирования операция. Форматы смотрите тут.
full_audit:success — критерии логирования, такие как создание папки, удаление файла, переименование и многое другое. Их можно менять. Список всех критериев тут.
full_audit:facility — именованный канал syslog’а. Его имя должно быть уникальным, если планируете писать в разные файлы. Можно называть local5, local6, local7 и т.д. Используется для службы rsyslog. Рассмотрим ниже.

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

2. Отредактировать файл /etc/rsyslog.d/50-default.conf, заменив строку 

*.*;auth,authpriv.none            -/var/log/syslog

на

*.*;local5,local6,local7,auth,authpriv.none            -/var/log/syslog

где local5\6\7 — именованные потоки данных, которые не должны попадать в syslog. Иначе в syslog будет каша данных, как от всех системных событий, так и от логов самбы. А оно вам надо?

3. Создать файл /etc/rsyslog.d/00-samba-audit.conf с содержимым

local5.notice /var/log/samba/auditShare5.log
local6.notice /var/log/samba/auditShare6.log
local7.notice /var/log/samba/auditShare7.log

где local5, local6, local7 — названия потоков данных, которые должны попадать в файлы логов аудита.

Настройка ротации логов

4. В /etc/logrotate.d/samba дописать для каждой шары

/var/log/samba/auditShare5.log {
    weekly
    missingok
    rotate 7
    postrotate
         reload rsyslog > /dev/null 2>&1 || true
    endscript
    compress
    notifempty
}

Дополнительные настройки

5. Создать файлы логов аудита для каждой логируемой шары и дать каждому права на запись для пользователя syslog

touch auditShare5.log && chown syslog. auditShare5.log

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

systemctl restart smbd rsyslog

В общем-то и всё. Потоки логов должны начать наполнять файлы.

Добавить комментарий

Ваш адрес email не будет опубликован.