Inicio de sesión en el escritorio y autenticación de usuarios de Linux

Introducción

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and Nitrokey FIDO2.

Si quieres iniciar sesión en tu ordenador con Nitrokey Pro 2, Nitrokey Storage 2 y Nitrokey Inicio puedes visitar las instrucciones disponibles aquí.

Requisitos

  • Ubuntu 20.04 con Gnome Display Manager.

  • Nitrokey FIDO2 configurado siguiendo estas instrucciones.

Instrucciones

Método GUI

  1. En la esquina inferior izquierda haga clic en Show Applications y escriba la configuración en la barra de búsqueda como sigue:

    img1
  2. Desplázate hacia abajo en la barra derecha hasta Users

    img2
  3. En la esquina izquierda haga clic en Unlock y eso le pedirá su contraseña

    img3
  4. Selecciona Administrator e introduce el nombre de usuario y la contraseña de tu elección

    img4
  5. Una vez que termine el paso 4, debería haber terminado

    img5

Método CLI

  1. **Crea un usuario de copia de seguridad y dale privilegios de root.

    Puede hacerlo utilizando estos comandos:

    $ sudo adduser <backup_user>
    $ sudo usermod -aG sudo <backup_user>
    

    En caso de que prefiera configurar U2F para un solo usuario, y esté bloqueado en su sesión de usuario, aún podría iniciar sesión con el <backup_user>, y proceder al mantenimiento.

    Advertencia

    La siguiente guía puede potencialmente bloquear su ordenador. Debe ser consciente de estos riesgos, ya que se recomienda utilizar primero las instrucciones que aparecen a continuación en un ordenador secundario, o después de realizar una copia de seguridad completa.

    Podría perder el acceso a sus datos después de configurar los módulos PAM.

  2. Configurar el rules para reconocer el Nitrokey FIDO2

    Bajo /etc/udev/rules.d descarga 41-nitrokey.rules

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    Y reiniciar el servicio udev

    $ sudo systemctl restart udev
    
  3. Instalación libpam-u2f

    En Ubuntu 20.04 es posible descargar directamente libpam-u2f desde los repos oficiales

    $ sudo apt install libpam-u2f
    

    Nota

    Haga clic para ver más opciones

    • Alternativamente puedes construir libpam-u2f desde Git.

    • Para verificar que la biblioteca está correctamente instalada, introduzca el siguiente comando:

    $ file /lib/x86_64-linux-gnu/security/pam_u2f.so
    

    El resultado debería ser algo parecido a lo siguiente

    /lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
    
  4. Preparar el directorio

    Crea .config/Nitrokey/ en tu directorio de inicio

    $ mkdir ~/.config/Nitrokey
    

    Y conecta tu Nitrokey FIDO2.

    Una vez hecha la preparación, podemos empezar a configurar el equipo para que utilice el Nitrokey FIDO2 para la autenticación de 2º factor en el inicio de sesión y sudo.

  5. **Generar el archivo de configuración U2F

    Para generar el fichero de configuración utilizaremos la utilidad pamu2fcfg que viene con el libpam-u2f. Por comodidad, escribiremos directamente la salida de la utilidad en el archivo u2f_keys bajo .config/Nitrokey. Primero conecta tu Nitrokey FIDO2 (si no lo has hecho ya), e introduce el siguiente comando:

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Una vez que ejecute el comando anterior, tendrá que tocar la tecla mientras parpadea. Una vez hecho esto, pamu2fcfg añadirá a su salida el u2f_keys en el siguiente formato:

    <username>:Zx...mw,04...0a
    

    Nota, la salida será mucho más larga, pero aquí se han eliminado las partes sensibles. Para mayor seguridad, y una vez generado el archivo de configuración, moveremos el directorio .config/Nitrokey bajo el directorio etc/ con este comando:

    $ sudo mv ~/.config/Nitrokey /etc
    

    Truco

    • El archivo bajo .config/Nitrokey debe llamarse u2f_keys.

    • Se recomienda probar primero las instrucciones con un solo usuario. Para ello el comando anterior toma la opción -u, para especificar un usuario, como en el ejemplo siguiente:

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Para la configuración individual de los usuarios se debe apuntar al directorio raíz en el siguiente paso, o no incluir la opción authfile en la configuración de PAM.

  6. Respaldo

    Este paso es opcional, sin embargo se aconseja tener una Nitrokey de respaldo en caso de pérdida, robo o destrucción de su Nitrokey FIDO.

    Para configurar una clave de reserva, repita el procedimiento anterior y utilice pamu2fcfg -n. Esto omitirá el campo <username>, y la salida puede añadirse a la línea con su <username> así:

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Modificar el módulo de autenticación enchufable PAM

    El último paso es configurar los archivos del módulo PAM en /etc/pam.d/. En esta guía modificaremos el archivo common-auth ya que maneja las configuraciones de autenticación que son comunes a todos los servicios, pero otras opciones son posibles. Puedes modificar el archivo con el siguiente comando:

    $ cd /etc/pam.d
    $ sudo $editor common-auth
    

    Y añadir las siguientes líneas en la parte superior del archivo:

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt nouserok
    

    Truco

    • Como estamos utilizando el mapeo de autenticación central, tenemos que indicar a pam_u2f la ubicación del archivo a utilizar con la opción authfile.

    • Si a menudo se olvida de insertar la llave, prompt hace que la opción pam_u2f imprima Insert your U2F device, then press ENTER. y le dé la oportunidad de insertar la Nitrokey.

    • If you would like to be prompted to touch the Nitrokey, cue option will make pam_u2f print Please touch the device. message. You can change the message in [cue_prompt=Please touch the device.].

    • nouserok se asegurará de que usted todavía puede iniciar la sesión utilizando el nombre de usuario y contraseña, es posible que desee eliminar esto en algún momento una vez que la configuración está trabajando y usted don’t quiere nombre de usuario regular “ inicios de sesión basados en la contraseña.

    Una vez modificado el common-auth, podemos guardar y salir del archivo.

    Puede probar la configuración escribiendo sudo ls en el terminal. Debería aparecer el mensaje Please touch the device. y tener una salida similar en el terminal:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    También puede probar su configuración cerrando la sesión de usuario y volviendo a iniciar la sesión. Debería aparecer una pantalla similar una vez que desenchufes/conectes tu Nitrokey FIDO2 y escribas tu contraseña:

    img6

