Auditoria em compartilhamentos Samba 3.x

Neste artigo irei mostrar como ativar a auditoria em compartilhamentos Samba de forma simples e rápida.

Ambiente de teste:
Debian 4.0 ( etch )
Kernel 2.6.18
Samba 3.0.24-16

1º) Passo
Primeiramento faça um backup do seu arquivo de configuração do Samba como segurança:
cp /etc/samba/smb.conf /etc/samba/smb.config-`date +%d%m%Y`

em seguida adicione as linhas abaixo na parte Globals do smb.conf

vfs objects = full_audit
full_audit:facility = LOCAL5
full_audit:priority = NOTICE
full_audit:prefix = %u|%I|%S
full_audit:success = rename rmdir unlink
full_audit:failure = none

Desta forma a auditoria será ativada para todos os compartilhamentos do smb.conf, você pode simplesmente ativar a auditoria por compartilhamento adicionando as linhas acima em cada compartilhamento ativo.

Entendendo as flags:
em full_audit:prefix voce indica o que deverá preceder no formato do arquivo de auditagem, %u indica nome do usuario, %I representa o IP da maquina e %S indica o nome do compartilhamento conforme a tabela a seguir (copiado das manpages do samba):

Variáveis referentes a maquina cliente de rede :

%a Client’s architecture (Samba, WinNT, WfWg, Win95, or UNKNOWN)
%I Client’s IP address
%m Client’s NetBIOS name
%M Client’s DNS name

Variáveis referentes ao usuário :

%g Primary group of %u
%G Primary group of %U
%H Home directory of %u
%u Current Unix username
%U Requested client username (not always used by Samba)

Variáveis referentes ao servidor :

%d Current server process ID
%h Samba server’s DNS hostname
%L Samba server’s NetBIOS name
%N Home directory server, from automount map
%v Samba version

Variáveis miscelaneas :

%R The SMB protocol level that was negotiated
%T The current date and time

Variáveis referentes ao compartilhamento :

%p Automouter’s path to the share’s root directory, if different from %P
%P Current share’s root directory
%S Current share’s name

Em full_audit:sucess e full_audit:failure voce acrescenta os eventos que devem ser registrados quando houver sucesso e/ou falha. No exemplo acima, eu irie auditar apenas renomeação e exclusão de arquivos/pastas.

Como há pouca documentação sobre o módulo “full_audit” então tive que estudar quais eventos no samba poderiam ser auditados, e tive de arrancar isso estudando o código fonte e parecem ser muitos, são eles :
“connect”,”disconnect”,”disk_free” ,”get_quota” ,”set_quota” ,”get_shadow_copy_data” ,”opendir” ,”readdir” ,”mkdir” ,”rmdir” ,”closedir” ,”open” ,”close” ,”read” ,”pread” ,”write” ,”pwrite” ,”lseek” ,”sendfile” ,”rename” ,”fsync” ,”stat”,”fstat” ,”lstat” ,”unlink” ,”chmod” ,”fchmod” ,”chown” ,”fchown” ,”chdir” ,”getwd” ,”utime” ,”ftruncate” ,”lock” ,”symlink” ,”readlink” ,”link” ,”mknod”, “realpath” ,”fget_nt_acl” ,”get_nt_acl” ,”fset_nt_acl” ,”set_nt_acl” ,”chmod_acl” ,”fchmod_acl”, “sys_acl_get_entry” ,”sys_acl_get_tag_type” ,”sys_acl_get_permset” ,”sys_acl_get_qualifier” ,”sys_acl_get_file” ,”sys_acl_get_fd” ,”sys_acl_clear_perms” ,”sys_acl_add_perm” ,”sys_acl_to_text” ,”sys_acl_init” ,”sys_acl_create_entry” ,”sys_acl_set_tag_type” ,”sys_acl_set_qualifier” ,”sys_acl_set_permset” ,”sys_acl_valid” ,”sys_acl_set_file” ,”sys_acl_set_fd” ,”sys_acl_delete_def_file” ,”sys_acl_get_perm” ,”sys_acl_free_text” ,”sys_acl_free_acl” ,”sys_acl_free_qualifier”

Espero que os nomes sejam auto-explicativos para você, pois não há detalhes suficientes para que eu possa explica-los melhor, no entanto, os mais comuns são e também os que testei foram estes :

none = nenhum (usei este em “failure” simplesmente porque queria uma auditagem bem especifica)
all = todos (esse daqui vai registrar tudo, haja espaço em disco)
mkdir = criar diretorio
rmdir = remover diretorio
open = abrir arquivo
close = fechar arquivo
read = ler arquivo
write = gravar arquivo
rename = renomear arquivo
unlink = excluir arquivo
chmod = mudar permissão
chown = mudar o dono do arquivo
connect= mapeamento ou reconexão a uma unidade de rede
disconnect = desconectar uma unidade de rede

Para determinar onde será gravado a auditoria, acrescente ao arquivo /etc/syslog.conf as linhas :

# auditoria samba
local5.notice /var/log/samba/auditoria.log

E também reinicie o servidor de log (syslogd):

/etc/init.d/sysklogd restart

Apesar de existir desde o primórdio do samba3, o módulo audit_full não é muito bem documentado, a menos que voce participe da lista de discussão do samba(em inglês) voce terá pouco acesso a muitos módulos vfs que o samba possui e também módulos de terceiros como o vscan-clamav (antivirus) que juntamente com estes dois módulos citados neste artigo formam a trindade de segurança do samba.