Google Authenticator (Español)
Google Authenticator provee un procedimiento de autenticación de dos pasos que utiliza contraseñas de un sólo uso (OTP). La aplicación generadora de OTP está disponible para iOS, Android y Blackberry. Semejante a S/KEY Authentication el mecanismo de autenticación se integra en el sistema PAM de Linux. Ésta guía muestra la instalación y configuración de éste mecanismo.
Contents
Installación
Instalar el paquete libpam-google-authenticator desde AUR. La versión de desarrollo también está disponible cómo google-authenticator-libpam-gitAUR.
Configurando PAM
Por lo general, se quiere una autenticación de dos pasos sólo para el inicio de sesión remoto. El correspondiente fichero de configuración de PAM es /etc/pam.d/sshd
. En caso de que quieras usar Google Authenticator de manera global Tendrías que cambiar /etc/pam.d/system-auth
, sin embargo, en éste caso procede con extremo cuidado para no bloquearse a si mismo.
En ésta guía procedemos a editar /etc/pam.d/sshd
con ésta configuración que es más segura (pero no necesariamente) en una sesión local.
Para ingresar ambos, tu contraseña Unix y tu contraseña OTP, agrega pam_google_authenticator.so
encima de las lineas system-remote-login en /etc/pam.d/sshd
:
auth required pam_google_authenticator.so auth include system-remote-login account include system-remote-login password include system-remote-login session include system-remote-login
Ésto le preguntará por la contraseña OTP antes de mostrar el prompt para introducir tu contraseña Unix. Cambiar el orden de los dos módulos invertirá el orden.
Para permitir el inicio de sesión con la contraseña de OTP o de Unix usar:
auth sufficient pam_google_authenticator.so
Activar challenge-response authentication en /etc/ssh/sshd_config
:
ChallengeResponseAuthentication yes
Finalmente, reload el servicio sshd
.
AuthenticationMethods
permitir ambos: two-factor and key-based authentication. See Secure Shell#Two-factor authentication and public keys.Generar un fichero de clave secreta
Todos los usuarios que quieran usar autenticación en dos pasos necesitarán generar un fichero de clave secreta en su directorio personal. Ésto se puede hacer muy fácilmente usando google-authenticator:
$ google-authenticator Do you want authentication tokens to be time-based (y/n) y <Here you will see generated QR code> Your new secret key is: ZVZG5UZU4D7MY4DH Your verification code is 269371 Your emergency scratch codes are: 70058954 97277505 99684896 56514332 82717798 Do you want me to update your "/home/username/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) n If the computer that you are logging into is not hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y
Es recomendable store the emergency scratch codes safely (imprimirlos y mantenerlos en un lugar seguro) ya que son la única manera de iniciar sesión (via SSH) cuándo pierdes tu smartphone (p.e. tu generador-OTP). También se almacenan en ~/.google_authenticator
, por lo que puedes mirarlos en cualquier momento, siempre y cuándo ya estés conectado. No elimines (o sí) los códigos de ése fichero, ya que es de ahí de donde lee los códigos de emergencia, también puedes agregar códigos nuevos.
Configurando tu generador de OTP
Instala el generador de OTP en tu móvil desde Android market (e.g. FreeOTP) o desde F-Droid. Clickea en el menú de la aplicación el botón correspondiente para crear una nueva cuenta y ya sea escaneando el código QR desde la URL donde se generó la clave secreta, o introduciendo la clave secreta (en el ejemplo 'ZVZG5UZU4D7MY4DH') manualmente.
Ahora deberías ver un nuevo token de código de acceso generado cada 30 segundos en tu teléfono.
Probando
Conéctate por SSH al equipo:
$ ssh hostname login as: <username> Verification code: <generated/backup-code> Password: <password> $
Inicio de sesión en escritorio
EL plugin de PAM Google Authenticator también puede ser usado para inicios de sesión en la consola y con GDM. Solo añada lo siguiente en el fichero /etc/pam.d/login
o en /etc/pam.d/gdm-password
:
auth required pam_google_authenticator.so