Login på skrivebordet og godkendelse af Linux-brugere¶
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.
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¶
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.Install
libpam-u2fOn Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom the official repos$ sudo apt install libpam-u2f
Bemærk
Alternativt kan du bygge
libpam-u2ffra 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
Generer 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
Bemærk, at dette output ikke blev genereret direkte af
pamu2fcfgog 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_keysDet anbefales først at teste instruktionerne med en enkelt bruger. Konfiguration af andre brugere vil blive tilføjet i afsnit 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
For at opnå bedre sikkerhed flytter vi den genererede fil
~/u2f_keystil/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
Modificer det indsættelige autentifikationsmodul
PAMKonfigurer 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-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
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_u2fplaceringen af den fil, der skal bruges med indstillingenauthfile.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.].
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 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æ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,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile 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.
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
sufficienttilrequired.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
sufficienttilrequired. 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:
Flyt PAM-konfigurationslinjen til top af
/etc/pam.d/common-auth(før andre auth-moduler)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:
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Nederst (efter pam_unix) |
|
Second factor (testing) |
Sikker testfase |
Nederst (efter pam_unix) |
|
Anden faktor (håndhævet) |
Production security (main guide) |
Top (før pam_unix) |
|
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 lykkesrequired: 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-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 blot ændre filen
/etc/pam.d/sudo, hvis du ønsker at bruge FIDO U2F, når du bruger kommandoensudo.
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 tilrequired, 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. 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.
Advarsel
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 mister adgangen til din computer, hvis du har konfigureret PAM-modulet forkert og har brugt flagene
requiredellerrequisite.Du mister også muligheden for at bruge
sudo, hvis du opretter central tilknytning af autentifikation og har brugt flagenerequiredellerrequisite.Du kan også miste muligheden for at logge ind med Gnome Display Manager, hvis smartcard-login er aktiveret, og du har brugt flagene
requiredellerrequisite. 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