Acesso SSH temporário para SFTP

1

Eu tenho um servidor doméstico que hospeda arquivos compartilhados para um conjunto de usuários. Ao adicionar novos usuários, eu (no passado) configuro contas de usuários que pertencem a um grupo "apenas SFTP" que faz chroots para o diretório compartilhado (usando o sshd_config). Uma pasta pessoal é criada para eles, na qual apenas eles podem gravar e contém um arquivo authorized_keys usado para autenticação de chave privada. Eu crio o par de chaves pública / privada no meu servidor como parte do processo de criação do usuário e escrevo a chave pública em seu arquivo authorized_keys (no meu servidor) e envio a chave privada (juntamente com uma mensagem de boas vindas contendo instruções e informações úteis) para que eles possam se conectar.

Sei que, ao fazer isso, estou anulando o propósito de usar as chaves, pois a chave privada está sendo enviada por e-mail e eu, como administrador, tenho uma cópia (e posso representar o usuário). Agora, embora a segurança não seja particularmente importante nesse exemplo, gostaria de fazer as coisas corretamente e espero que essa pergunta e quaisquer respostas fornecidas ajudem alguém que precise melhorar a segurança dessa maneira.

Minha solução ideal é fornecer uma chave privada para o usuário por e-mail (por meu método anterior) que expirará após o período "X" (provavelmente alguns dias), quando a chave ficará inutilizável. Neste período, espera-se que o usuário substitua a chave pública / privada fornecida com a sua própria, o que é necessário por causa da chave de expiração automática. Desta forma, eu posso facilmente configurar uma conta de usuário que alguém pode acessar sem:

  • Permitir autenticação de senha por SSH (o que também exigiria uma senha e acesso à shell para alterar essa senha)
  • A solicitação de uma chave pública é fornecida com antecedência (isso impediria os usuários de se inscreverem e dificulta a automatização do processo).
  • Continuando com minha prática atual.

Os usuários teriam a oportunidade de obter seu próprio conjunto de chaves privado / público e substituir o conteúdo do arquivo authorized_keys por sua própria chave pública.

Eu deparei com este artigo que explica como acesso temporário pode ser fornecido por ssh com chaves públicas assinadas. Passei muito tempo investigando isso, mas não consegui fazê-lo funcionar e não entendi o que parece ser um conceito central - clientes (usuários) recebem a chave pública certificada. Não entendo como o processo de login / autorização é concluído com a chave pública? A maioria dos guias chega àquela parte e apenas nota que a chave pública é fornecida ao usuário para 'logar' e não elaborar mais. Isso é algo que só pode ser feito com SSH e não com SFTP? Ao autorizar no filezilla, por exemplo, posso fornecer uma chave privada, mas não pública. Pesquisa adicional parece indicar que este método (509x ??) exigirá configuração do lado do cliente (e é mais uma solução corporativa) e, portanto, pode não ser o que estou procurando (pois isso será muito complicado para a maioria dos meus usuários) .

Existe alguma solução simples para a minha pergunta, eu perdi um passo crítico ou entendi mal alguma coisa? Agradecemos antecipadamente por qualquer ajuda que você possa fornecer.

    
por lelliottbateman 29.06.2018 / 03:03

1 resposta

0

Certificados OpenSSH temporários são a solução que eu também recomendaria para suas necessidades. Eu não tentei isso com o SFTP eu mesmo ainda.

Principalmente, você assina a chave pública do usuário com a chave privada de um SSH-CA, adicionando mais alguns metadados, como o período de validade.

Em seguida, no seu servidor SFTP, você armazena a chave pública do SSH-CA e consulta esse arquivo com a diretiva de configuração TrustedUserCAKeys . Com essa chave pública do SSH-CA, o servidor valida o certificado OpenSSH do usuário durante o login. Não é mais necessário distribuir chaves autorizadas para os servidores e removê-las após o período de validade.

    
por 21.07.2018 / 14:47