Cómo configurar la autenticación de dos factores en Ubuntu Linux
Cómo configurar la autenticación de dos factores en Ubuntu Linux

Cómo configurar la autenticación de dos factores en Ubuntu Linux

Hola a tod@s

En esta oportunidad veremos como configurar en un servidor Ubuntu Linux la autenticación de dos factores, haciendo uso del módulo PAM de Google Authenticator para la autenticación vía SSH.

Google Authenticator es un módulo de código abierto, que incluye implementaciones de tokens de verificación de códigos de acceso de un solo uso (TOTP) desarrollados por Google.

¿Qué es la autenticación de dos factores?

La autenticación multifactor es un método para confirmar su identidad utilizando al menos dos formas diferentes de autenticación. El ejemplo más común y fácil de implementar de autenticación de dos factores utiliza una combinación de frase de contraseña (una contraseña compleja, a menudo hecha de varias palabras) y un código de acceso de un solo uso generado por una aplicación móvil especial.

Utilizaremos la aplicación Google Authenticator disponible para Android e iOS para generar códigos de autenticación.

Prerrequisitos

Para poder ejecutar sin problema los pasos de instalación y configuración de Google Authenticator PAM debemos cumplir con los siguientes requisitos:

  • Acceso administrativo (sudo) a la maquina donde instalaremos Google Authenticator PAM.
  • Servicio SSH funcionando.
  • Contar en nuestro equipo móvil con la aplicación de Google Authenticator en iOS o Android.
  • Configurar correctamente la zona horaria del servidor.
  • Actualizar el servidor.

Instalación de  Google Authenticator PAM

Ingresamos a la maquina donde deseamos configurar la autenticación de doble factor. Con el siguiente comando instalamos las librerías necesarias  para que el módulo PAM funcione correctamente con el módulo autenticador de Google.

# sudo apt install libpam-google-authenticator

Podemos ejecutar la configuración de Google Authenticator sin opciones, lo que nos permitirá usar una configuración interactiva o asignar algunas acciones manualmente. Para más detalle de las opciones podemos usar –help.

# google-authenticator –help

Generar tokens de autenticación

Para comenzar ejecutamos el comando google-authenticator, acto seguido se nos pedirá contestar algunas preguntas. Les dejo la configuración recomendada:

# google-authenticator

  • Do you want authentication tokens to be time-based (y/n) y

Nota: Si usamos esta opción en «Y» debemos tener presente que la hora de nuestro servidor debe ser la correcta, de lo contrario tendremos problemas con los tokens de autenticación.

  • Do you want me to update your «/root/.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) y
  • If the computer that you are logging into isn’t 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

Cuando aparezca «Enter code from app (-1 to skip)» podemos pulsar enter e ingresar el código que nos entrega o podemos ingresar : -1 para que nos muestre los códigos de emergencia.

Importante: Si perdemos el acceso a tu aplicación de autenticación, podemos usar uno de los códigos de respaldo de emergencia. Los códigos son para un solo uso, por lo cual es importante guardarlos en un lugar seguro.

Configurar SSH para usar la autenticación de dos factores

Para hacer que SSH use el módulo PAM de Google Authenticator, debemos agregar la siguiente línea al final del archivo /etc/pam.d/sshd. Para este ejemplo estoy usando el editor de texto nano, pero siempre puedes usar el que más te acomode.

Debemos tener en cuenta que estos archivos que modificaremos son archivos delicados, por lo cual se recomienda hacer una copia de estos o tener cuidado con la tipografía a la hora de agregar o quitar contenido de estos.

# sudo nano /etc/pam.d/sshd

Agregamos:

auth required pam_permit.so

Guardamos el archivo usando la combinación de teclas Ctrl + o y salimos del editor usando la combinación de teclas Ctrl + x.

A continuación, abrimos el archivo de configuración /etc/ssh/sshd_config y buscamos la siguiente línea:

ChallengeResponseAuthentication yes

La cambiamos a «yes«.

ChallengeResponseAuthentication yes

Guardamos el archivo usando la combinación de teclas Ctrl + o y salimos del editor usando la combinación de teclas Ctrl + x.

Ahora necesitamos reiniciar el demonio sshd usando el comando:

# sudo systemctl restart sshd.service

Configuración de la aplicación Google Authenticator

Iniciamos la aplicación Google Authenticator desde nuestro teléfono smartphone. Presione + y elija «Ingresar clave de configuración«.

Agregamos un nombre a la cuenta e ingresamos la «clave secreta» generada anteriormente.

Imagen referencial

Generará una contraseña de un solo uso (código de verificación) que cambiará constantemente cada 30 segundos.

Ahora, para probar, intentaremos conectarnos al servidor por SSH. Si todo salió bien, se nos pedirá un código de Google Authenticator (código de verificación) y una contraseña cada vez que intente iniciar sesión a través de SSH. Solo tenemos 30 segundos para ingresar este código de verificación, y si no lo ingresamos, se regenerará un nuevo código de verificación.

Deshabilitar 2FA para un usuario específico

Para deshabilitar 2FA para un usuario específico:

  1. Iniciamos sesión como root.
  2. Eliminamos el archivo en el directorio principal del usuario con el siguiente comando, donde «user» es el nombre del usuario que queremos deshabilitar 2FA.

# sudo rm /home/user/.google_authenticator

Espero que esta información pueda ser de ayuda, y cualquier duda o sugerencia la dejan en los comentarios. Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.