Configurando Auditoria e Lixeira no Samba

Já imaginou em um ambiente corporativo o usuário apagar uma informação de extrema importante e você precisar recuperar sem maiores problemas, ou até mesmo sem recorrer ao backup? Ou então, precisar descobrir quem realizou tal exclusão ou modificou determinado arquivo? Pois é, através deste artigos iremos demostrar como realizar a configuração de auditoria de arquivos e repositório de exclusões “lixeira”, para servidores de arquivos que utilizem o samba.


CONSIDERAÇÃO

Vamos levar em consideração que já possua vivencia com Linux e Samba. Iremos somente demonstrar através deste artigo a utilização das configurações no arquivo de configuração do Samba.


1) AUDITORIA E LIXEIRA.

Para que possamos auditar nosso servidor de arquivos iremos utilizar um recurso do próprio Samba chamado “full_audit” ele serve para registrar operações em formato fixo consistindo em campos separados por ‘|’. Já para armazenamento de exclusões é utilizado o recurso “recycle“. Assim que é realizada uma exclusão o item excluído e encaminhado para uma pasta “lixeira” possibilitando a recuperação imediata.

Em seu arquivo de configuração do Samba, você pode adiciona estas configurações tanto no contexto global, quanto no contexto especifico. Em nosso exemplo irei utilizar em um contexto especifico, vinculando a uma pastar compartilhada.

