Public-Key -or- Senha e Google Authenticator para SSH Login

3

Eu encontrei um artigo ( link ) que explica como configurar o OpenSSH para solicitar um código do Google Authenticator após um login bem-sucedido.

É possível configurar o OpenSSH para que aconteça o seguinte:

  • Se o usuário tiver a chave privada correta para efetuar login no servidor, registre o usuário.
  • Se o usuário não tiver uma chave privada com permissão para fazer login no servidor, peça ao usuário a senha da conta E para um código do Google Authenticator.

Isso seria conveniente (já que em meus computadores eu precisaria apenas da chave privada) e segura (já que eu poderia deixar a autenticação por senha ativada e segura).

Existe alguma maneira de realizar o que eu quero?

Obrigado antecipadamente. :)

    
por EduAlm 14.05.2014 / 03:54

2 respostas

5

É definitivamente possível configurar um sshd para exigir que ou um par de chaves válido ou use HOTP (nova senha única (OTP) em cada solicitação) OATH com base em autenticação - estou fazendo isso. Tenho quase certeza de que o Google Authenticator é apenas outra implementação da OATH.

Meu artigo completo pode ser lido no link , mas o resultado é:

Supondo que seu sshd já esteja configurado para permitir autenticação baseada em chave pública (a maioria é), adicione essas duas linhas a sshd_config :

PasswordAuthentication no
ChallengeResponseAuthentication yes 

Instale pam_auth (sendo esta a maneira orientada pelo CentOS, para x86_64):

yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/

Faça o arquivo de autenticação /etc/users.oath , modo 600 , proprietário root:root e preencha-o com linhas como:

#type   username        pin     start seed
HOTP    fred            -       123a567890123b567890123c567890123d567890

Edite /etc/pam.d/sshd e adicione a linha

auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8 

Ignore o digits=8 se estiver satisfeito com HOTP OATH de 6 dígitos. Eu acredito que um método similar pode ser usado para TOTP OATH (new OTP a cada n segundos), mas eu estou usando tokens OATH de hardware ao invés de software, e eles são yubikeys, que fazem apenas HOTP OATH .

O único problema é que, quando você executa ssh sem apresentar uma chave válida, ele solicita o código OATH antes da senha. Eu não poderia fazer o trabalho ao contrário, mas decidi que não me importava tanto assim; os prompts deixam bem claro qual token está sendo solicitado.

    
por 14.05.2014 / 09:27
2

Você precisa anexar:

AuthenticationMethods publickey keyboard-interactive

sem vírgula entre publickey e keyboard-interactive to /etc/ssh/sshd_config . Todas as outras configurações não precisam ser alteradas (desde que a configuração seja igual ao tutorial howtogeek fornecido).

    
por 08.11.2015 / 19:53