Prijava namizja in preverjanje pristnosti uporabnika Linuxa

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Uvod

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.

Če želite namesto tega uporabiti Nitrokey kot alternativni način prijave (geslo ALI Nitrokey), glejte Alternative Authentication Method po zaključku glavnega vodnika.

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.

Opozorilo

Naslednji vodnik vas lahko zaklene iz računalnika. Teh tveganj se morate zavedati, saj je priporočljivo, da spodnja navodila najprej uporabite na sekundarnem računalniku ali po popolni varnostni kopiji.

Po konfiguraciji modulov PAM lahko izgubite dostop do podatkov.

Zahteve

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Navodila

  1. Izdelajte uporabnika varnostne kopije in mu dajte pravice korporacije root

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

    Če želite nastaviti U2F za posameznega uporabnika in ste zaklenjeni iz uporabniške seje, se lahko še vedno prijavite z <backup_user> in nadaljujete z vzdrževanjem.

  2. Instalacija libpam-u2f

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

    $ sudo apt install libpam-u2f
    

    Opomba

    • Druga možnost je, da sestavite libpam-u2f iz Git.

    • Če želite preveriti, ali je knjižnica pravilno nameščena, vnesite naslednji ukaz:

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

    Rezultat mora biti podoben naslednjemu:

    /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. Generiranje konfiguracijske datoteke U2F

    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
    

    Upoštevajte, da ta izpis ni bil ustvarjen neposredno s pamu2fcfg in ne vsebuje občutljivih informacij. Namenjen je zgolj prikazu pričakovane oblike in dolžine izpisa.

    Nasvet

    • The file must be named u2f_keys

    • Priporočljivo je, da navodila najprej preizkusite z enim uporabnikom. Konfiguracija drugih uporabnikov bo dodana v razdelku 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

    Za boljšo varnost bomo po ustvarjanju konfiguracijske datoteke ustvarjeno datoteko ~/u2f_keys premaknili v /etc/Nitrokey/ in s temi ukazi spremenili dovoljenja za dostop:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Modifikacija vtičnega modula za preverjanje pristnosti PAM

    Konfigurirajte datoteke modula PAM pod /etc/pam.d/. To je testna faza - v koraku 8 bo konfiguracija uveljavljena, ko boste potrdili, da deluje.

    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
    

    Nasvet

    • Za testiranje uporabljamo zadostno, v koraku 8 pa bomo spremenili v zahtevano.

    • Ker uporabljamo centralno kartiranje avtentikacije, moramo pam_u2f sporočiti lokacijo datoteke, ki jo želimo uporabiti z možnostjo 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.].

    Opomba

    Zakaj postavitev na dno? PAM obdeluje module od zgoraj navzdol. Če je konfiguracija U2F nameščena na dnu, se najprej preveri avtentikacija z geslom, s čimer se ustvari delovni postopek drugega dejavnika (geslo + U2F).

    Za alternativne možnosti avtentikacije (geslo ALI Nitrokey) in podrobna pojasnila, kako položaj vrstice in kontrolne oznake vplivajo na avtentikacijo, glejte Alternative Authentication Method.

    Ko smo spremenili common-auth, lahko shranimo in zaključimo datoteko.

    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

    Ko potrdite, da je preverjanje pristnosti z uporabo Nitrokey delovalo, lahko nastavite konfiguracijsko datoteko U2F za druge uporabnike v sistemu.

    Opozorilo

    Če v konfiguracijski datoteki U2F ne nastavite vseh uporabnikov in nadaljujete z uveljavljanjem avtentikacije Nitrokey v koraku 8, se ne boste mogli prijaviti z nobenim nenastavljenim uporabnikom!

    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
    

    Če želite temu uporabniku dodati rezervni ključ Nitrokey, priključite rezervni ključ Nitrokey in naredite enako kot pri primarnem uporabniku:

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

    Nato postopek ponovite za vse uporabnike v sistemu.

  8. Enforcing Nitrokey second factor authentication

    Morda ste opazili, da preverjanje pristnosti s ključem Nitrokey še ni bilo uveljavljeno. Ko smo potrdili, da preverjanje pristnosti s ključem Nitrokey deluje, ga lahko uveljavimo tako, da zastavico sufficient spremenimo v required.

    Opozorilo

    Pred nadaljevanjem tega koraka se prepričajte, da imate:

    • Preizkusil sem, da preverjanje pristnosti s ključem Nitrokey res deluje, sicer lahko izgubite dostop do računalnika.

    • Nastavite rezervni ključ Nitrokey. Če izgubite ali zlomite ključ Nitrokey, boste izgubili dostop do računalnika!

    Ravnajte previdno!

    V ta namen morate urediti konfiguracijsko datoteko PAM:

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

    V vrstici, ki ste jo prej dodali na dnu datoteke, spremenite besedo sufficient v required. Izgledati mora takole:

    #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

