SSH: autenticação de dois fatores

30

Atualmente, tenho um Ubuntu Server 12.04 executando o OpenSSH, juntamente com o Samba e alguns outros serviços. No momento, tenho a autenticação de chave pública configurada e estou pensando se é possível configurar a autenticação de dois fatores? Estive procurando no Google Authenticator, que atualmente uso com minha conta do Gmail.

Eu encontrei um módulo PAM que parece ser compatível, mas parece que você é forçado a usar uma senha e o código gerado.

Gostaria de saber se existe uma maneira de usar o aplicativo Google Authenticator (ou algo semelhante) junto com minha chave pública para autenticar meu servidor SSH?

    
por Concrete Donkey 20.07.2012 / 05:17

7 respostas

8

A Red Hat adicionou um patch ao OpenSSH no RHEL (e, portanto, no CentOS) 6.3 para exigir vários mecanismos de autenticação, para que você possa fazer algo assim:

RequiredAuthentications2 publickey,keyboard-interactive

Veja as notas de lançamento por não muito mais detalhe.

Infelizmente este recurso não parece estar no OpenSSH upstream nem no Ubuntu 12.04, portanto, a menos que você queira encontrar o patch e recompilar o OpenSSH, receio que você esteja sem sorte.

    
por 20.07.2012 / 22:08
8

Você está procurando por Duo Security

    
por 24.07.2012 / 08:00
5

Você pode usar o módulo PAM do Google Authenticator e as chaves públicas, mas apenas um no momento será usado para uma determinada autenticação. Ou seja, se um usuário fizer login com uma chave pública autorizada, nenhum token será necessário.

Ou, para dizer o contrário: os tokens são necessários apenas para autenticações de senha, não chaves SSH.

Essa limitação não vem do módulo Google Authenticator, mas do SSH, que implementa apenas dois fatores de autenticação (via ChallengeResponseAuthentication ) para o PAM, mas não chama o PAM quando uma chave pública válida é fornecida.

    
por 20.07.2012 / 08:43
3

Esta questão é de 2012. Desde então, o SSH mudou e o protocolo SSH2 foi implementado.

Em versões mais recentes do SSH (> = 6.2), man sshd_config menciona:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ''publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

Esta página link também menciona a possibilidade de usar uma publickey e uma autenticação PAM ao mesmo tempo.

    
por 22.05.2014 / 04:47
2

Eu sei que esta pergunta é um pouco obsoleta, mas para o futuro das pessoas (inclusive eu) que estão procurando uma solução, também se fala em usar a opção ForceCommand no arquivo sshd_config para executar um script que então executa a autenticação. Há um exemplo de script aqui que você pode modificar um pouco para o seu precisa, embora nesse exemplo ele o chame do arquivo authorized_keys em vez de torná-lo em todo o sistema com o ForceCommand do sshd_config.

    
por 08.09.2012 / 03:52
1

Obtenha um YubiKey e siga este guia link

AFAIK, essa é a melhor maneira de implementar o Yubikey no seu servidor para acesso SSH. O guia acima permite que você use o código público + yubikey, ao passo que, se você usar o guia oficial ( link ), não funciona com chave pública.

Atenciosamente, Vip

    
por 24.07.2012 / 19:47
0

Se você definir uma frase secreta na sua chave privada, você já terá a autenticação de dois fatores. Para fazer login, as pessoas precisariam:

  1. algo que você tem - sua chave privada
  2. algo que você conhece - a frase secreta da sua chave privada
por 20.07.2012 / 17:24