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 estándar Escritorio 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.
Te mostramos previamente cómo solicitar Google Authenticator para 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, incluyendo Authy .
Instale Google Authenticator PAM
RELACIONADO: Cómo proteger SSH con la autenticación de dos factores del Autenticador de Google
Al igual que al configurar esto para el acceso SSH, primero necesitaremos instalar el software PAM ("módulo de autenticación conectable") apropiado. 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á Google Authenticator PAM. 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
Es de esperar 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 compílelo usted mismo.
Como señalamos antes, esta solución no depende de "llamar a casa" a los servidores de Google. Implementa el algoritmo TOTP estándar y se puede usar incluso cuando su computadora no tiene acceso a Internet.
Cree sus 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 instrucciones aquí. Esto creará un archivo especial en el directorio de la cuenta de usuario actual con la información del Autenticador de Google.
También se lo guiará a través del proceso de obtener ese código de verificación de dos factores en un Autenticador de Google 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 usar para iniciar sesión si pierde su teléfono.
Siga este proceso para cada cuenta de usuario que use su computadora. Por ejemplo, si es la única persona que usa su computadora, puede hacerlo una vez en su cuenta de usuario normal. Si tiene a alguien más que usa su computadora, le recomendamos que inicie sesión en su propia cuenta y genere un código de dos factores apropiado para su propia cuenta, de modo que pueda iniciar sesión.
Activar autenticación
Aquí es donde las cosas se ponen un poco complicadas. Cuando explicamos cómo habilitar dos factores para los inicios de sesión SSH, lo requerimos solo para los inicios de sesión SSH. Esto aseguró que aún pudiera iniciar sesión localmente si perdía su aplicación de autenticación o si algo salía mal.
Dado que habilitaremos la autenticación de dos factores para los inicios de sesión locales, existen 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 le da una trampilla de escape si la necesita.
Habilitar Google Authenticator para inicios de sesión gráficos en Ubuntu
Siempre puede habilitar la autenticación de dos pasos solo para inicios de sesión gráficos, omitiendo el requisito cuando inicie sesión desde el mensaje de texto. Esto significa que puede cambiar fácilmente a una terminal virtual, iniciar sesión allí y revertir sus cambios para que no sea necesario Gogole Authenciator si tiene algún 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 inicios de sesión remotos a través de SSH.
Aquí se explica cómo hacer esto para Ubuntu, que usa 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árdelo:
auth requiere pam_google_authenticator.so nullok
El bit "nullok" al final le dice al sistema que permita que un usuario inicie sesión incluso si no ha ejecutado el comando google-authenticator para configurar la autenticación de dos factores. Si lo han configurado, deberán ingresar un código basado en tiempo; de lo contrario, no lo harán. Elimine el "nullok" y las cuentas de usuario que no hayan configurado un código de Autenticador de Google 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 usan PAM. Es probable que solo tenga que editar un archivo diferente con algo similar para activar el módulo PAM apropiado.
Si usa el cifrado del directorio de inicio
Las versiones anteriores de Ubuntu ofrecían una Opción "cifrado de carpeta de inicio" que cifró todo su directorio de inicio hasta que ingrese su contraseña. Específicamente, esto usa ecryptfs. Sin embargo, debido a que el software PAM depende de un archivo Google Authenticator almacenado en su directorio de inicio de forma predeterminada, la encriptación interfiere con la lectura del archivo por parte de PAM, a menos que se asegure de que está disponible en forma no encriptada para el sistema antes de iniciar sesión. Consulte el README para obtener más información sobre cómo evitar este problema si aún usa las opciones de encriptación del directorio de inicio obsoletas.
Oferta de versiones modernas de Ubuntu cifrado de disco completo en su lugar, funcionará bien con las opciones anteriores. No tienes que hacer nada especial
¡Ayuda, se rompió!
Debido a que acabamos de habilitar esto para 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 una 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. Utilizar nuestra guía de Nano para eliminar la línea y guardar el archivo, y podrá volver a iniciar sesión normalmente.
También puede forzar que se requiera Google Authenticator para otros tipos de inicios de sesión, potencialmente incluso 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. Tenga cuidado si hace esto. Y recuerde, es posible que desee agregar "nullok" para que los usuarios que no hayan pasado por el proceso de configuración aún puedan iniciar sesión.
Puede encontrar más documentación sobre cómo utilizar y configurar este módulo PAM en el archivo README del software en GitHub .