среда, 27 февраля 2008 г.

Ниже описывается настройка samba модуля full_audit, который позволяет увидеть кто и к какому файлу обращался, кто создал, удалил или переименовал конкретный файл или каталог.
В результате настройки необходимые данные будут записываться в лог-файл /var/log/samba/log.audit.
(Настройка производилась в дистрибутиве Debian Etch, версия Samba 3.0.24).

1. В секцию [global] добавляется строка

syslog = 0

Данный параметр устанавливает приоритет сообщений, которые будут направлены в syslog. Чем выше значение, тем большее количество сообщений будет выводиться. Указав значение 0 можно отключить запись сообщений в syslog.

2. Количество сообщений, записываемых в лог-файлы, для всех VFS модулей может быть задано следующим параметром в секции [global]

log level = 0 vfs:2


3. Если планируется сохранять лог-файлы длительное время, может быть полезным указание параметра

max log size = 0

Размер лог-файла задается в килобайтах. При достижении указанного значения файл будет переименован, путем добавления к имени файла расширения .old. Значение 0 отключает проверку размера (в данном случае необходимо самостоятельно позаботиться о размере лог-файла, к примеру, настроив соответсвующим образом logrotate).

4. Для активации модуля аудита, в секции, которая описывает расшаренный ресурс, добавляется строка

vfs objects = full_audit

В результате данные о доступе к файлам будут записываться в syslog, либо в лог-файл по умолчанию (log.smbd). Здесь же, через пробел, могут быть заданы другие VFS модули.

5. Можно указать дополнительные параметры модулю full_audit.
Префикс, сообщений в лог-файле:

full_audit:prefix = %u|%I

(каждая строка будет начинаться с user|ip_adress)
Какие ошибки должны отображаться в лог-файле:

full_audit:failure = none

(не протоколируем ошибки)
Действия пользователей, которые записываются в лог-файл:

full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath

Параметры, позволяющие управлять записью в журналы демоном syslogd:

full_audit:facility = local5
full_audit:priority = notice

Данные два параметра описывают селектор, он обозначает программу ("средство" в терминологии системы syslog), которая посылает регистрационное сообщения и уровень серьезности этого сообщения.
Прим. Несмотря на опцию syslog = 0, samba направляет сообщения в syslog. Возможно в других версиях samba такое поведение будет изменено. Последние два параметра модуля full_audit позволят в дальнейшем исключить попадание нежелательных сообщений в журанал syslog.

Собрав все вместе получим примерно следующее:

[global]
...
log level = 0 vfs:2
max log size = 0
syslog = 0
...
[incomig]
comment = Samba server's incoming directory
writable = yes
locking = no
path = /home/samba/incoming
public = yes
browseable = yes
only guest = yes
vfs objects = full_audit
full_audit:prefix = %u|%I
full_audit:failure = none
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice

После перечитывания конфигурации сервисами, строки лог-файла будут выглядеть примерно следующим образом:

...
Feb 23 18:13:31 kirill smbd_audit: nobody|192.168.4.2|connect|ok|incoming
Feb 23 18:13:32 kirill smbd_audit: nobody|192.168.4.2|chdir|ok|chdir|/home/samba/incoming
Feb 23 18:13:35 kirill smbd_audit: nobody|192.168.4.2|opendir|ok|.
Feb 23 18:13:35 kirill smbd_audit: nobody|192.168.4.2|closedir|ok|
Feb 23 18:13:35 kirill smbd_audit: nobody|192.168.4.2|opendir|ok|./
Feb 23 18:13:48 kirill smbd_audit: nobody|192.168.4.2|opendir|ok|New Folder
Feb 23 18:13:48 kirill smbd_audit: nobody|192.168.4.2|closedir|ok|
Feb 23 18:13:48 kirill smbd_audit: nobody|192.168.4.2|rmdir|ok|New Folder
Feb 24 11:45:10 kirill smbd_audit: root|192.168.4.2|disconnect|ok|incoming
Feb 24 11:45:10 kirill smbd_audit: root|192.168.4.2|chdir|ok|chdir|/
...


7. Дополнительные настройки
Далее может понадобиться дополнительная настройка демонов syslogd и logrotate.
(Прим. В данном примере используются sysklogd 1.4.1 и logrotate 3.7.1)
7.1 В стандартном файле конфигурации syslog.conf демона syslogd имеется строка

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

для того чтобы сообщения модуля full_audit не попадали в syslog, нужно изменить эту строку следующим образом:

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

Чтобы сообщения записывались в заданный файл, нужно добавить в syslog.conf такую строку:

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

7.2 Для того чтобы лог-файл не разрастался, в каталоге /etc/logrotate.d можно изменить соответсвующую секцию конфигурационного файла samba, чтобы она выглядела примерно так:

/var/log/samba/log.smbd /var/log/samba/log.audit {
weekly
missingok
rotate 7
postrotate
invoke-rc.d --quiet samba reload > /dev/null
endscript
compress
notifempty
}