[FINANCEIRO] 
 comment = Financeiro Compartilhamento. 
 path = /dados/setores/fin 
 writable = no 
 valid users = @dl_t_financeiro, @dl_p_financeiro 
 write list = @dl_t_financeiro 
 browseable = yes 
 create mask = 0660 
 directory mask = 0770 
 force group = @dl_t_financeiro
 veto files = /*.mp3/*.wma/*.avi/*.iso/*.bat/*.exe/*.pif/*.inf/
#AUDITORIA===================================================. 
 vfs objects = full_audit recycle 
 full_audit:facility = LOCAL2 
 full_audit:priority = NOTICE 
 full_audit:prefix = %u|%I|%S 
 full_audit:success = rmdir, mkdir, unlink, read, write, rename, 
 full_audit:failure = none
#LIXEIRA ====================================================. 
 recycle:repository = /dados/lixeira/%U 
 recycle:keeptree = yes 
 recycle:versions = no 
 recycle:exclude = *.tmp, *.temp, *.log, ~*.*, *.bak, .~lock.* 
 recycle:exclude_dir = tmp, temp, cache 
# -----------------------------------------------------------.

Repare que podemos personalizar nossa auditoria com varias outras informações, segue abaixo variáveis disponíveis:

Variáveis referente a máquina cliente da 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

Algumas Samba VFS operations:
none = nenhum.
all = todos (registrar tudo, haja espaço em disco).
mkdir = criar diretório.
rmdir = remover diretório.
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.

Também é possível personalizar nossa “lixeira” definindo alguns parâmetros como por exemplo:

repository: Qual local desejo guardar os arquivos excluídos.
versions: Se desejo versionalizar arquivos excluídos.
keeptree: Se deseja armazenar a estrutura de pastas do arquivo excluído.
touch: Ser deseja alterar a data do arquivo excluído pela data da exclusão.
exclude: Quais extensões não desejo armazenar na lixeira.
exclude_dir: Quais os diretórios que não desejo armazenar na lixeira.


2) CONFIGURANDO RSYSLOG.

Para que nossa auditória possa funcionar, precisamos realizar algumas pequenas configurações no arquivo de configuração do syslog. Vamos criar um novo arquivo dentro de “/etc/rsyslog.d/” chamado “auditsamba.conf“. Neste arquivo vamos informar onde iremos armazenar nossas informações de auditoria.

echo -e "#Logs de auditoria do samba\nlocal2.* /var/log/samba/audit-financeiro.log" auditsamba.conf

Após criado o arquivo precisamos reiniciar o serviço do rsyslog. Para isso, execute o comando conforme ilustrado abaixo

sudo systemctl restart rsyslog

Pronto, nosso compartilhamento já esta sendo auditado, e também os itens excluídos estarão indo para a pasta de lixeira informada.


CONCLUSÃO

Através deste artigo foi possível demonstrar de forma simples e objetiva a configuração de auditoria e armazenamento de exclusão de arquivos com o Samba.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 46 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

14 respostas

  1. Bom dia!
    Achei bem interessante o seu tutorial. Porém, surgiu uma dúvida, pois tenho um server bem antigo(Fedora 14) e não existe o diretório rsyslog.d
    Há uma alternativa?
    Grato desde já,

  2. Ola Rafael, estou usando o samba 4.7.6 no ubuntu 18.04 com DC e File Server, quando eu adiciono os parâmetros de auditoria, eu não consigo mais deletar arquivos dos subdiretório do compartilhamento, o estralho que diretório está removendo. Você já teve algum problema assim após adicionar a auditoria?
    Eu estou usando o windows para setar as permissões de ACL.

    [global]
    dns forwarder = 10.1.1.10
    netbios name = DC03
    realm = TESTE3.BR
    server role = active directory domain controller
    workgroup = TESTE3
    idmap_ldb:use rfc2307 = yes

    log level = 3
    #log file = /var/log/samba/

    ntlm auth = yes

    ldap server require strong auth = no

    #————————— Full Audit Options —————————-
    vfs objects = full_audit
    full_audit:success = mkdir rmdir read pread write pwrite rename unlink
    full_audit:success = rmdir rename
    full_audit:prefix = %u|%I|%m|%S
    full_audit:failure = connect
    full_audit:facility = local5
    full_audit:priority = notice

    log file = /var/log/samba/samba.log

    [netlogon]
    path = /var/lib/samba/sysvol/teste3.br/scripts
    read only = No
    writable = No
    browsable = No

    [sysvol]
    path = /var/lib/samba/sysvol
    read only = No

    [projetos]
    path = /mnt/ST/projetos
    read only = No
    guest ok = No
    writable = yes

    1. Fala Jose Roberto!

      Seguinte, no seu caso pelo visto o problema está relacionado a falta de informação de permissão em seu compartilhamento. Repare no artigo o código do compartilhamento [FINANCEIRO] que disponibilizei, ele possui algumas variáveis que são de fundamental importância. Exemplo: (valid users=”Usuários/Grupos validos para o diretório”, write list=”Usuários/Grupos que podem escrever no diretório, e também o force group=”Grupo padrão para os novos arquivos e diretórios criados”). Sobre não conseguir deletar um determinado arquivo e justamente porque o usuário que esta utilizando não tem permissão e também não faz parte de um grupo que tenha permissão na pasta para fazer tal procedimento. Leve em consideração as permissões da pasta e as informações definidas no arquivo do samba, os dois trabalham juntos. Att.

  3. rafael a lixeira do meu servidor simplesmente parou de funcionar de uma hora pra outra segue as configurações, a auditoria continua funionando normalmente apenas a lixeira que não.

    vfs objects = recycle, full_audit

    ## Auditoria ##

    full_audit:success = write, unlink, rename, mkdir, rmdir, chmod, chown
    full_audit:prefix = %u|%I|%S
    full_audit:failure = none
    full_audit:facility = local5
    full_audit:priority = notice

    ## Lixeira ##

    recycle:repository = /teste/Lixeira/%U
    recycle:directory_mode = 0755
    recycle:subdir_mode = 0755
    recycle:keeptree = Yes
    recycle:versions = Yes
    recycle:noversions = .doc|.xls|.ppt|*.dcl

    #============================ Share Definitions ==============================

    [TESTE]
    comment = TESTE – TESTE
    path = /teste/TESTE
    read only = no
    map acl inherit = Yes
    create mask = 770
    directory mask = 770

    o que pode ter acontecido?

    Samba 4.7.1 CentOS 7

    1. Bom dia Fagner,

      Isso parece problema de permissão, pelo visto o diretório /teste/Lixeira não está acessível para todos os usuários. Provavelmente ao deletar um arquivo o usuário não tem permissão para adicionar esse arquivo a lixeira. De permissão de acesso total a esta pasta, exemplo “chmod -R 777 /teste/Lixeira” e faça um teste. Se for isso, depois corrija a permissão para que somente usuários do domínio tenham acesso a pasta da lixeira.

      Espero ter ajudado. Abr.

      Att,

  4. Rafael, bom dia! Eu consegui fazer com que o OCS Server coletasse as informações do Xen Server 7.1. O único problema que estou encontrando é no momento que executo o ocsinventory-agent –force ele me retorna essa mensagem abaixo que esta me incomodando.

    ocsinventory-agent –force
    Name ID Mem VCPUs State Time(s)
    Domain-0 0 752 4 r—– 4837.0
    libxl: error: libxl.c:7254:libxl_retrieve_domain_configuration: fail to get domain configuration for domain 0

    1. Bom dia Iran, que bom que conseguiu instalar, fico feliz em poder contribuir. O seu erro também acontece aqui no meu ambiente, o OCS realizar a captura dos dados, porém ele não consegue realizar a captura de algumas configurações internas do Xen devido a bloqueio de segurança do próprio Xen. Para os dados básico no qual precisa, referente ao hardware, desconsidere a mensagem. Lembre-se que estamos adaptando uma solução a um produto pronto, e só conseguimos realizar a instalação do OCS porque o Xen é baseado em Linux. Att,

  5. Rafael, boa tarde! Estou tentando seguir o seu post sobre instalar o agent do ocs inventory no xen server, e estou encontrando o seguinte erro ao executar o seguinte comando: ocsinventory-agent –force

    RETORNO:
    Name ID Mem VCPUs State Time(s)
    Domain-0 0 752 4 r—– 41.2
    libxl: error: libxl.c:6661:libxl_retrieve_domain_configuration: fail to get domain configuration for domain 0

    Poderia me informar o que pode ser? Fico no aguardo.

    1. Bom dia Iran, tudo bom?

      Você acabou postando a pergunta no artigo errado, mas vamos lá.
      A versão do Xen que utilizei no tutorial foi a versão 7.0, qual versão esta utilizando? Você já realizou todos os passos de instalação do OCS? Não consegui reproduzir este seu erro, sugiro pesquisar sobre ele, vi algumas informações no forum de discussão da Citrix. Caso encontre solução para seu erro postarei no artigo que ficou com dúvida, abr.

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!