Encontrei um artigo (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/) 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 fazer login no servidor, faça login do 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 um código do Google Authenticator.
Isso seria conveniente (já que em meus computadores eu só precisaria da chave privada) e seguro (já que poderia deixar a autenticação por senha habilitada e segura).
Existe alguma maneira de realizar o que eu quero?
Desde já, obrigado. :)
Responder1
É definitivamente possível configurar um sshd
para exigirqualquerum par de chaves válidoouuse HOTP (nova senha de uso único (OTP) em cada solicitação) Autenticação baseada em OATH - estou fazendo isso. Tenho quase certeza de que o Google Authenticator é apenas mais uma implementação do OATH.
Meu artigo completo pode ser lido emhttp://www.teaparty.net/technotes/yubikey-oath.html, mas o resultado é:
Supondo que você sshd
já esteja configurado para permitir autenticação baseada em chave pública (a maioria está), adicione estas duas linhas a sshd_config
:
PasswordAuthentication no
ChallengeResponseAuthentication yes
Instale pam_auth
(sendo esta a forma orientada para 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
, mode 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
Pule o digits=8
se estiver satisfeito com o HOTP OATH de 6 dígitos. Acredito que um método semelhante pode ser usado para TOTP OATH (novo OTP a cadansegundos), mas estou usando tokens OATH de hardware em vez de tokens de software, e eles são yubikeys, que só fazem HOTP OATH.
O único problema é que quando você faz o ssh sem apresentar uma chave válida, ele pede o código OATHantesa senha. Eu não poderia fazer o contrário, mas decidi que não me importava muito; os prompts deixam bem claro qual token está sendo solicitado.
Responder2
Você precisa anexar:
AuthenticationMethods publickey keyboard-interactive
sem vírgula entre publickey
e keyboard-interactive
para /etc/ssh/sshd_config
. Todas as outras configurações não precisam ser alteradas (desde que a configuração seja igual à do tutorial do howtogeek fornecido).