Encontré un artículo (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/) que explica cómo configurar OpenSSH para solicitar un código de Google Authenticator tras un inicio de sesión exitoso.
¿Es posible configurar OpenSSH para que suceda lo siguiente?
- Si el usuario tiene la clave privada correcta para iniciar sesión en el servidor, inicie sesión.
- Si el usuario no tiene una clave privada permitida para iniciar sesión en el servidor, solicítele la contraseña de la cuenta Y un código de Google Authenticator.
Esto sería conveniente (ya que en mis computadoras solo necesitaría la clave privada) y seguro (ya que podría dejar la autenticación de contraseña habilitada y segura).
¿Hay alguna manera de lograr lo que quiero?
Gracias de antemano. :)
Respuesta1
Definitivamente es posible configurar un sshd
requisitocualquieraun par de claves válidoouse HOTP (nueva contraseña de un solo uso (OTP) en cada solicitud) Autenticación basada en OATH: lo estoy haciendo. Estoy bastante seguro de que Google Authenticator es sólo otra implementación de OATH.
Mi artículo completo se puede leer enhttp://www.teaparty.net/technotes/yubikey-oath.html, pero el resultado es:
Suponiendo que sshd
ya está configurado para permitir la autenticación basada en clave pública (la mayoría lo está), agregue estas dos líneas a sshd_config
:
PasswordAuthentication no
ChallengeResponseAuthentication yes
Instalar pam_auth
(esta es la forma orientada a CentOS, para x86_64):
yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/
Cree el archivo de autenticación /etc/users.oath
, modo 600
, propietario root:root
y rellénelo con líneas como:
#type username pin start seed
HOTP fred - 123a567890123b567890123c567890123d567890
Editar /etc/pam.d/sshd
y agregar la línea
auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8
Omita el digits=8
si está satisfecho con el juramento HOTP de 6 dígitos. Creo que se puede utilizar un método similar para TOTP OATH (nueva OTP cadanortesegundos), pero estoy usando tokens OATH de hardware en lugar de tokens de software, y son yubikeys, que solo hacen HOTP OATH.
El único inconveniente es que cuando ingresa sin presentar una clave válida, le solicita el código OATH.antesla contraseña. No podía hacer que funcionara al revés, pero decidí que no me importaba demasiado; las indicaciones dejan bastante claro qué token se solicita.
Respuesta2
Necesitas agregar:
AuthenticationMethods publickey keyboard-interactive
sin coma entre publickey
y keyboard-interactive
to /etc/ssh/sshd_config
. No es necesario modificar todas las demás configuraciones (siempre que la configuración sea igual al tutorial de howtogeek proporcionado).