Dicas Básicas de Segurança para File Servers Samba.
O samba é um serviço/servidor que permite o compartilhamento de arquivos e impressoras através de diferentes plataformas como Windows, Linux e até mesmo Android, IOS, Mac OS dependendo do suporte. Você pode aprender a instalá-lo aqui.
Arquivos criados com permissões no Samba
No samba é possível determinar a máscara de permissão dos arquivos e diretórios criados dentro do compartilhamento. Você pode definir com qual tipo de permissão 777, 775, 700 os arquivos serão criados.
No smb.conf basta adicionar o Create Mask e o Directory Mask
Exemplo:
#Compartilhamento de Teste
[Chaves VPN]
path = /etc/openvpn/
guest ok = Yes
create mask = 0755
directory mask = 0755
Agora todos arquivos e pastas criados por usuários dentro do compartilhamento serão criados com a mascara de permissão 755.
No caso de você ter uma pasta Público dentro da sua rede para troca de informações, você pode criá-la com permissão 777 pra todo mundo.
#Compartilhamento PúblicoVocê pode se deparar com aplicações que criam arquivos com permissões diferentes das propostas pela máscara, é normal, e você pode resolver isso colocando o parâmetro force create mask :
[Público]
path = /data/publico
guest ok = Yes
create mask = 0777
directory mask = 0777
force create mask = 0777
force directory mask - 0777
Autenticação por usuário e senha no compartilhamento.
Criando usuáriosAntes de mais nada, o usuário samba deverá estar cadastrado como um user do servidor, então...
# adduser usuario
Ou caso queira criar o user sem diretório home:
# adduser usuario --no-create-home
A partir daí, para criar o usuário no Samba:
# smbpasswd -a usuario
Caso tenha a necessidade de excluir para excluir:
# smbpasswd -x usuario
Nota: é sempre aconselhável criar senhas fortes para os usuários do servidor, ainda mais se você utilizar de algum serviço de VPN ou possuir algum tipo de acesso externo. Saiba como criar senhas fortes no Linux aqui.
no meu caso eu adicionei o usuário "thor"
No smb.conf adicione a linha valid users
#Compartilhamento de TestePara negar um usuário é só utilizar o parâmetro invalid users = usuario
[Chaves VPN]
path = /etc/openvpn/
guest ok = Yes
valid users = thor
O resultado ao tentar acessar é o seguinte:
Permissão de Acesso via Grupos
Existe uma outra opção bem mais bacana, em que você cria um grupo, adiciona os usuários que você dezeja liberar nele e coloca como valid users o grupo.
# groupadd financeiro
# adduser --no-create-home jose
# adduser --no-create-home maria
# adduser --no-create-home joao
# smbpasswd -a jose
# smbpasswd -a maria
# smbpasswd -a joao
# adduser jose financeiro
# adduser maria financeiro
# adduser joao financeiro
Agora no smb.conf
#Compartilhamento de Teste
[Financeiro]
path = /data/financeiro
guest ok = Yes
valid users = @financeiro
[Financeiro]
path = /data/financeiro
guest ok = Yes
valid users = @financeiro
Permissões de Leitura e Escrita
Você também pode adicionar estes parâmetros extras na configuração.
read only = yes/no // Define se o diretório é somente leitura
read list=usuario,usuario,usuario // Define a lista de usuários que só tem permissão de leitura
write list = usuario,usuario,usuario // Define a lista de usuários que tem permissão de escrita.
browseable = yes/no // Define se o diretório será visível ou oculto na rede.
read list=usuario,usuario,usuario // Define a lista de usuários que só tem permissão de leitura
write list = usuario,usuario,usuario // Define a lista de usuários que tem permissão de escrita.
browseable = yes/no // Define se o diretório será visível ou oculto na rede.
Liberando apenas alguns IPs para o compartilhamento
Permitindo o acesso somente para determinados IP's
Para determinar quais máquinas da sua rede vão ter permissão para acessar seu compartilhamento, você poderá utilizar o parâmetro hosts allow
#Compartilhamento de Teste
[Chaves VPN]
path = /etc/openvpn/
guest ok = Yes
hosts allow = 192.168.0.201, 102.168.0.203, 192.168.0.204
Neste caso, o samba só irá deixar passar os acessos que vierem das máquinas com os IP's 192.168.0.201, 102.168.0.203, 192.168.0.204. Não é uma medida tão segura, pois qualquer usuário que tiver certas informações consegue alterar seu próprio IP e acessar as configurações do compartilhamento. Mas combinado com outras técnicas de hardening como a de usuário e senha é possível criar uma segunda camada de segurança, permitindo o acesso via usuário e senha somente de máquina X.
Habilitando a Lixeira do servidor
É comum algum usuário excluir algo sem querer ou até propositalmente em determinadas circunstâncias, portanto é sempre bom deixar essa função ativada nos shares do Samba. Vai por mim. Experiência própria.vfs objects = recycle:keeptree=True
Vou criar a lixeira no diretório media
# mkdir /media/trash
e assim ficando: ficando
#Compartilhamento com Lixeira
[Chaves VPN]
path = /etc/openvpn/
guest ok = Yes
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = media/trash/%S/
recycle:exclude = *.tmp, *.log, *.obj
recycle:exclude_dir = tmp, cache
Habilitando essa função dentro das configurações do Servidor, é possível acessá-la no diretório /media/trash
Você pode acessar manualmente e recuperar algum arquivo caso queira, mas uma coisa bem legal ainda e que pode ajudar bastante é criar um compartilhamento pra ela.
#Lixeira do Servidor
[Lixeira Servidor]
path = /media/trash
guest ok = Yes
:)
Excelente artigo, teria algo parecido para solução de bilhetagem de impressora, algo tipo que o usuário precise fazer login e senha para imprimir com quotas de impressão? Já testei alguns sem sucesso...IBQUOTA e o Curupira da Caixa, mas são baseados em artigos de 2006. Obrigado e grande abraço!
ResponderExcluirCara, eu não nunca utilizei nem conheço nenhuma solução do tipo, mas creio que haja algo relacionado ao Samba. Vou dar uma procurada e quem sabe criar um novo artigo sobre. Muito obrigado elo comentário, Sérgio!!
ExcluirParabéns realmente essas funcionalidades do smb.conf ajudam e muito quando se faz o servidor na mão, eu mesmo já usei muito (e as vezes até hoje uso em meus desktops). Porem por facilidade de gerenciamento para empresas e clientes tenho usado algum tipo de ferramenta com gerenciamento web de preferência para fazer esse trabalho como o Zentyal.
ResponderExcluirPorem o fazer na mão antes já me ajudou e MUITO na hora de debugar o porque de a permissão que tinha colocado não estar funcionando como deveria (geralmente por erro de lógica).
Parabéns pelo ótimo artigo. =)
Obrigado Tácio!! O Zentyal é uma solução muito bacana mesmo!
ExcluirClaro e objetivo, muito bom! Parabéns!
ResponderExcluirMuito útil o artigo, aliás, o site todo foi um achado pra mim. Adicionaria permissões com chown -R root:users nos diretórios do smb.conf. Obrigado pelas dicas.
ResponderExcluir