Inloggning på skrivbordet och autentisering av Linux-användare

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

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

  1. 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.

  2. Installation libpam-u2f

    On Ubuntu 24.04 it is possible to download directly libpam-u2f from the official repos

    $ sudo apt install libpam-u2f
    

    Observera

    • Alternativt kan du bygga libpam-u2f frå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
    
  3. Generera U2F-konfigurationsfilen

    To generate the configuration file we will use the pamu2fcfg utility. 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, pamu2fcfg will append its output the u2f_keys file 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 pamu2fcfg och 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_keys

    • Vi 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.

  4. 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 -n like 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
    
  5. Securing the config file

    För bättre säkerhet, efter att konfigurationsfilen har genererats, flyttar vi den genererade filen ~/u2f_keys till /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
    
  6. Modifiera den instickbara autentiseringsmodulen PAM

    Konfigurera 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-auth file 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_u2f platsen för den fil som ska användas med alternativet authfile.

    • If you often forget to insert the key, prompt option makes pam_u2f print Insert 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, cue option will make pam_u2f print Please 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-auth kan vi spara och avsluta filen.

    You can test the configuration by typing sudo ls in the terminal. After typing in your password you should be prompted with the message Please 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:

    img6
  7. 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, pamu2fcfg takes the -u <username> option, the output can be appended to the u2f_keys file 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.

  8. 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 sufficient till required.

    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 sufficient till required. 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:

  1. Flytta PAM-konfigurationsraden till överst/etc/pam.d/common-auth (före andra auth-moduler)

  2. 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:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Botten (efter pam_unix)

sufficient

Second factor (testing)

Säker testfas

Botten (efter pam_unix)

required

Andra faktorn (förstärkt)

Production security (main guide)

Topp (före pam_unix)

sufficient

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 lyckas

  • required: 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-auth file, you will be able to use you Nitrokey for 2nd factor authentication for graphic login and sudo.

  • 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

  • Alternativt kan du bara ändra filen /etc/pam.d/sudo om du vill använda FIDO U2F när du använder kommandot sudo.

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: Liknar required, 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. The sufficient flag 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. The optional flag is considered safe to use for testing purposes.

Varning

  • If required or requisite is 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 required eller requisite.

  • Du förlorar också möjligheten att använda sudo om du ställer in central autentiseringsmappning. och använt flaggorna required eller requisite.

  • 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 required eller requisite. 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