Sugiro que veja esse artigo sobre logs, mas precisamente rsyslog: Entendendo /etc/rsyslog.conf para Configurar o Log do Sistema
VFS vem de Virtual File System ou, português, Sistema de Arquivos Virtuais. O Virtual File System(VFS) no Samba permite que os administradores estendam a funcionalidade do Samba por meio de módulos. Há diversos módulos: audit, full_audit, recycle, acl_tdb… Clique aqui para ver uma lista mais completa dos módulos VFS.
Como o nome sugere, o módulo VFS audit é mais simples que full_audit. Sugiro sempre usar o full_audit! Veja exemplo: Samba: Logs para Criação, Exclusão e Renomeação de Arquivos
Esses módulos devem ser carregados dentro do arquivo smb.conf do samba. Podemos encontrar o smb.conf em diversos lugares, porém os dois mais comuns são: /etc/samba/ e em /usr/local/samba/etc/
Exemplo, para ativarmos o módulo da lixeira:
vfs objects = recycle
full_audit é incluído quando instalamos o samba. Se você instalou via gerenciador de pacote(apt ou dnf, yum…) provavelmente full_audit estará em /usr/lib/samba/vfs. Se compilou(configure, make, make install…) provavelmente estará em /usr/local/samba/lib/vfs
Usando Objetos VFS em um AD DC que Também é Servidor de Arquivos
Se tem dúvidas ou não sabe o que é um AD ou DC, veja: Qual Diferença Entre DC e AD em Informática?
Os dois módulos VFS que falaremos sobre são: audit e o full_audit. Mas, temos que abordar, antes de tudo, a diferença entre adicionar as linhas do VFS dentro do smb.conf em um servidor samba
- que compartilha arquivos e não é AD DC
- e um que compartilha arquivos(servidor de arquivos) mas é ao mesmo tempo um AD DC.
A diferença no uso é a seguinte. Vamos supor que vou usar o módulo audit do VFS, se você tiver um servidor de AD DC que não é servidor de arquivos, ou seja, que não compartilha pastas, deverá colocar dentro do smb.conf assim:
vfs objects = audit
Agora, se seu servidor é servidor de arquivos e ao mesmo tempo AD DC, então deverá acrescentar dfs_samba4 acl_xattr, assim:
vfs objects = dfs_samba4 acl_xattr audit
Se não colocar esses atributos à mais irá ver essa mensagem no arquivo de log:
"vfs objects specified without required AD DC module: dfs_samba4"
Traduzindo: “objetos vfs especificados sem o módulo AD DC necessário: dfs_samba4
O Módulo vfs_audit
O módulo VFS vfs_audit registra as operações selecionadas do cliente no log do sistema usando syslog ou rsyslog.
Este módulo é empilhável.
Dentro do smb.conf podemos ativar os módulos assim:
vfs objects = audit
Podemos colocar a linha acima tanto na seção [Global] quanto em cada seção de pasta compartilhada do smb.conf. Se colocar na seção [global] os logs vão se aplicar a tudo. Se colocar somente dentro de um compartilhamento irá servir só para aquele compartilhamento 🙂
Nota: lembra de acrescentar dfs_samba4 acl_xattr se seu servidor for um AD DC também.
O vfs objects = audit tem as seguintes opções
Veja exemplo do vfs_audit dentro do smb.conf
[global] vfs objects = audit audit:facility = LOCAL1 audit:priority = NOTICE
Onde, LOCAL1 e NOTICE são chamados de facility. O plural de Facility é Facilities 🙂
- audit:facility = FACILITY Envie os logs para o facility syslog. O syslog é o sistema de log do Linux.
- audit:priority = PRIORITY registre os eventos(logs) com nessa prioridade
Se preferir, temos um artigo sobre rsyslog: Entendendo /etc/rsyslog.conf para Configurar o Log do Sistema
As seguintes operações do Samba VFS são gravadas quando usamos audit do VFS:
connect |
disconnect |
opendir |
mkdir |
rmdir |
open |
close |
rename |
unlink |
chmod |
fchmod |
O Módulo vfs_full_audit
vfs_full_audit registra os logs das operações do Samba. Ele é semelhante, ao ser editado no smb.conf, ao vfs_audit:
vfs objects = full_audit
Lembrando,mais uma vez, que se usar o samba, no mesmo servidor, tanto para AD DC quanto para servidor de arquivos, então a linha cima deverá ser:
vfs objects = dfs_samba4 acl_xattr full_audit
Conforme dito acima, o módulo VFS vfs_full_audit registra as operações selecionadas do cliente no log do sistema usando syslog. Ele tem muito mais opções de registro que o audit. Listo todos mais abaixo.
Além dessas operações da tabela abaixo, vfs_full_audit reconhece “all” e “none”, que se referem a todas(all) as operações VFS e nenhuma(none) das operações VFS, respectivamente.
Se você digitar um nome errado, não existente o módulo falhará ao carregar e os clientes terão conexões recusadas a um compartilhamento usando este módulo.
vfs_full_audit registra operações em formato fixo consistindo de campos separados por |. O formato é:
smbd_audit: PREFIX|OPERATION|RESULT|FILE
onde,
- PREFIXO é o resultado da string full_audit:prefix após substituições de variáveis
- OPERAÇÃO é o nome da operação VFS
- RESULTADO é se a operação foi bem-sucedida ou falhou
- ARQUIVO é o nome do arquivo ou diretório em que a operação foi executada
Ficou confuso mas vamos ver exemplo, na prática:
[Documentos] path = /meusArquivos/documentos vfs objects = full_audit full_audit:prefix = %u|%I full_audit:success = open opendir full_audit:failure = all !open full_audit:facility = LOCAL7 full_audit:priority = ALERT
Veja que podemos colocar na seção [global], mas acima usamos dentro do compartilhamento da pasta documentos.
Acima, registra log e operações de abertura de diretório no compartilhamento [Documentos] usando o LOCAL7 e a prioridade ALERT, incluindo o nome de usuário e o endereço IP. O registro exclui a função VFS aberta em falhas.
Destrinchando:
- [Documentos] é o nome do compartilhamento
- path = /meusArquivos/documentos o caminho da pasta compartilhada no servidor
- full_audit:prefix = %u|%I irá mostrar o usuário(%u) e o endereço IP(%I) que acessou a pasta. Veja a lista completa dessas variáveis em Samba: Lista de Variáveis de Substituições do smb.conf
- full_audit:success = open opendir em caso de sucesso irá exibir logs de abertura e de abertura diretório(opendir)
- full_audit:failure = all !open em caso de falha na conexão exiba tudo(all), exceto abertura(!open)
- full_audit:facility = LOCAL7 jogue os logs para o rsyslog ou syslog através do canal LOCAL7
- full_audit:priority = ALERT a prioridade de logs é para alerta.
Veja opções:
ull_audit:prefix = STRING Anexe mensagens de auditoria com STRING. STRING é processado para variáveis de substituição padrão listadas em smb.conf(5). O prefixo padrão é “%u|%I”.
full_audit:success = LIST aqui, LIST é uma lista de operações VFS que devem ser registradas se forem bem-sucedidas. As operações são especificadas usando os nomes listados na tabela abaixo. As operações podem ser desativadas prefixando os nomes com “!”. O padrão é nenhuma operação.
full_audit:failure = LIST aqui, LIST é uma lista de operações VFS que devem ser registradas se falharem. As operações são especificadas usando os nomes listados na tabela abaixo. As operações podem ser desativadas prefixando os nomes com “!”. O padrão é nenhuma operação.
full_audit:facility = FACILITY envie logs para o facility do syslog
full_audit:priority = PRIORITY envie logs para o priority do syslog
full_audit:syslog = true/false Envia logs para o syslog ou como uma mensagem de nível 1 de depuração. O padrão é enviar para o syslog.
Veja lista completa das operações de vfs_full_audit:
aio_force |
audit_file |
brl_lock_windows |
brl_unlock_windows |
chdir |
chflags |
chmod |
close |
closedir |
connect |
connectpath |
create_dfs_pathat |
create_file |
disconnect |
disk_free |
durable_cookie |
durable_disconnect |
durable_reconnect |
fallocate |
fchmod |
fchown |
fdopendir |
fget_compression |
fget_dos_attributes |
fget_nt_acl_at |
fgetxattr |
file_id_create |
flistxattr |
fremovexattr |
fs_capabilities |
fsctl |
fset_dos_attributes |
fset_nt_acl |
fsetxattr |
fs_file_id |
fstat |
fsync |
fsync_recv |
fsync_send |
ftruncate |
get_alloc_size |
get_dfs_referrals |
get_dos_attributes |
get_dos_attributes_recv |
get_dos_attributes_send |
getlock |
get_nt_acl |
get_quota |
get_real_filename |
get_shadow_copy_data |
getwd |
getxattr |
getxattrat_recv |
getxattrat_send |
is_offline |
filesystem_sharemode |
lchown |
linkat |
linux_setlease |
listxattr |
lock |
lseek |
lstat |
mkdirat |
mknodat |
ntimes |
offload_read_recv |
offload_read_send |
offload_write_recv |
offload_write_send |
open |
pread |
pread_recv |
pread_send |
pwrite |
pwrite_recv |
pwrite_send |
read |
readdir |
readdir_attr |
readlinkat |
realpath |
recvfile |
removexattr |
renameat |
rewinddir |
seekdir |
sendfile |
set_compression |
set_dos_attributes |
set_offline |
set_quota |
setxattr |
snap_check_path |
snap_create |
snap_delete |
stat |
statvfs |
streaminfo |
strict_lock_check |
symlinkat |
sys_acl_blob_get_fd |
sys_acl_blob_get_file |
sys_acl_get_fd |
sys_acl_get_file |
sys_acl_set_fd |
telldir |
translate_name |
unlinkat |
write |
Os Logs do Samba(Audit e Full Audit) e o rsyslog
Olha as linhas abaixo, veja que temos um facility LOCAL7. Isso diz para o Linux reservar o canal LOCAL7 para os logs de auditoria do samba.
[Documentos] path = /meusArquivos/documentos vfs objects = full_audit full_audit:prefix = %u|%m|%I|%h full_audit:success = linkat unlinkat renameat mkdirat pwrite linkat lock pread pread_send audit_file full_audit:failure = all !open full_audit:facility = LOCAL7 full_audit:priority = ALERT
Vamos criar o arquivo /var/log/samba/samba.log para receber os logs via canal LOCAL7 que reservamos acima.
#1 crie a pasta /var/log/samba
mkdir /var/log/samba/
#2 crie o arquivo samba.log
touch /var/log/samba/samba.log
#3 devemos editar o arquivo /etc/rsyslog.conf e incluir /var/log/samba/samba.log
[root@oracle86 ~]# vim /etc/rsyslog.conf
Acrescente alinha abaixo:
local7.* /var/log/samba/samba.log
#4 nesse momento, os logs de auditoria do samba irão para /var/log/samba/samba.log mas continuarão indo para /var/log/messages. Para fazermos deixar de ir para /var/log/samba/samba.log adicione a seguinte LOCAL7.none dentro de /etc/rsyslog.conf, na linha abaixo:
*.info;mail.none;authpriv.none;cron.none;LOCAL7.none /var/log/messages
#5 reinicie o serviço do rsyslog
[root@oracle86 ~]# systemctl restart rsyslog.service
Outro Exemplo de full_audit
Aqui está outro exemplo de configuração do módulo full_audit no samba:
# Audit settings
full_audit:prefix = %u|%I|%S
full_audit:failure = connect
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
Preste atenção para o facility(canal para onde o log vai) usado é o local5.
Agora podemos ir no /etc/rsyslog.conf e cri uma linha com o conteúdo abaixo que fará que os logs do samba vão para /var/log/samba/auditoria.log
local5.notice /var/log/samba/auditoria.log
Pode ser que os logs não parem de ir para /var/log/messages. Nesse caso siga esse artigo: Samba: Parar os Logs de Auditoria full_audit de Irem para /var/log/messages
Para saber mais sobre syslog veja esse artigo: O que São Facilities, Priorities no RSyslog?
Dica
- Quando as coisas parecem não estar funcionando, reinicie o syslogd ou rsyslogd depois o samba.
Fontes: samba/vfs_audit, samba/vfs_full_audit, samba_log
Comment on “Samba: Gerando Logs de Auditoria com os Módulos audit e full_audit do VFS”