Debian: Como detectar quando o usuário se conecta pela primeira vez com o SFTP?

1

Estou tentando configurar o seguinte: Permitir acesso a um servidor sftp do OpenSSH somente por meio de chaves ssh, ou seja, nenhuma autenticação de senha é permitida. Chaves SSH são geradas automaticamente no servidor. O servidor deve ser usado como um servidor de hospedagem na web, com um usuário por site. Apenas o acesso sftp é permitido para esses usuários, sem shell.

Para que novos usuários possam recuperar suas chaves via sftp, permitimos que eles efetuem login pela senha na primeira vez (somente na primeira vez!). A senha é enviada por SMS e cada novo usuário tem um tempo limitado para se conectar e obter as chaves. Após a primeira conexão bem-sucedida, o acesso por senha é desativado e somente o acesso baseado em chave é permitido para esse usuário.

Já configurei todas as etapas deste fluxo de trabalho, exceto uma: como faço para detectar quando um novo usuário se conecta pela primeira vez via sftp? Existe algum método elegante além de analisar os logs?

    
por Erion 31.01.2014 / 22:58

2 respostas

1

Posso pensar em mais duas maneiras do que analisar os registros.

  1. Instale o incron. Você pode então criar um script para executar quando um arquivo é lido e fechado. Esse script pode bloquear o acesso por senha, etc.
  2. Use OTP (senhas de uma vez). Esta é uma solução perfeita. link

Eu escolheria o # 2, mas o # 1 pode ser útil se as coisas ficarem mais complicadas.

    
por 01.02.2014 / 03:42
0

Respondendo a minha própria pergunta para apontar outro método que não requer nenhum software extra instalado: o módulo PAM pam_exec. Eu tenho a inspiração de aqui (pergunta semelhante, contexto diferente): No meu caso, faz sentido colocar

auth    optional     pam_exec.so /path/to/command

no arquivo /etc/pam.d/ssh. Isso é executado somente quando o ssh / sftp faz autenticação de senha, não quando faz autenticação baseada em chave. O comando em / path / to / command pode então

  • atribui o usuário a um grupo que só pode fazer autenticação baseada em chave (diretiva MatchGroup em sshd_config).

OR

  • adicione o nome de usuário a um arquivo de texto simples. Se você colocar "auth required pam_listfile.so item = usuário sense = deny file = / caminho / para / texto / arquivo" em /etc/pam.d/ssh, o módulo pam_listfile terá o cuidado de rejeitar esse usuário na próxima vez.

Para excelentes tutoriais sobre o PAM, incluindo os dois módulos que menciono, consulte os links a seguir:

link

link

    
por 03.02.2014 / 00:20

Tags