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
14 respostas
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á,
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
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.
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
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,
Rafael, e seu tutorial é muito bom viu, me ajudou demais…
Vlw Iran! Precisando estamos ai, sempre que possível posto algum conteúdo legal aqui, se inscreva no blog. Abr.
Rafael, muito obrigado pela atenção!!!
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
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,
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.
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.
Legal, Rafael! Muito bom artigo! Está sendo um ótimo ponto de partida pra mim! Desde já, agradeço pelo conteúdo!
Show Alex! A ideia é essa mesmo, compartilhar conhecimento. Abr.