Como posso usar um gerador de senha para autenticação de logins remotos?

54

Eu gostaria de reforçar a autenticação dos meus logins SSH adicionando outro fator: um dispositivo gerador de senha, ou um aplicativo de geração de senha no meu celular. As únicas opções óbvias na configuração padrão são uma senha fixa e um par de chaves. Como posso fazer isso?

(Se eu usar uma senha e um gerador de senhas, isso fornecerá autenticação de dois fatores (2FA): a senha é “o que eu sei” e a senha é “o que eu tenho”.)

    
por Jorge Castro 05.07.2012 / 00:00

3 respostas

49

Uma maneira de fazer isso é com uma ferramenta fornecida pelo Google chamada Google Authenticator .

  1. Instale o libpam-google-authenticator

    • ou apenas sudo apt-get install libpam-google-authenticator
  2. Edite /etc/pam.d/sshd para incluir o módulo:

    • sudoedit /etc/pam.d/sshd
    • e, em seguida, inclua esta linha no topo do arquivo e salve:

      auth required pam_google_authenticator.so
      
  3. Edite seu arquivo de configuração do SSH para ativar o desafio:

    • sudoedit /etc/ssh/sshd_config e, em seguida, altere a autenticação de resposta de:

      ChallengeResponseAuthentication no 
      

      para

      ChallengeResponseAuthentication yes
      

      e salve o arquivo.

  4. sudo restart ssh para reiniciar o SSH

  5. Executar google-authenticator

    • Isso fornecerá sua chave secreta, código de verificação e códigos de risco de emergência. Ele também fará algumas perguntas sobre limitação de taxa.

Aplicativos para celular:

Você precisará de um desses para receber o código de autenticação em outro dispositivo.

Relacionado e útil:

  • A maior parte dessa resposta é derivada de este post de blog da Jean-Francois Theroux, mas atualizado.
  • Wiki do Google Authenticator
  • link
  • link
  • No meu entender, se você estiver usando logins sem senha via chaves SSH que você só pode fazer um ou outro, veja esta pergunta: Como posso configurar o login SSH sem senha?
  • E se você estiver usando o Puppet, há um módulo de fantoches aqui: link
  • Veja a resposta de Maarten e faça um link para a questão do github sobre por que você precisa adicionar a linha .so na parte superior da configuração do seu pam: link

Note que combinar uma senha com senhas de uso único é a autenticação de dois fatores: ela combina "o que você sabe" (uma senha) com "o que você tem" (o dispositivo gerador de senha). Por outro lado, se você combinar senhas de uso único com um par de chaves SSH, é tudo sobre "o que você tem". Quando dois fatores de autenticação são do mesmo tipo, você não possui autenticação de dois fatores; às vezes isso é chamado de "autenticação de um fator e meio".

    
por Jorge Castro 05.07.2012 / 00:00
12

O Google Authenticator é adequado para seus servidores pessoais, mas você pode descobrir que não combina bem com sua infraestrutura de identidade existente. Se você quiser explorar outras opções, pense em usar o RADIUS como um protocolo de autenticação e o plugin pam-radius. Todos os sistemas de autenticação de dois fatores orientados para a empresa suportam raio. Nós escrevemos um documento sobre como adicionar Autenticação de dois fatores WiKID via pam-radius para o Ubuntu .

O uso do radius permite vincular outros sistemas além do SSH ao mesmo servidor de autenticação. Você também pode rotear solicitações de autenticação por meio do freeradius para o LDAP e, em seguida, para o seu servidor 2FA para separar a autorização da autenticação. Você pode fazer o mesmo com o AD btw.

    
por nowen 05.07.2012 / 15:47
1

Recomendo a todos que coloquem a seguinte linha no topo e não na parte inferior de /etc/pam.d/sshd , conforme descrito anteriormente (agora corrigido):

auth required pam_google_authenticator.so

Caso contrário, seu sistema permanecerá aberto a ataques de força bruta em sua senha, comprometendo a primeira parte da autenticação de dois fatores: sua senha.

Você será solicitado primeiro pelo seu código de verificação e, em seguida, pela sua senha (independentemente de o código estar correto). Se um deles estiver errado, você precisa digitar os dois novamente. Você pode configurá-lo ao contrário, mas é uma mudança um pouco mais difícil de descrever na configuração sshd atual do ubuntu (15.04).

Para mais detalhes, verifique este problema:

link

    
por Maarten 02.09.2015 / 10:56