Inloggning på skrivbordet och autentisering av Linux-användare¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
Introduktion¶
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and compatible Nitrokeys.
You will set up your Nitrokey as a second factor for authentication. This means you will need your usual login method (likely your password) and your Nitrokey to login.
Om du istället vill använda din Nitrokey som en alternativ inloggningsmetod (lösenord ELLER Nitrokey), se Alternativ autentiseringsmetod efter att du har slutfört huvudguiden.
If you want to login to you computer using Nitrokey Pro 2, Nitrokey Storage 2 and Nitrokey Start you can visit the instructions available here.
Varning
Följande guide kan potentiellt låsa dig från din dator. Du bör vara medveten om dessa risker, eftersom det rekommenderas att först använda instruktionerna nedan på en sekundär dator eller efter en fullständig säkerhetskopiering.
Du kan förlora åtkomsten till dina data efter att ha konfigurerat PAM-moduler.
Krav¶
Ubuntu 24.04 with Gnome Display Manager (GDM).
Instruktioner¶
Skapa en användare för säkerhetskopiering och ge den root-rättigheter.
$ sudo adduser <backup_user> $ sudo usermod -aG sudo <backup_user>
Om du föredrar att konfigurera U2F för en enskild användare och blir utelåst från din användarsession kan du fortfarande logga in med
<backup_user>och fortsätta med underhållet.Installation
libpam-u2fOn Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom the official repos$ sudo apt install libpam-u2f
Observera
Alternativt kan du bygga
libpam-u2ffrån Git.För att kontrollera att biblioteket är korrekt installerat anger du följande kommando:
$ file /lib/x86_64-linux-gnu/security/pam_u2f.so
Resultatet bör vara ungefär som följande:
/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
Generera U2F-konfigurationsfilen
To generate the configuration file we will use the
pamu2fcfgutility. First plug your Nitrokey (if you did not already), and enter the following command:$ pamu2fcfg > ~/u2f_keys
Once you run the command above, you will need to touch the device while it flashes. Once done,
pamu2fcfgwill append its output theu2f_keysfile in the format:<username>:KeyHandle,PublicKey,flags
This will look something like the following:
nitrouser:fS6vQ9uWa0VizcczyZ/bvk5kcQJkIJOC/21/e7dXFe/fnONSL705EkeiUpZpL/3seAWL/qW4/mqb0/WtiZoP/NOLTRM4EEAg1ANLsfYgSzRd/AjsW3z8kJwgckbvwDUyB90ByR09XtBhuE41vMsEk6J+9CS0+ZuPSB0KXRG7z2yZpQLldjE/ijsdIdd8Ct2oXSiZ/zTb/t5kRafNJVkp=,Oo4U9XvIhI9r0WNnvoMwG5/pbgwYd4GMCYEinhWcsI2hKUebYj92JOxDsSa3zd2A9OB0ofXgB16FD2naev3YmLch==,es256,+presence
Observera att detta utdata inte genererades direkt av
pamu2fcfgoch att det inte innehåller någon känslig information. Det är enbart avsett att visa det förväntade formatet och längden på utdata.Tips
The file must be named
u2f_keysVi rekommenderar att du först testar instruktionerna med en enda användare. Konfiguration för andra användare kommer att läggas till i avsnitt 7.
Setting up a backup Nitrokey
This step is optional, however it is advised to have a second Nitrokey as backup in the case of loss, theft or destruction of your primary Nitrokey.
To set up a backup key, repeat the procedure above, and use
pamu2fcfg -nlike this:$ pamu2fcfg -n >> ~/u2f_keys
This will omit the
<username>field, and the output is appended to the line with your<username>, this will look something like this:<username>:Zx...mw,04...0a:xB...fw,es256,+presence:04...3f,es256,+presence
Securing the config file
För bättre säkerhet, efter att konfigurationsfilen har genererats, flyttar vi den genererade filen
~/u2f_keystill/etc/Nitrokey/och ändrar åtkomstbehörigheterna med hjälp av dessa kommandon:$ sudo mkdir /etc/Nitrokey $ sudo mv ~/u2f_keys /etc/Nitrokey/ $ sudo chmod 644 /etc/Nitrokey/u2f_keys
Modifiera den instickbara autentiseringsmodulen
PAMKonfigurera PAM-modulfilerna under
/etc/pam.d/. Detta är en testfas - i steg 8 kommer konfigurationen att verkställas när du har bekräftat att den fungerar.In this guide we will modify the
common-authfile as it handles the authentication settings which are common to all services, other options are described in PAM Modules. You can modify the file with the following command:$ sudo editor /etc/pam.d/common-auth
Add the following line at the bottom of the file:
#Nitrokey config auth sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
Tips
Vi använder sufficient för testning och kommer att ändra till required i steg 8.
Eftersom vi använder central autentiseringsmappning måste vi ange
pam_u2fplatsen för den fil som ska användas med alternativetauthfile.If you often forget to insert the key,
promptoption makespam_u2fprintInsert your U2F device, then press ENTER.and give you a chance to insert the Nitrokey.If you would like to be prompted to touch the Nitrokey,
cueoption will makepam_u2fprintPlease touch the device.message. You can change the message in[cue_prompt=Please touch the device.].
Observera
Varför bottenplacering? PAM bearbetar moduler från topp till botten. Genom att placera U2F-konfigurationen längst ned säkerställs att lösenordsautentisering kontrolleras först, vilket skapar ett arbetsflöde med andra faktorn (lösenord + U2F).
För alternativa autentiseringsalternativ (lösenord ELLER Nitrokey) och detaljerade förklaringar av hur radposition och kontrollflaggor påverkar autentiseringen, se Alternativ autentiseringsmetod.
När vi har ändrat
common-authkan vi spara och avsluta filen.You can test the configuration by typing
sudo lsin the terminal. After typing in your password you should be prompted with the messagePlease touch the device.and have a similar output on the terminal:nitrouser@nitrouser:~$ sudo ls [sudo] password for nitrouser: Please touch the device.
You can also test your configuration by logging out of the user session and logging back. A similar screen should be displayed once you you unplug/replug yout Nitrokey and type your password:
Setting up multiple users
När du har bekräftat att autentiseringen med din Nitrokey fungerade kan du konfigurera U2F-konfigurationsfilen för de andra användarna på ditt system.
Varning
Om du inte konfigurerar alla användare i U2F-konfigurationsfilen och fortsätter med att förstärka Nitrokey-autentiseringen i steg 8, kommer du inte att kunna logga in med någon icke-konfigurerad användare!
To configure u2f for multiple users,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile like this:$ sudo pamu2fcfg -u <username> >> /etc/Nitrokey/u2f_keys
För att lägga till en backup Nitrokey till denna användare, anslut din backup Nitrokey och gör samma sak som du gjorde för den primära användaren:
$ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
Upprepa sedan denna process för alla användare i ditt system.
Enforcing Nitrokey second factor authentication
Du kanske har lagt märke till att autentisering med Nitrokey ännu inte är obligatoriskt. Efter att ha bekräftat att autentisering med Nitrokey fungerar kan vi tvinga fram det genom att ändra flaggan
sufficienttillrequired.Varning
Innan du fortsätter med detta steg ska du kontrollera att du har:
Testade att autentisering med Nitrokey verkligen fungerar, annars kan du förlora åtkomsten till din dator.
Ställ in en säkerhetskopia av Nitrokey. Om du tappar bort eller har sönder din Nitrokey kommer du annars att förlora tillgången till din dator!
Fortsätt med försiktighet!
För att göra det måste du redigera konfigurationsfilen
PAM:$ sudo editor /etc/pam.d/common-auth
I den rad du lade till tidigare längst ner i filen ändrar du ordet
sufficienttillrequired. Det bör se ut så här:#Nitrokey config auth required pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
After completing the setup, it is recommended to reboot your computer and unplug/replug the Nitrokey.
Alternative Authentication Method¶
Om du föredrar att använda din Nitrokey som ett alternativ till ditt lösenord (password OR Nitrokey) kan du konfigurera detta istället:
Configuration Steps:
Flytta PAM-konfigurationsraden till överst på
/etc/pam.d/common-auth(före andra auth-moduler)Håll kontrollflaggan
sufficient
Detta möjliggör autentisering med endast en av faktorerna. Observera att detta ger mindre säkerhet än autentisering med andra faktorn.
Förståelse av autentiseringsmodi
Kombinationen av linjeposition och kontrollflagga avgör ditt autentiseringsläge:
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Botten (efter pam_unix) |
|
Second factor (testing) |
Säker testfas |
Botten (efter pam_unix) |
|
Andra faktorn (förstärkt) |
Production security (main guide) |
Topp (före pam_unix) |
|
Alternative factor |
Convenience (password OR key) |
Hur PAM fungerar:
PAM bearbetar moduler sekventiellt från topp till botten. Kontrollflaggan avgör hur framgång eller misslyckande påverkar den övergripande autentiseringen:
sufficient: Lyckad autentisering; misslyckande ignoreras om andra moduler lyckasrequired: Framgång är obligatorisk; misslyckande orsakar övergripande autentiseringsfel
Vad detta innebär för dig:
Alternativ autentisering (topp + tillräcklig):
Du kan logga in med ditt lösenord ELLER din Nitrokey ensam
If authentication with the Nitrokey succeeds, no password is required
Om Nitrokey-autentiseringen misslyckas eller hoppas över fungerar lösenordet fortfarande
Detta är bekvämare men mindre säkert än andrafaktorsautentisering
Security implications:
En angripare med ditt lösenord kan logga in utan din Nitrokey
En angripare med fysisk tillgång till din Nitrokey kan logga in utan ditt lösenord
Använd detta endast om bekvämlighet är viktigare än maximal säkerhet
För detaljerade förklaringar av kontrollflaggor och deras konsekvenser, se Kontrollflaggor.
PAM-moduler¶
Det finns flera PAM-modulfiler som kan ändras enligt dina behov:
By modifying
/etc/pam.d/common-authfile, you will be able to use you Nitrokey for 2nd factor authentication for graphic login andsudo.If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/etc/pam.d/gdm-passwordAlternativt kan du bara ändra filen
/etc/pam.d/sudoom du vill använda FIDO U2F när du använder kommandotsudo.
Kontrollflaggor¶
Kontrollflaggan avgör hur PAM-modulen beter sig när autentiseringen lyckas eller misslyckas. I steg 6 använde vi flaggan sufficient för testning, och ändrade sedan till required för verkställighet.
De tillgängliga kontrollflaggorna är:
required: The module result must be successful for authentication to continue. This is the most critical flag and can lock you out of your computer if you do not have access to the Nitrokey.requisite: Liknarrequired, men i det fall en specifik modul returnerar ett fel återgår kontrollen direkt till programmet eller till den överordnade PAM-stapeln. Den här flaggan kan också låsa dig från datorn om du inte har tillgång till Nitrokey.sufficient: The module result is ignored if it fails. In case of success, control is directly returned to the application, or to the superior PAM stack. This means no other PAM modules will be executed. Thesufficientflag is considered safe for testing purposes.optional: The success or failure of this module is only important if it is the only module in the stack associated with this service+type. Theoptionalflag is considered safe to use for testing purposes.
Varning
If
requiredorrequisiteis set, the failure of U2F authentication will cause a failure of the overall authentication. Failure will occur when the configured Nitrokey is not plugged, lost or destroyed.Du förlorar tillgången till din dator om du har konfigurerat PAM-modulen fel och använt flaggorna
requiredellerrequisite.Du förlorar också möjligheten att använda
sudoom du ställer in central autentiseringsmappning. och använt flaggornarequiredellerrequisite.Du kan också förlora möjligheten att logga in med Gnome Display Manager om inloggning med smartkort tillämpas och du använde flaggorna
requiredellerrequisite. Se Felsökning för ytterligare information.
Felsökning¶
Problem med att logga in på användarkonto med GDM¶
I vissa fall, till exempel om du har opencs-pkcs11 installerat, kan Gnome Display Manager (GDM) som standard tvinga fram inloggning med smartkort så snart ett smartkort (som ditt Nitrokey) är inkopplat, även om inget smartkort någonsin har konfigurerats. Detta kan hindra dig från att logga in på ditt användarkonto med hjälp av u2f. Om du har angett kontrollflaggan sufficient ska du koppla ur alla smarta kort och logga in med ditt lösenord. Om du vill stänga av smartkortskontroll kör du följande kommando:
$ sudo -u gdm env -u XDG_RUNTIME_DIR -u DISPLAY DCONF_PROFILE=gdm dbus-run-session gsettings set org.gnome.login-screen enable-smartcard-authentication false