!!! PRECAUCIÓN !!!

!!! PRECAUCIÓN !!!

Recientemente probé systemd-homed y, al hacerlo, inscribí mi Yubikey como dispositivo FIDO2. Cuando intento autenticarme en la casa creada a través de homectl authenticate <user>ella, se activa correctamente Yubikey, solicita el PIN y espera un toque, seguido de la solicitud de contraseña habitual.

Pero cuando sigo adelante e inicio sesión en esa cuenta desde un tty, solo se me solicita la contraseña, el U2F se omite por completo. Sin embargo, la casa previamente cerrada se descifra y se abre, incluso si Yubikey está desconectado.

¿Cómo puedo hacer cumplir el uso del U2F para cualquier autenticación? Lo sé pam-u2f, pero si es relevante aquí, no sé cómo. No puedo comparar los recursos para asegurar el inicio de sesión de usuario "tradicional" con pam-u2feste escenario. Siempre comienzan con la creación de las claves, pero en este caso parecen ser administradas por systemd-homed(no pude encontrar información definitiva sobre eso).

Respuesta1

Lo descubrí y me gustaría compartir mis hallazgos con ustedes, en caso de que alguien se encuentre con el mismo problema.

Todo tiene que ver con la configuración de PAM. Lo que pude deducir de diferentes hallazgos en la web depende en gran medida de la distribución de Linux utilizada. En mi caso, en Arch Linux, el system-autharchivo predeterminado, responsable de la autenticación del usuario, tenía el siguiente aspecto:

$ cat /etc/pam.d/system-auth

#%PAM-1.0

auth       required                    pam_faillock.so      preauth
auth       [success=2 default=ignore]  pam_unix.so          try_first_pass nullok
-auth      [success=1 default=ignore]  pam_systemd_home.so
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc
# ...

Esto significa que el pam_unix.somódulo (realiza autenticación mediante contraseña) se ejecuta primero y omite los dos módulos siguientes si tiene éxito. Por lo que si la contraseña es correcta, pam_systemd_home.sonunca será ejecutada, por lo que no se consultará el U2F. Como la contraseña de la cuenta está registrada como clave LUKS, es suficiente desbloquear el contenedor de la partición de inicio.

!!! PRECAUCIÓN !!!

Como siempre, cuando juegues con la configuración de PAM, siempre mantén un shell raíz abierto todo el tiempo hasta que hayas verificado exitosamente tus cambios, ¡o podrías quedarte fuera de tu PC!

Quería lograr la autenticación solo con mi dispositivo FIDO2, así que hice esto:

cat /etc/pam.d/system-auth
#%PAM-1.0

auth       required                    pam_faillock.so      preauth
-auth      [success=2 default=ignore]  pam_systemd_home.so
auth       [success=1 default=ignore]  pam_unix.so          try_first_pass nullok
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc

Ahora pam_systemd_home.sose ejecuta primero y omitirá la solicitud de contraseña predeterminada si tiene éxito. Para LUKS esto también es suficiente, ya que el dispositivo FIDO2 está registrado allí como token.

Si desea tener una 2FA "real", todo lo que necesita hacer es cambiar las configuraciones [success=2 default=ignore]y a unos.[success=1...required

información relacionada