Cómo iniciar sesión en su escritorio de Linux con Google Authenticator
Para mayor seguridad, puede requerir un token de autenticación basado en el tiempo, así como una contraseña para iniciar sesión en su PC con Linux. Esta solución utiliza Google Authenticator y otras aplicaciones TOTP..
Este proceso se realizó en Ubuntu 14.04 con el escritorio estándar de Unity y el administrador de inicio de sesión LightDM, pero los principios son los mismos en la mayoría de las distribuciones y escritorios de Linux..
Anteriormente le mostramos cómo requerir Google Authenticator para el acceso remoto a través de SSH, y este proceso es similar. Esto no requiere la aplicación Google Authenticator, pero funciona con cualquier aplicación compatible que implemente el esquema de autenticación TOTP, incluida Authy.
Instala el Google Authenticator PAM
Al configurar esto para el acceso SSH, primero necesitaremos instalar el software PAM ("módulo de autenticación conectable") adecuado. PAM es un sistema que nos permite conectar diferentes tipos de métodos de autenticación en un sistema Linux y requerirlos.
En Ubuntu, el siguiente comando instalará el PAM de Google Authenticator. Abra una ventana de Terminal, escriba el siguiente comando, presione Entrar y proporcione su contraseña. El sistema descargará el PAM de los repositorios de software de su distribución de Linux y lo instalará:
sudo apt-get install libpam-google-authenticator
Esperamos que otras distribuciones de Linux también tengan este paquete disponible para una fácil instalación: abra los repositorios de software de su distribución de Linux y realice una búsqueda. En el peor de los casos, puede encontrar el código fuente del módulo PAM en GitHub y compilarlo usted mismo.
Como señalamos anteriormente, esta solución no depende de "llamar a casa" a los servidores de Google. Implementa el algoritmo TOTP estándar y puede usarse incluso cuando su computadora no tiene acceso a Internet.
Crea tus claves de autenticación
Ahora deberá crear una clave de autenticación secreta e ingresarla en la aplicación Google Authenticator (o una aplicación similar) en su teléfono. Primero, inicie sesión como su cuenta de usuario en su sistema Linux. Abra una ventana de terminal y ejecute el autenticador de google mando. Tipo y y siga las indicaciones aquí. Esto creará un archivo especial en el directorio de la cuenta de usuario actual con la información de Google Authenticator.
También se le guiará por el proceso de obtener ese código de verificación de dos factores en un Google Authenticator o una aplicación TOTP similar en su teléfono inteligente. Su sistema puede generar un código QR que puede escanear, o puede escribirlo manualmente.
Asegúrese de anotar sus códigos de emergencia, que puede utilizar para iniciar sesión si pierde su teléfono.
Ir a través de este proceso para cada cuenta de usuario que utiliza su computadora. Por ejemplo, si usted es la única persona que usa su computadora, solo puede hacerlo una vez en su cuenta de usuario normal. Si tienes a alguien más que use tu computadora, querrás que inicie sesión en su propia cuenta y genere un código de dos factores adecuado para su propia cuenta para que puedan iniciar sesión..
Activar autenticación
Aquí es donde las cosas se ponen un poco difíciles. Cuando explicamos cómo habilitar dos factores para los inicios de sesión de SSH, lo requerimos solo para los inicios de sesión de SSH. Esto aseguró que todavía podría iniciar sesión localmente si perdió su aplicación de autenticación o si algo salió mal..
Dado que habilitaremos la autenticación de dos factores para los inicios de sesión locales, hay problemas potenciales aquí. Si algo sale mal, es posible que no pueda iniciar sesión. Teniendo esto en cuenta, lo guiaremos para habilitar esto solo para inicios de sesión gráficos. Esto te da una escotilla de escape si lo necesitas..
Habilitar el autenticador de Google para inicios de sesión gráficos en Ubuntu
Siempre puede habilitar la autenticación en dos pasos solo para inicios de sesión gráficos, omitiendo el requisito cuando inicia sesión desde el mensaje de texto. Esto significa que puede cambiar fácilmente a un terminal virtual, iniciar sesión allí y revertir sus cambios para que Gogole Authenciator no sea necesario si experimenta un problema..
Claro, esto abre un agujero en su sistema de autenticación, pero un atacante con acceso físico a su sistema ya puede explotarlo de todos modos. Es por eso que la autenticación de dos factores es particularmente efectiva para los inicios de sesión remotos a través de SSH.
Aquí se explica cómo hacer esto para Ubuntu, que utiliza el administrador de inicio de sesión LightDM. Abra el archivo LightDM para editarlo con un comando como el siguiente:
sudo gedit /etc/pam.d/lightdm
(Recuerde, estos pasos específicos solo funcionarán si su distribución de Linux y su escritorio utilizan el administrador de inicio de sesión de LightDM).
Agregue la siguiente línea al final del archivo y luego guárdela:
se requiere autenticación pam_google_authenticator.so nullok
El bit "nullok" al final le dice al sistema que permita al usuario iniciar sesión incluso si no han ejecutado el comando google-authenticator para configurar la autenticación de dos factores. Si lo han configurado, tendrán que ingresar un código de tiempo-baesd, de lo contrario no lo harán. Elimine el "nullok" y las cuentas de usuario que no hayan configurado un código de Google Authenticator simplemente no podrán iniciar sesión gráficamente.
La próxima vez que un usuario inicie sesión gráficamente, se le pedirá su contraseña y luego se le pedirá el código de verificación actual que se muestra en su teléfono. Si no ingresan el código de verificación, no se les permitirá iniciar sesión.
El proceso debería ser bastante similar para otras distribuciones y escritorios de Linux, ya que la mayoría de los administradores de sesiones de escritorio de Linux utilizan PAM. Es probable que solo tengas que editar un archivo diferente con algo similar para activar el módulo PAM adecuado.
Si utiliza el cifrado de directorio de inicio
Las versiones anteriores de Ubuntu ofrecían una opción fácil de "cifrado de la carpeta de inicio" que encriptaba todo su directorio de inicio hasta que ingresara su contraseña. Específicamente, esto utiliza ecryptfs. Sin embargo, debido a que el software PAM depende de un archivo de Google Authenticator almacenado en su directorio de inicio de manera predeterminada, el cifrado interfiere con el PAM que lee el archivo a menos que se asegure de que esté disponible sin cifrar en el sistema antes de iniciar sesión. Consulte README para obtener más información. información sobre cómo evitar este problema si aún está usando las opciones de cifrado del directorio de inicio en desuso.
Las versiones modernas de Ubuntu ofrecen en su lugar cifrado de disco completo, que funcionará bien con las opciones anteriores. No tienes que hacer nada especial.
Ayuda, se rompió!
Debido a que solo habilitamos esto para los inicios de sesión gráficos, debería ser fácil de deshabilitar si causa un problema. Presione una combinación de teclas como Ctrl + Alt + F2 para acceder a un terminal virtual e inicie sesión allí con su nombre de usuario y contraseña. Luego puede usar un comando como sudo nano /etc/pam.d/lightdm para abrir el archivo y editarlo en un editor de texto de terminal. Use nuestra guía de Nano para eliminar la línea y guardar el archivo, y podrá iniciar sesión normalmente nuevamente..
También podría forzar que Google Authenticator sea requerido para otros tipos de inicio de sesión, potencialmente incluso para todos los inicios de sesión del sistema, agregando la línea “auth required pam_google_authenticator.so” a otros archivos de configuración de PAM. Ten cuidado si haces esto. Y recuerde, es posible que desee agregar "nullok" para que los usuarios que no han pasado por el proceso de configuración puedan iniciar sesión.
Puede encontrar más documentación sobre cómo usar y configurar este módulo PAM en el archivo README del software en GitHub.