Tornando um Servidor de Arquivos e Impressoras Samba mais seguro

Modos de Segurança do Samba

Existem dois níveis de segurança disponíveis para o protocolo de rede CIFS - Common Internet Filesystem, user-level e share-level. A implementação security mode do Samba permite mais flexibilidade, oferecendo quatro maneiras de implementar segurança em nível de usu[ario e uma maneira de implementar nível de compartilhamento:

  • security = user: requer que os clientes forneçam usuário e senha para conectar aos compartilhamentos. COntas de usuário do Samba são separadas das contas do sistema, mas o pacote libpam-smbpass irá sincronizar os usuários e senhas do sistema com o banco de dados de usuários do Samba.

  • security = domain: este modo permite que o servidor Samba apareça para os clientes Windows como um Primary Domain Controller (PDC), Backup Domain Controller (BDC), ou um Domain Member Server (DMS). Veja the section called “Samba como um Controlador de Domínio” para mais informações.

  • security = ADS: permite que o servidor Samba seja adicionado a um domínio do Active Directory como um membro nativo. Veja the section called “Samba Integração do Active Directory” para detalhes.

  • security = server: este modo é de antes do Samba poder tornar-se um servidor membro, e, devido à segurança, não deve ser utilizado. Veja a seção Segurança de Servidor do guia do Samba para maiores detalhes.

  • security = share: permite que clientes se conectem a compartilhamentos sem informar um usuário e senha.

O modo de segurança a ser utilizado depende do ambiente que o servidor samba precisa criar.

Security = User

Nesta seção, vamos reconfigurar o servidor de arquivos e impressão Samba, à partir do the section called “Servidor de arquivos samba” e para solicitar autenticação.

Primeiro, instale o pacote libpam-smbpass que irá sincronizar os usuáriuos do sistema com os usuários do banco de dados do Samba:

sudo apt-get install libpam-smbpass

Note

Se o Samba Server foi escolhido durante a instalação, a libpam-smbpass já está instalada.

Edite /etc/samba/smb.conf, e na seção [share] mude:

guest ok = no

Finalmente, reinicialize o Samba para que as novas configurações entrem em efeito:

sudo /etc/init.d/samba restart

Agora, ao tentar conectar aos diretórios os impressoras compartilhadas, será solicitado um nome de usuário e senha.

Note

Para mapear um driver de para o compartilhamento, com “Reconectar durante o Logon” habilitado, será solicitado o nome de usuário e senha apenas uma vez, até que as credenciais sejam alteradas.

Segurança de compartilhamento

Existem diversas opções disponíveis para aumentar a segurança para cada diretório compartilhado. Usanso o exemplo [share], esta seção irá abordar algumas opções comuns.

Grupos

Os grupos definem um conjunto de computadores ou usuários que têm um nível de acesso comum aos recursos de uma rede particular e oferecem um nível variado no controle a tais recursos. Por exemplo, se um grupo qa é definifo e contém os usuários freda, danika, e rob e um segundo grupo support é definido e consiste dos usuários danika, jeremy, e vincent, então determinados recursos da rede estão configurados para permitir o acesso ao grupo qa que consequentemente irá permitir o acesso à freda, danika, e rob, mas não ao jeremy ou vincent. Uma vez que o usuário danika pertence a ambos dos grupos qa e support, ela será capaz de acessar os recursos configurados por ambos dos grupos, enquanto todos os outros usuários terão acesso somente aos recursos explícitamente permitidos ao grupo que pertencem.

Por padrão, o Samba procura pelos grupos do sistema local, definidos em /etc/group para determianr quais usuários pertencem a quais grupos. Para maiores informações sobre adicionar ou remover usuários dos grupos, veja ulink type="help" url="help:/kubuntu/basics/"> Básico

Ao definir grupos no arquivo de configuração do Samba, /etc/samba/smb.conf, a sintaxe reconhecida é prefaciar o nome do grupo com um símbolo "@". Por exemplo, ao definir um grupo chamado sysadmin numa certa seção do /etc/samba/smb.conf, o nome do grupo pode ser adicionado como @sysadmin.

Permissões de arquivo

As Permissões de Arquivos definem direitos específicos que um computador ou usuário possui em determinado diretório, arquivo ou conjunto de arquivos. Tais permissões devem ser definidas editando o arquivo /etc/samba/smb.conf e especificando as permissões explícitas de um compartilhamento.

Por exemplo, para um compartilhamento definido do Samba chamado share com a necessidade de dar permissões read-only ao grupo de usuários conhecido como qa, enquanto concede-se permissões de escrita no compartilhamento ao grupo chamado sysadmin e o usuário chamado vincent, o arquivo /etc/samba/smb.conf precisa ser editado e ter adicionado as seguintes entradas sob a entrada[share] :

read list = @qa
write list = @sysadmin, vincent

Outra possibilidade de permissão do Samba é declarar permissões administrative para um recurso compartilhado particular. Usuários com permissões administrativas podem ler, escrever e modificar qualquer informação contida no recurso aonde ao usuário foram dadas explícitas permissões administrativas.

Por exemplo, para dar à usuária melissa permissões administrativas ao share exemplo, o arquivo /etc/samba/smb.conf precisaria ser editado para adicionar a esta linha sob a entrada [share] :

admin users = melissa

Após editar /etc/samba/smb.conf, reinicialize o Samba para que as alterações tenham efeito:

sudo /etc/init.d/samba restart

Note

Para que as opções read list e write list funcionem, o modo de segurança do Samba não pode estar definido como security = share

Agora que o Samba foi configurado para limitar quais grupos possuem acesso ao diretório compartilhado, as permissões do sistema de arquivos devem ser atualizadas.

Permissões de arquivos tradicionais do Linux não mapeiam bem as Listas de Controle de Acesso do Windows NT (ACLs). Afortunadamente POSIX ACLs estão disponíveis em servidores Kubuntu oferecendo maior controle granulado. For exemplo, para habilitar ACLs num sistema de arquivos EXT3 /srv, edite /etc/fstab adicionando a opçãoacl :

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0 
    1

Então remonte a partição:

sudo mount -v -o remount /srv

Note

O exposto acima assume /srv numa partição separada. Se /srv, ou onde quer que o caminho de compartilhamento está configurado, é parte da partição /, uma reinicialização pode ser necessária.

Para obter a configuração do Samba acima, o grupo sysadmin deve ter permissões de leitura, escrita e execução em /srv/samba/share, o grupo qa deve ter permissões de leitura e execução, e os arquivos devem pertencer ao usuário melissa. Digite o seguinte no terminal:

sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmins /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/

Note

O comando setfacl acima dá permissões para executar todos os arquivos no diretório /srv/samba/share, que pode ou não ser desejado.

Um cliente Windows irá mostrar que as novas permissões de arquivo estão implementadas. Veja as páginas de manual de acl e setfacl para maiores informações sobre ACLs POSIX.

Perfil Samba AppArmor

Kubuntu vem com o módulo de segurança AppArmor, que provê controles de acesso obrigatórios. O perfil padrão do AppArmor para Samba precisará se adaptado à uma configuração adequada. Para maiores detalhes sobre a utilização do AppArmor, por favor, veja este wiki

Existem perfis AppArmor padrões para /usr/sbin/smbd e /usr/sbin/nmbd, os binários daemon do Samba, como parte dos pacotes apparmor-profiles. Para instalar um pacote, do prompt do terminal, digite:

sudo apt-get install apparmor-profiles

Note

Este pacote contém perfis para diversos outros binários.

Por padrão, os perfis para smbd e nmbd estão no modo complain, permitindo ao Samba operar sem modificação do perfil. apenas registrando os erros. Para colocar o perfil de smbd no modo enforce e fazer com que Samba funcione como esperado, o perfil terá que ser modificado para refletir quaisquer diretórios que estejam compartilhados.

Edite /etc/apparmor.d/usr.sbin.smbd, adicionando a informação em [share] para um exemplo de servidor de arquivos:

/srv/samba/share/ r,
/srv/samba/share/** rwkix,

Agora coloque o perfil em valer e recarregue-o:

sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

Agora é possível ler, escrever e executar arquivos em um diretório compartilhado de forma normal, e o binário smbd terá acesso somente aos arquivos e diretórios configurados. Tenha certeza de adicionar entradas para cada diretório que o Samba está configurado para compartilhar. Quaisquer erros serão escritos em /var/log/syslog.

Recursos