¿Cómo configurar la autenticación de dos factores en SSH en Ubuntu?

Two-factor-Authentication

La autenticación de dos factores (2FA) no es algo exclusivo que se pueda utilizar en las redes sociales o en alguna otra web. Pues esta medida de seguridad también puede ser implementada dentro de un sistema operativo.

Es por ello que el día de hoy veremos la forma de cómo implementar la autenticación de dos factores en SSH en Ubuntu y derivados utilizando el conocido Autenticador de Google el cual aumentará considerablemente la seguridad de su servidor OpenSSH.

Normalmente, solo necesita ingresar una contraseña o usar la clave SSH para iniciar sesión en su sistema de forma remota.

La autenticación de dos factores (2FA) requiere que se ingresen dos datos para iniciar sesión.

Por lo tanto, también deberán de ingresar una contraseña de un solo uso basada en el tiempo para iniciar sesión en su servidor SSH.

Esta contraseña de un solo uso se calcula utilizando el algoritmo TOTP, que es un estándar IETF.

Instalación y configuración de Google Authenticator en Ubuntu y derivados

El primer paso que vamos a realizar es la instalación de Google Authenticator en nuestro sistema, por lo que vamos a abrir una terminal en el sistema (esto lo pueden hacer con la combinación de teclas “Ctrl + Alt + T) y en ella vamos a teclear el siguiente comando:

sudo apt install libpam-google-authenticator

Ya realizada la instalación vamos a ejecutar la aplicación recién instalada con el siguiente comando:

google-authenticator

Al ejecutar este comando lo que vamos a realizar es asignar una clave secreta y esta nos preguntara si queremos utilizar los tokens basados en el tiempo lo que responderemos que sí.

Luego de esto, verán un código QR el cual pueden escanear usando una aplicación TOTP en su teléfono.

Aquí recomendamos el uso de la aplicación de Google Authenticator en su teléfono móvil, por lo que pueden realizar la instalación de la aplicación a través de Google Play o Apple App Store en su teléfono móvil.

Ya contando con la aplicación en su teléfono deberán de scanear el código QR con ella. Tengan en cuenta que necesitan ampliar la ventana del terminal para escanear el código QR completo.

El código QR representa la clave secreta, que solo es conocida por su servidor SSH y su aplicación Google Authenticator.

Una vez que se escanea el código QR, pueden ver un token único de seis dígitos en su teléfono. Por defecto este token dura 30 segundos y este beberá ser ingresado para iniciar sesión en Ubuntu a través de SSH.

google-authenticator-secret-key

En la terminal también se podrá ver la clave secreta, así como el código de verificación y el código de inicio de emergencia.

De lo cual recomendamos que guarden esta información en un lugar seguro para su uso posterior. De las demás preguntas que se nos realice, simplemente vamos a contestar que si tecleando la letra y.

Configuración de SSH para usar con Google Authenticator

Ya contando con lo anterior, ahora vamos a realizar la configuración necesaria para poder utilizar la conexión SSH en nuestro sistema con Google Authenticator.

En la terminal vamos a teclear el siguiente comando

sudo nano /etc/ssh/sshd_config

Dentro del archivo vamos a buscar las siguientes líneas y cambiaremos estas a “yes”, quedando de la siguiente forma:

UsePAM yes

ChallengeResponseAuthentication yes

Ya realizados los cambios guarden los cambios realizados con Ctrl + O y cierren el archivo con Ctrl + X.

En la misma terminal vamos a reiniciar SSH con:

sudo systemctl restart ssh

De forma predeterminada, la autenticación requiere que ingresen la contraseña de usuario para iniciar sesión.

Por lo que vamos a editar el archivo de reglas PAM para el daemon SSH.

sudo nano /etc/pam.d/sshd

Al principio de este archivo, pueden ver la siguiente línea, que habilita la autenticación de la contraseña

ChallengeResponseAuthentication

La cual debemos de establecer en yes.

Para habilitar también la autenticación de contraseña única, agregue las siguientes dos líneas.

@include common-auth

#One-time password authentication via Google Authenticator

auth required pam_google_authenticator.so

Guarden y cierre el archivo.

A partir de ahora, cada vez que ingresen a su sistema por medio de una conexión SSH se les pedirá que ingresen la contraseña de usuario y un código de verificación (la contraseña de un solo uso generada por Google Authenticator).


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Miguel dijo

    Hola, tutorial bastante sencillo, sin embargo, una vez que realizo todos los pasos ya no puedo ingresar por ssh, me arroja error de contraseña incorrecta, ni siquiera me alcanza a pedir el 2FA.

    Tengo Ubuntu Server 20.04