Če namesto gesla raje uporabljate ključ Nitrokey (geslo ALI Nitrokey), lahko to nastavite namesto tega:

Configuration Steps:

  1. Premaknite konfiguracijsko vrstico PAM na vrh **** ` /etc/pam.d/common-auth` (pred drugimi avtentikacijskimi moduli)

  2. Ohranite kontrolno zastavico sufficient

To omogoča preverjanje pristnosti samo z enim od dejavnikov. Upoštevajte, da to zagotavlja manjšo varnost kot preverjanje pristnosti z drugim faktorjem.

Razumevanje načinov preverjanja pristnosti

Kombinacija položaja vrstice in kontrolne zastavice določa vaš način avtentikacije:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Dno (po pam_unix)

sufficient

Second factor (testing)

Faza varnega testiranja

Dno (po pam_unix)

required

Drugi dejavnik (uveljavljen)

Production security (main guide)

Na vrh (pred pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Kako deluje PAM:

PAM obdeluje module zaporedno od zgoraj navzdol. Kontrolna zastavica določa, kako uspeh ali neuspeh vpliva na celotno preverjanje pristnosti:

  • sufficient: Uspeh zaključi avtentikacijo; neuspeh se prezre, če drugi moduli uspejo

  • required: Uspeh je obvezen; neuspeh povzroči splošno neuspešno avtentikacijo

Kaj to pomeni za vas:

Alternativna avtentikacija (zgoraj + dovolj):

  • Prijavite se lahko s svojim geslom ALI samo s ključem Nitrokey.

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

  • Če preverjanje pristnosti s ključem Nitrokey ne uspe ali je preskočeno, bo geslo še vedno delovalo.

  • To je bolj priročno, vendar manj varno kot preverjanje pristnosti z drugim faktorjem.

Security implications:

  • Napadalec z vašim geslom se lahko prijavi brez vašega Nitrokey.

  • Napadalec, ki ima fizični dostop do vašega Nitrokey, se lahko prijavi brez vašega gesla.

  • Uporabite ga le, če je udobje pomembnejše od največje varnosti.

Podrobne razlage kontrolnih oznak in njihovih posledic so na voljo v poglavju Kontrolne oznake.

Moduli PAM

Obstaja več datotek z moduli PAM, ki jih lahko spremenite glede na svoje potrebe:

  • 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

  • Če želite pri uporabi ukaza /etc/pam.d/sudo uporabiti FIDO U2F, lahko spremenite datoteko sudo.

Kontrolne oznake

Kontrolna zastavica določa, kako se bo modul PAM obnašal ob uspešnem ali neuspešnem preverjanju pristnosti. V 6. koraku smo za testiranje uporabili zastavico sufficient, nato pa smo jo za uveljavitev spremenili v required.

Na voljo so naslednje kontrolne zastave:

  • 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: Podobno kot pri required, vendar se v primeru, ko določen modul vrne neuspeh, nadzor neposredno vrne aplikaciji ali nadrejenemu skladu PAM. Ta zastavica vas lahko tudi zaklene iz računalnika, če nimate dostopa do ključa 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.

Opozorilo

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

  • Če ste napačno konfigurirali modul PAM in uporabili oznake required ali requisite, boste izgubili dostop do računalnika.

  • Prav tako boste izgubili možnost uporabe sudo, če nastavite centralno kartiranje avtentikacije. in uporabili oznake required ali requisite.

  • Prav tako lahko izgubite možnost prijave z upraviteljem zaslona Gnome, če je uveljavljena prijava s pametno kartico in ste uporabili oznake required ali requisite. Za dodatne informacije glejte Odpravljanje težav.

Odpravljanje težav

Težave s prijavo v uporabniški račun z uporabo GDM

V nekaterih primerih, na primer če imate nameščen program opencs-pkcs11, lahko program Gnome Display Manager (GDM) privzeto uveljavi prijavo s pametno kartico takoj, ko je priključena katera koli pametna kartica (kot je Nitrokey), tudi če pametna kartica še ni bila konfigurirana. To vam lahko prepreči prijavo v uporabniški račun z uporabo u2f. Če ste nastavili kontrolno zastavico sufficient, odklopite vse pametne kartice in se prijavite z geslom. Če želite izklopiti uveljavljanje pametnih kartic, zaženite naslednji ukaz:

$ 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