Como montar um diretório eCryptfs no acesso ao samba?

0

Ambiente

Estou executando um servidor Ubuntu 16.04 com o eCryptfs e o samba.

O usuário bob criou uma pasta privada criptografada via ecryptfs-setup-private . A frase secreta de encapsulamento coincide com a frase secreta de login do Linux. Quando bob conecta via SSH, sua pasta privada é descriptografada automaticamente. Usuário bob tem acesso samba ao seu diretório home. As credenciais do samba correspondem às credenciais de login do Linux.

A configuração do PAM contém as entradas padrão (criadas pelo Ubuntu e eCryptfs). /etc/fstab não contém entradas específicas para o eCryptfs.

Problema

Quando bob acessa sua pasta privada via samba de um cliente Windows, sua pasta privada não é descriptografada. O log do servidor samba ( /var/log/samba/some-client.log ) contém

Signature not found in user keyring
Perhaps try the interactive 'ecryptfs-mount-private'

Investigação adicional

A mesma mensagem ocorre quando bob abre um shell via sudo ; isso não ocorre quando bob abre um shell via su . Aparentemente, o chaveiro de sessão do usuário possui um conteúdo diferente dependendo do método de login:

$ su -c 'keyctl show @s' bob
Keyring
 887339582 --alswrv   1000 65534  keyring: _uid_ses.1000
 797923857 --alswrv   1000 65534   \_ keyring: _uid.1000
 523913245 --alswrv   1000  1000       \_ user: 363f394f32249cc4
 840141489 --alswrv   1000  1000       \_ user: 905f555cf7fd10e0

$ sudo -i -H -u bob -- keyctl show @s
Signature not found in user keyring
Perhaps try the interactive 'ecryptfs-mount-private'
Keyring
 887339582 --alswrv   1000 65534  keyring: _uid_ses.1000
 797923857 --alswrv   1000 65534   \_ keyring: _uid.1000

Parece que as credenciais de login estão ausentes no chaveiro ao usar sudo .

Suponho que quando eu encontrar uma solução para o caso sudo , ele pode ser aplicado ao problema do samba.

Eu tentei alterar /etc/pam.d/sudo para o conteúdo de /etc/pam.d/su , mas não teve efeito. Eu li sobre ecryptfs-add-passphrase e pam_cifscreds , mas não sei se e como um deles poderia ser útil aqui. Eu naveguei pelos wikis do ubuntuusers.de e do Arch Linux, encontrei várias perguntas no StackOverflow e no unix.stackexchange.com (referências são omitidas devido à baixa reputação), mas ainda não encontrei uma solução.

  1. O que é necessário para o eCryptfs usar as credenciais de login no sudo case?
  2. O que é necessário para o eCryptfs usar as credenciais de login no caso do samba?
por Christian 16.08.2017 / 19:21

2 respostas

0

Depois de mais investigações posso responder a pergunta por mim mesmo: é não é possível usar sudo ou credenciais de samba para descriptografar automaticamente uma pasta privada de eCryptfs no login porque a senha é desconhecida em ambos os casos .

1) sudo

Vamos supor que o usuário alice chama sudo -u bob . Alice não precisa da senha de Bob para isso; ela usa sua própria senha. Assim, a senha de Bob não é conhecida e não pode ser adicionada ao chaveiro do usuário ou usada pelo eCryptfs. Essa é uma diferença para su , que requer a senha de bob. Portanto, é possível montar automaticamente uma pasta eCryptfs com su , mas não com sudo .

2.) Samba

Minha observação foi que as credenciais de login estão faltando no chaveiro de sessão do usuário. Eu pensei que talvez o samba não os adicione por padrão, então eu procurei uma maneira de fazer isso manualmente.

Depois de um pouco de pesquisa, descobri que o módulo PAM pam_cifscreds , que pode ser usado para fornecer credenciais de usuário ao kernel, soa bem. Eu adicionei pam_cifscreds.so aos dois recursos do PAM auth (para armazenar a senha no chaveiro) e session , mas não tive sorte. Com o conjunto de argumentos debug , a chamada session escreveu a mensagem no stored password found no log; a chamada auth não estava visível.

Mais pesquisas me levam a outro módulo PAM pam_script e seu arquivo de exemplo logscript , que pode ser usado para rastrear chamadas PAM. Ele revelou que o recurso session é chamado em cada cliente samba, mas o recurso auth não é. Então, encontrei este parágrafo na smb.conf Configuração do PAM :

% bl0ck_qu0te%

Atualmente, um cliente samba não envia a senha em texto simples, mas um valor de hash para o servidor. Assim, o servidor não tem acesso à senha e não pode adicioná-lo ao chaveiro.

Provavelmente é possível alterar a configuração do samba para permitir senhas em texto puro, mas eu não quero isso e, portanto, não tentei.

Conclusão

Minha idéia de descriptografia transparente do lado do servidor baseada em credenciais de login do samba não é possível, porque a senha está faltando no servidor.

Pode haver outra opção como solução alternativa: se os eCryptfs não usassem um único arquivo wrapped-passphrase , mas um por tipo de login (por exemplo, senha UNIX, Samba, certificado SSH, ...), a senha de montagem poderia ser desembrulhada dependendo no login. Mas, como implementar essa ideia parece bastante complicado e demorado para mim, não irei acompanhá-la ainda mais.

    
por Christian 21.08.2017 / 08:57
1

Este é um bug de longa data

link

% bl0ck_qu0te%

Solução alternativa - use sshfs: link

Outras opções: Arquive um relatório de erros re: sudo / su, se desejar.

    
por Panther 16.08.2017 / 19:47