пятница, 16 ноября 2012 г.

Аудит пользовательских операций на сервере Samba с помощью full_audit

У меня, как админа, иногда возникает задача просмотреть операции пользователей на файловом сервере. Это связано, например, со спорными ситуациями вида:"У меня был файл, но он исчез. Кто его удалил?" или:"У меня тут вчера была папка с документами, а сегодня её нет. Я точно не удаляла, куда она подевалась?" и т.д. На помощь приходит VFS модуль Samba full_audit. Далее будет показано, как облегчить жизнь админам и разрешить спорные ситуации используя аудит.

Наши действия мы будем проводить на CentOS 6, хотя всё применимо и к другим дистрибутивам. Единственным условием является система журналирования rsyslog. Все настройки сводятся к редактированию конфигурационных файлов smb.conf и rsyslog.conf. Начнем с первого. В сеции "[global]" файла smb.conf настроим систему журналирования самбы:

[global]
...
log level = 0 vfs:1
max log size = 0
syslog = 0
syslog only = yes
...

Далее, в секции описания вашего расшаренного ресурса подключим модуль аудита full_audit:

[documents]
...
#подключаем модуль
vfs objects = full_audit
#сообщения в системный журнал идут с префиксом родительская группа|пользователь
full_audit:prefix = %g|%u
#сообщения о неудачных действиях не регистрируем
full_audit:failure = none
#какие действия(в случае успеха) мы регистрируем
full_audit:success = mkdir rmdir pread pwrite rename unlink
#параметры систамного журнала, с помощью которых мы идентифицируем наши сообщения от samba
full_audit:facility = local5
full_audit:priority = notice
...

Теперь сделаем так, чтобы сообщения от самбы шли в отдельный файл. Для этого добавим в /etc/rsyslog.conf:

local5.notice /var/log/samba/audit.log

и для того, чтобы эти сообщения не дублировались в системный журнал, туда же добавим:

local5.notice -/var/log/messages

Теперь перезапустим демоны самбы и системного журнала:

[root@server-DS ~]# /etc/init.d/smb restart && /etc/init.d/rsyslog restart

Файл журнала audit.log может сильно возрасти, поэтому для противодействия этому воспользуйтесь утилитой logrotate. Например, в CentOS 6 при установке пакета Samba в каталог /etc/logrotate.d добавляется файл для ротации логов Samba в каталоге /var/log/samba. Ротации подвергаются все файлы этого каталога, так что наш audit.log тоже попадает под эту ротацию. По умолчанию, файл ротации Samba выглядит следующим образом:

/var/log/samba/* {
monthly
notifempty
olddir /var/log/samba/old
missingok
sharedscripts
copytruncate
}

Чтобы сильно не засорять место старыми файлами журнала самбы, добавим в этот файл следующее:

#сколько раз проводить ротацию, прежде чем далять старые журналы
rotate 2
#сжимать старые файлы журнала(по умолчанию gzip-ом)
compress

В принципе этого достаточно для нормального аудита. На этом всё ;)

1 комментарий: