У меня, как админа, иногда возникает задача просмотреть операции пользователей на файловом сервере. Это связано, например, со спорными ситуациями вида:"У меня был файл, но он исчез. Кто его удалил?" или:"У меня тут вчера была папка с документами, а сегодня её нет. Я точно не удаляла, куда она подевалась?" и т.д. На помощь приходит VFS модуль Samba full_audit. Далее будет показано, как облегчить жизнь админам и разрешить спорные ситуации используя аудит.
Наши действия мы будем проводить на CentOS 6, хотя всё применимо и к другим дистрибутивам. Единственным условием является система журналирования rsyslog. Все настройки сводятся к редактированию конфигурационных файлов smb.conf и rsyslog.conf. Начнем с первого. В сеции "[global]" файла smb.conf настроим систему журналирования самбы:
Далее, в секции описания вашего расшаренного ресурса подключим модуль аудита full_audit:
Теперь сделаем так, чтобы сообщения от самбы шли в отдельный файл. Для этого добавим в /etc/rsyslog.conf:
и для того, чтобы эти сообщения не дублировались в системный журнал, туда же добавим:
Теперь перезапустим демоны самбы и системного журнала:
Файл журнала audit.log может сильно возрасти, поэтому для противодействия этому воспользуйтесь утилитой logrotate. Например, в CentOS 6 при установке пакета Samba в каталог /etc/logrotate.d добавляется файл для ротации логов Samba в каталоге /var/log/samba. Ротации подвергаются все файлы этого каталога, так что наш audit.log тоже попадает под эту ротацию. По умолчанию, файл ротации Samba выглядит следующим образом:
Чтобы сильно не засорять место старыми файлами журнала самбы, добавим в этот файл следующее:
В принципе этого достаточно для нормального аудита. На этом всё ;)
Наши действия мы будем проводить на 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
...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
...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
}
monthly
notifempty
olddir /var/log/samba/old
missingok
sharedscripts
copytruncate
}
Чтобы сильно не засорять место старыми файлами журнала самбы, добавим в этот файл следующее:
#сколько раз проводить ротацию, прежде чем далять старые журналы
rotate 2
#сжимать старые файлы журнала(по умолчанию gzip-ом)
compress
rotate 2
#сжимать старые файлы журнала(по умолчанию gzip-ом)
compress
В принципе этого достаточно для нормального аудита. На этом всё ;)
не работает ротация, всё пишет в один файл
ОтветитьУдалить