
Recientemente compré un par de YubiKeys (YubiKey 5C específicamente), después de años de pensarlo en el fondo de mi mente…
La idea inicial era una sola publicación para mi configuración de YubiKey, pero se volvió demasiado larga, así que será en 2 partes:
- Parte 1: Conceptos básicos de YubiKey y autenticación para máquinas Linux locales.
- Parte 2: Autenticación para SSH y GPG.
Nota: Toda la configuración se realiza en Fedora con GNOME DE (aplicable 1 a 1 en distros relacionadas) y YubiKey 5C / USB (no la versión Biometrica).
¿Qué es una YubiKey?
Según Wikipedia, la fuente definitiva de verdad:
YubiKey es un pequeño dispositivo de hardware que puede “proteger el acceso a computadoras, redes y servicios en línea que admite contraseñas de un solo uso (OTP), criptografía de clave pública, autenticación y los protocolos Universal 2nd Factor (U2F) y FIDO2 desarrollados por la FIDO Alliance. Permite a los usuarios iniciar sesión de forma segura en sus cuentas emitiendo contraseñas de un solo uso o usando un par de claves pública/privada basado en FIDO generado por el dispositivo.
Administrando YubiKeys
Instalar Paquetes Requeridos
El paquete yubikey-manager proporciona la herramienta CLI ykman para administrar todas las aplicaciones de YubiKey, como Yubico OTP, FIDO U2F, FIDO2, OATH, PIV, OpenPGP y YubiHSM Auth.
# Instalar el paquete "yubikey-manager"
sudo dnf install yubikey-manager
Comandos Generales
# Mostrar información de YubiKey (firmware, serial, aplicaciones)
ykman info
# Listar YubiKeys conectadas
ykman list
# Habilitar aplicaciones (como, FIDO2, PIV, etc.)
ykman config usb --enable <application_name>
# Deshabilitar aplicaciones (como, FIDO2, PIV, etc.)
ykman config usb --disable <application_name>
Comandos FIDO
Administrar autenticación FIDO2/U2F (usada para autenticación local en Linux).
# Mostrar información de FIDO (PIN, contador de credenciales)
ykman fido info
# Cambiar o establecer PIN de FIDO2 (requerido si se usa verificación de PIN)
ykman fido access change-pin
# Verificar PIN de FIDO2 existente (si ya está establecido)
ykman fido access verify-pin
# Desbloquear FIDO (después de demasiados intentos fallidos de PIN)
ykman fido access unlock
# Listar credenciales residentes
ykman fido credentials list
# Eliminar una credencial
ykman fido credentials delete
# Restablecer FIDO (BORRA TODOS LOS DATOS DE FIDO)
ykman fido reset
Comandos PIV
Funcionalidad de tarjeta inteligente para certificados, autenticación, firma.
# Mostrar información de PIV
ykman piv info
# Cambiar PIN (predeterminado: 123456)
ykman piv access change-pin
# Cambiar PUK (PIN Unblocking Key, predeterminado: 12345678)
ykman piv access change-puk
# Cambiar clave de administración
ykman piv access change-management-key
# Generar clave en slot
ykman piv keys generate 9a /path/to/public.pem
# Importar certificado
ykman piv certificates import 9a /path/to/cert.pem
# Exportar certificado
ykman piv certificates export 9a /path/to/output.pem
# Generar certificado autofirmado
ykman piv certificates generate 9a
# Restablecer aplicación PIV (BORRA TODOS LOS DATOS DE PIV)
ykman piv reset
Comandos GPG
# Mostrar información de OpenPGP
ykman openpgp info
# Cambiar PIN de Usuario (predeterminado: 123456)
ykman openpgp access change-pin
# Cambiar PIN de Admin (predeterminado: 12345678)
ykman openpgp access change-admin-pin
# Establecer código de restablecimiento para recuperación de PIN
ykman openpgp access set-reset-code
# Restablecer aplicación OpenPGP (BORRA TODOS LOS DATOS DE PGP)
ykman openpgp reset
Usando YubiKey para Autenticación Local en Linux
Configura tu máquina Linux para autenticarse/iniciar sesión con solo tocar la YubiKey, sin necesidad de contraseña.
Instalar Paquetes Requeridos
pam-u2fproporciona el módulo PAM que maneja la autenticación de YubiKey.pamu2fcfges la herramienta de configuración que usaremos para registrar nuestras claves con el sistema.
sudo dnf install pam-u2f pamu2fcfg
Registrar tu(s) YubiKey(s)
Antes de poder usar la YubiKey para autenticación local, regístrala con el sistema.
Primero, conecta la YubiKey a tu máquina y ejecuta pamu2fcfg. Cuando ejecutes pamu2fcfg, la YubiKey comenzará a parpadear. Toca el contacto de metal para completar el registro.
# Crear el directorio de configuración de YubiKey
mkdir -p ~/.config/Yubico
# Registrar tu YubiKey (conéctala primero y toca el dispositivo)
pamu2fcfg > ~/.config/Yubico/u2f_keys
Si tienes una YubiKey de respaldo, regístrala aquí también:
# Agregar YubiKeys de respaldo adicionales al mismo archivo (agregar >>)
pamu2fcfg -n >> ~/.config/Yubico/u2f_keys
Asegura tu archivo u2f_keys para prevenir acceso no autorizado.
chmod 600 ~/.config/Yubico/u2f_keys
Notas Importantes:
- El registro de clave anterior es solo para el usuario actual.
- Para registro de YubiKey en todo el sistema, registra la clave en el archivo /etc/Yubico/u2f_keys en su lugar con cada entrada de usuario por línea.
- Respalda el archivo u2f_keys en una ubicación segura.
Configurando Autenticación PAM
Ahora es momento de configurar PAM (Pluggable Authentication Module) para autenticar con la YubiKey. PAM puede dar miedo como un acosador en el parque, pero lo haremos fácil.
PAM controla cómo funciona la autenticación en Linux, así que modificaremos algunos archivos de configuración para hacer que eso suceda.
Opciones de Configuración Comunes
Modos de Autenticación
| Modo | Descripción |
|---|---|
required | La autenticación de YubiKey DEBE tener éxito. Si falla, la autenticación finalmente fallará (la autenticación de contraseña u otros módulos restantes aún pueden ser evaluados). Más seguro, pero puede ser molesto si olvidas tu clave. |
sufficient | La autenticación de YubiKey O contraseña funcionará para autenticar. Ligeramente menos seguro. |
Opciones Comunes:
| Opción | Descripción |
|---|---|
interactive | Mostrar mensaje ( Se muestra antes de pedirte tocar la clave para autenticar. |
cue | Mostrar mensaje ( |
pinverification=1 | Pedir el PIN FIDO2 de YubiKey para autenticar. Más seguro que solo tocar. Requiere que se establezca un PIN FIDO2 ( |
nouserok | Permite a usuarios sin YubiKeys registradas omitir la autenticación de YubiKey y pasar a otros módulos PAM (como autenticación de contraseña). Útil en sistemas multiusuario donde no todos tienen YubiKey. |
Configurar Acceso sudo
Edita /etc/pam.d/sudo para configurar la autenticación de YubiKey al usar sudo.
# Contenido de "/etc/pam.d/sudo"
# Agregar una línea como esta antes de cualquier línea auth existente (usar modo de autenticación 'required' o 'sufficient' y usar las opciones que prefieras)
auth required pam_u2f.so cue
Por ejemplo, un archivo /etc/pam.d/sudo completo se vería así:
# Contenido de "/etc/pam.d/sudo"
#%PAM-1.0
auth sufficient pam_u2f.so cue pinverification=1
auth include system-auth
account include system-auth
password include system-auth
session include system-auth
Importante:
- Mi recomendación es tener las opciones
cue pinverification=1para autenticar tocando la YubiKey y proporcionando el PIN, lo cual es mucho más seguro que solo tocar la clave. - El orden de los módulos PAM es importante, mantén un ojo en ello.
- Prueba el acceso a
sudoen una terminal separada antes de cerrar tu sesión actual para prevenir configuraciones erróneas que podrían bloquearte. Comienza con el modo de autenticaciónsufficientsi no sabes lo que estás haciendo.
Configuraciones Adicionales
Puedes aplicar la misma configuración en otros puntos de autenticación también:
- /etc/pam.d/gdm-password
- Autenticar para el inicio de sesión gráfico (GDM - GNOME Display Manager).
- Permite desbloquear tu escritorio con solo tocar la YubiKey.
- /etc/pam.d/login
- Autenticar para inicio de sesión en consola.
- /etc/pam.d/polkit-1
- Autenticación para mensajes de elevación de privilegios de GNOME (como
systemctl). - Estos mensajes son controlados por polkit, no la autenticación PAM regular.
- Autenticación para mensajes de elevación de privilegios de GNOME (como
Nota sobre el GNOME Keyring: Por defecto, la YubiKey no desbloqueará el GNOME Keyring. Esto es porque el keyring está encriptado con tu contraseña de usuario, y la YubiKey no proporciona esa contraseña a PAM. Para anular esto, puedes establecer una contraseña en blanco para el keyring, pero personalmente no recomiendo esto, solo mantén el keyring protegido con contraseña, es más seguro.
¿Qué Sigue?
Las YubiKeys son fáciles de configurar y ofrecen gran seguridad. Solo asegúrate de no perderlas y tener una clave de respaldo registrada en caso de que algo suceda.
Para mí sin embargo, no reemplazan 2FA de aplicaciones TOTP. Son un complemento debido a su facilidad de uso.
La próxima publicación será la configuración de YubiKeys para autenticación SSH y GPG.