Cómo iniciar sesión y elevar privilegios con Yubikey en Ubuntu

⚠️ Nota importante

Este artículo tiene más de un año. La tecnología evoluciona rápido, por lo que algunos contenidos o instrucciones pueden estar desactualizados. Recuerda buscar información reciente y actualizada.

YubiKey es una herramienta de seguridad compatible con Ubuntu que puede ser utilizada como U2F para iniciar sesión en Ubuntu y/o elevar privilegios (ejecutar el comando sudo) en la terminal. Activar esta funcionalidad, si bien requiere de ejecución de comandos en la terminal, es muy fácil y su implementación puede ser realizada por cualquier usuario. En este artículo se explica como activar una o varias YubiKey como segundo factor de autenticación en Ubuntu. 

Requisitos previos

Antes de continuar es recomendable realizar la configuración básica de la YubiKey en Ubuntu (primer paso de mi tutorial).

Después, hay agregar el repositorio oficial de Yubico e instalar la librería necesaria para la autenticación:

sudo add-apt-repository ppa:yubico/stable
sudo apt install libpam-u2f

Asociando una o más YubiKey

Para este paso es necesario abrir la terminal de Ubuntu y ejecutar el siguiente comando para crear el directorio de configuración (si el comando genera error es porque el directorio ya existe por lo que solo hay que ignorarlo):

mkdir ~/.config/Yubico

Ahora es necesario conectar la YubiKey que queremos agregar y ejecutar el siguiente comando:

pamu2fcfg > ~/.config/Yubico/u2f_keys

Cuando la luz de la YubiKey comience a parpadear se debe tocar la zona metálica para completar la activación.

Los mismos pasos deben seguirse para activar otras YubiKey.

Activando la autenticación de dos factores

Para este paso es necesario editar el archivo /etc/pam.d/sudo con cualquier editor. Opcionalmente se puede ejecutar el siguiente comando para editar con Gedit:

sudo gedit /etc/pam.d/sudo

Debajo de la línea que dice @include common-auth se debe incluir la siguiente información: 

auth    required   pam_u2f.so

Se guardan los cambios y se retira la YubiKey del ordenador. Para probar que todo esté funcionando se puede abrir una nueva terminal (sin cerrar la terminal previamente autenticada en caso de que ocurra algún problema eliminar la linea incluida anteriormente y volver al estado anterior) y ejecutar cualquier comando sudo. Como se retiró la YubiKey, aunque se indique la contraseña correcta, no será posible realizar la ejecución del comando. En este punto, se inserta nuevamente la YubiKey y se vuelve a ejecutar el comando. Se indica la contraseña y cuando parpadea la luz de la YubiKey se toca la parte metálica para finalizar la comprobación. Si el comando se ejecuta correctamente entonces la configuración ha sido exitosa.

Usando YubiKey para inicio de sesión

En este caso, se debe editar el archivo /etc/pam.d/gdm-password con el comando:

sudo gedit /etc/pam.d/gdm-password

Debajo de la línea que dice @include common-auth se incluye exactamente la misma línea que se agregó anteriormente:

auth   required   pam_u2f.so

En el caso de que se quiera desactivar la autenticación de dos factores ya sea para el inicio de sesión o para elevar privilegios, solo debe eliminarse la línea agregada del archivo respectivo.

Configurando en combinación con contraseña estática

Varias versiones de YubiKey cuentan con la posibilidad de crear una contraseña estática que se escribe automáticamente al tocar la parte metálica de la llave. El proceso requiere de instalar la herramienta oficial llamada YubiKey Personalization Tool

sudo apt install yubikey-personalization-gui

En la sección Static Password se elige Scan Code:

Se indica la contraseña (preferiblemente auto-generada, larga (máx. 38 caracteres) y compleja) ya sea para el Slot 1 o Slot 2. Es importante indicar que la función de Slot 1 se ejecuta al tocar la parte metálica entre 0.3 y 1.5 segundos mientas que la función del Slot 2 se ejecuta al pulsar la zona metálica por 2 a 5 segundos. El primer espacio viene pre-configurado como YubiKey OTP pero se puede sobreescribir si el usuario no utiliza esta función. En cada espacio se puede configurar una contraseña independiente.


gpg-connect-agent -r restaurar-gpg

Finalmente se hace clic en Write Configuration para guardar los cambios. 

Esta función de contraseña estática no requiere de drivers y se puede utilizar en cualquier ordenador ya que la YubiKey se identifica ante cualquier sistema operativo como un teclado y realizar la escritura de la contraseña de forma automática (Windows, OSX, MacOS, Android (vía OTG), Ubuntu, Fedora y todo lo basado en GNU Linux). De esta forma, al iniciar sesión o elevar privilegios se toca la YubiKey de acuerdo a la configuración (la YubiKey ejecuta la tecla de Enter automáticamente) y cuando parpadee se termina de confirmar la autenticación.

Notas aclaratorias

  • Es importante recordar que si el usuario no se sabe de memoria la contraseña estática creada y pierde la YubiKey no podrá acceder a donde sea que haya utilizado la contraseña para autenticación. Además, si configuró la YubiKey para autenticación de dos factores y esta se pierde o se daña tampoco podrá confirmar la autenticación por lo que quedará fuera del ordenador (si la instalación no está encriptada podrá usar un Live USB con Ubuntu para editar el archivo modificado y eliminar la línea que se agregó en pasos anteriores).
  • Para evitar estos inconvenientes, se recomienda agregar al menos dos YubiKey para autenticación de dos factores y configurar la misma contraseña o contraseñas en ambas como respaldo. 
Fundador
Seguidor de Jesús. Escribo artículos en mi tiempo libre sobre temas de tecnología que me interesan.