Login på skrivebordet og godkendelse af Linux-brugere

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.

Hvis du i stedet vil bruge din Nitrokey som en alternativ login-metode (adgangskode ELLER Nitrokey), kan du se Alternativ godkendelsesmetode, når du har gennemført hovedvejledningen.

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.

Advarsel

Følgende vejledning kan potentielt låse dig ude af din computer. Du bør være opmærksom på disse risici, da det anbefales først at bruge nedenstående vejledning på en sekundær computer eller efter en fuld sikkerhedskopi.

Du kan miste adgangen til dine data efter at have konfigureret PAM-moduler.

Krav

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Vejledning

  1. Opret en backup-bruger, og giv den root-rettigheder

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

    Hvis du foretrækker at konfigurere U2F for en enkelt bruger og er låst ude af din brugersession, kan du stadig logge ind med <backup_user> og fortsætte med vedligeholdelsen.

  2. Install libpam-u2f

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

    $ sudo apt install libpam-u2f
    

    Bemærk

    • Alternativt kan du bygge libpam-u2f fra Git.

    • For at kontrollere, at biblioteket er korrekt installeret, skal du indtaste følgende kommando:

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

    Output bør være noget i retning af følgende:

    /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. Generer 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
    

    Bemærk, at dette output ikke blev genereret direkte af pamu2fcfg og ikke indeholder nogen følsomme oplysninger. Det er udelukkende beregnet til at vise det forventede format og længden af outputtet.

    Tip

    • The file must be named u2f_keys

    • Det anbefales først at teste instruktionerne med en enkelt bruger. Konfiguration af andre brugere vil blive tilføjet i afsnit 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

    For at opnå bedre sikkerhed flytter vi den genererede fil ~/u2f_keys til /etc/Nitrokey/, efter at konfigurationsfilen er genereret, og ændrer adgangstilladelserne ved hjælp af disse kommandoer:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Modificer det indsættelige autentifikationsmodul PAM

    Konfigurer PAM-modulfilerne under /etc/pam.d/. Dette er en testfase - trin 8 håndhæver konfigurationen, når du har bekræftet, at den fungerer.

    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
    

    Tip

    • Vi bruger sufficient til test og ændrer det til required i trin 8.

    • Da vi bruger Central Authentication Mapping, skal vi fortælle pam_u2f placeringen af den fil, der skal bruges med indstillingen 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.].

    Bemærk

    Hvorfor placering i bunden? PAM behandler moduler fra top til bund. Ved at placere U2F-konfigurationen nederst sikres det, at adgangskodegodkendelse kontrolleres først, hvilket skaber en anden-faktor-arbejdsgang (adgangskode + U2F).

    For alternative godkendelsesmuligheder (adgangskode ELLER Nitrokey) og detaljerede forklaringer på, hvordan linjeposition og kontrolflag påvirker godkendelsen, se Alternativ godkendelsesmetode.

    Når vi har ændret common-auth, kan vi gemme og afslutte 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æftet, at godkendelsen med din Nitrokey fungerede, kan du opsætte U2F-konfigurationsfilen for de andre brugere på dit system.

    Advarsel

    Hvis du ikke konfigurerer alle brugere i U2F-konfigurationsfilen og fortsætter med at håndhæve Nitrokey-godkendelse i trin 8, vil du ikke kunne logge ind med nogen ikke-konfigurerede brugere!

    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
    

    Hvis du vil tilføje en backup-Nitrokey til denne bruger, skal du tilslutte din backup-Nitrokey og gøre det samme, som du gjorde for den primære bruger:

    $ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
    

    Gentag derefter denne proces for alle brugere på dit system.

  8. Enforcing Nitrokey second factor authentication

    Du har måske bemærket, at autentificering med Nitrokey ikke blev håndhævet endnu. Når vi har bekræftet, at godkendelse med Nitrokey fungerer, kan vi håndhæve det ved at ændre flaget sufficient til required.

    Advarsel

    Før du fortsætter med dette trin, skal du sikre dig, at du har:

    • Testet, at godkendelse med Nitrokey faktisk fungerer, ellers kan du miste adgangen til din computer.

    • Opret en backup af Nitrokey. Hvis du ellers mister eller ødelægger din Nitrokey, mister du adgang til din computer!

    Fortsæt med forsigtighed!

    For at gøre det skal du redigere konfigurationsfilen PAM:

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

    I den linje, du tilføjede tidligere i bunden af filen, skal du ændre ordet sufficient til required. Det bør se sådan ud:

    #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

