Hardening Básico em Servidores Samba

Share:

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úblico
  [Público]
     path = /data/publico
     guest ok = Yes
     create mask = 0777
     directory mask = 0777
Você 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 :

force create mask = 0777
force directory mask - 0777

Autenticação por usuário e senha no compartilhamento.

Criando usuários
Antes 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 Teste
  [Chaves VPN]
     path = /etc/openvpn/
     guest ok = Yes
     valid users = thor
Para negar um usuário é só utilizar o parâmetro invalid users = usuario

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


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.

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


:)

6 comentários:

  1. 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!

    ResponderExcluir
    Respostas
    1. Cara, 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!!

      Excluir
  2. Parabé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.

    Porem 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. =)

    ResponderExcluir
    Respostas
    1. Obrigado Tácio!! O Zentyal é uma solução muito bacana mesmo!

      Excluir
  3. Claro e objetivo, muito bom! Parabéns!

    ResponderExcluir
  4. Muito ú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