Uso

Después de la modificación del módulo PAM, podrá probar su configuración inmediatamente, pero se recomienda reiniciar su ordenador, y desconectar/reconectar el Nitrokey FIDO2.

Una vez que haya probado correctamente las instrucciones de esta guía (y haya configurado una copia de seguridad), se recomienda utilizar la bandera de control required o la requisite en lugar de sufficient.

Las banderas required y requisite proporcionan un control de acceso más estricto, y harán necesario el Nitrokey FIDO2 para iniciar sesión, y/o utilizar el servicio configurado.

Si necesita más información sobre los indicadores de control en la línea de configuración PAM, puede ver la última sección de esta guía para entender la diferencia, y las implicaciones de usar cada uno de ellos.

Módulos PAM

Hay varios archivos de módulos PAM que pueden ser modificados de acuerdo a sus necesidades:

  • Modificando el archivo /etc/pam.d/common-auth, podrá utilizar su Nitrokey FIDO para la autenticación de segundo factor para el inicio de sesión gráfico y sudo. Nota: common-auth debe modificarse añadiendo la línea de configuración adicional al final del archivo.

  • If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the/etc/pam.d/gdm-password

  • También puede modificar el archivo /etc/pam.d/sudo si desea utilizar FIDO U2F cuando utilice el comando sudo.

Banderas de control

En el paso 7 hemos utilizado la bandera de control sufficient para determinar el comportamiento del módulo PAM cuando la Nitrokey está enchufada o no. Sin embargo, es posible cambiar este comportamiento utilizando las siguientes banderas de control:

  • required: Esta es la bandera más crítica. El resultado del módulo debe ser exitoso para que la autenticación continúe. Esta bandera puede bloquearte en tu ordenador si no tienes acceso a la Nitrokey.

  • requisite: Similar a required sin embargo, en el caso de que un módulo específico devuelva un fallo, el control se devuelve directamente a la aplicación, o a la pila PAM superior. Esta bandera también puede bloquear el equipo si no tiene acceso a la Nitrokey.

  • sufficient: El resultado del módulo se ignora si falla. La bandera sufficient se considera segura para las pruebas.

  • optional: El éxito o fracaso de este módulo sólo es importante si es el único módulo de la pila asociado a este servicio+tipo. La bandera optional se considera segura para su uso en las pruebas.

Advertencia

  • Si required o requisite está configurado, el fallo de la autenticación U2F provocará un fallo de la autenticación global. El fallo se producirá cuando el Nitrokey FIDO configurado no se enchufe, se pierda o se destruya.

  • Perderás el acceso a tu ordenador si configuraste mal el módulo PAM y utilizaste las banderas required o requisite.

  • También perderá la posibilidad de utilizar sudo si configura el mapeo de autenticación central y utilizó los indicadores required o requisite.