Hvis du foretrækker at bruge din Nitrokey som alternativ til din adgangskode (password OR Nitrokey), kan du konfigurere dette i stedet:

Configuration Steps:

  1. Flyt PAM-konfigurationslinjen til top af /etc/pam.d/common-auth (før andre auth-moduler)

  2. Behold kontrolflaget ``sufficient`

Dette giver mulighed for godkendelse med en af faktorerne alene. Bemærk, at dette giver mindre sikkerhed end anden-faktor-godkendelse.

Forståelse af godkendelsesmetoder

Kombinationen af linjeposition og kontrolflag bestemmer din autentificeringstilstand:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Nederst (efter pam_unix)

sufficient

Second factor (testing)

Sikker testfase

Nederst (efter pam_unix)

required

Anden faktor (håndhævet)

Production security (main guide)

Top (før pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Sådan fungerer PAM:

PAM behandler moduler sekventielt fra top til bund. Kontrolflaget bestemmer, hvordan succes eller fiasko påvirker den samlede autentificering:

  • sufficient: Succes afslutter autentificering; fiasko ignoreres, hvis andre moduler lykkes

  • required: Succes er obligatorisk; fiasko forårsager generel autentificeringsfejl

Hvad det betyder for dig:

Alternativ godkendelse (øverst + tilstrækkelig):

  • Du kan logge ind med din adgangskode ELLER din Nitrokey alene

  • If authentication with the Nitrokey succeeds, no password is required

  • Hvis Nitrokey-godkendelsen mislykkes eller springes over, vil adgangskoden stadig virke

  • Dette er mere praktisk, men mindre sikkert end anden-faktor-autentificering.

Security implications:

  • En angriber med din adgangskode kan logge ind uden din Nitrokey

  • En angriber med fysisk adgang til din Nitrokey kan logge ind uden din adgangskode

  • Brug kun denne funktion, hvis bekvemmelighed er vigtigere end maksimal sikkerhed.

For en detaljeret forklaring af kontrolflag og deres betydning, se Control Flags.

PAM-moduler

Der er flere PAM-modulfiler, som kan ændres efter dine 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 blot ændre filen /etc/pam.d/sudo, hvis du ønsker at bruge FIDO U2F, når du bruger kommandoen sudo.

Kontrolflag

Kontrolflaget bestemmer, hvordan PAM-modulet opfører sig, når godkendelsen lykkes eller mislykkes. I trin 6 brugte vi flaget sufficient til testning og skiftede derefter til required til håndhævelse.

De tilgængelige kontrolflag er:

  • 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: Svarer til required, men i tilfælde af at et specifikt modul returnerer en fejl, returneres kontrollen direkte til programmet eller til den overordnede PAM-stakke. Dette flag kan også låse dig ude af din computer, hvis du ikke har adgang til 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.

Advarsel

  • 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 mister adgangen til din computer, hvis du har konfigureret PAM-modulet forkert og har brugt flagene required eller requisite.

  • Du mister også muligheden for at bruge sudo, hvis du opretter central tilknytning af autentifikation og har brugt flagene required eller requisite.

  • Du kan også miste muligheden for at logge ind med Gnome Display Manager, hvis smartcard-login er aktiveret, og du har brugt flagene required eller requisite. Se Fejlfinding for yderligere information.

Fejlfinding

Problemer med at logge ind på en brugerkonto ved hjælp af GDM

I nogle tilfælde, f.eks. hvis du har opencs-pkcs11 installeret, kan Gnome Display Manager (GDM) som standard gennemtvinge smartcard-login, så snart et smartcard (som din Nitrokey) sættes i, selv om der aldrig er konfigureret noget smartcard. Det kan forhindre dig i at logge ind på din brugerkonto ved hjælp af u2f. Hvis du har sat kontrolflaget sufficient, skal du tage alle smartcards ud og logge ind med din adgangskode. For at slå håndhævelse af smartkort fra skal du køre følgende 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