Töölaua sisselogimine ja Linuxi kasutaja autentimine

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Sissejuhatus

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.

Kui soovite kasutada alternatiivse sisselogimismeetodina oma Nitrokey’t (parool VÕI Nitrokey), vaadake pärast põhijuhendi läbimist Alternatiivne autentimismeetod.

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.

Hoiatus

Järgnev juhend võib teid potentsiaalselt arvutist välja lukustada. Te peaksite olema teadlik nendest riskidest, sest allpool toodud juhiseid on soovitatav kasutada esmalt teises arvutis või pärast täielikku varundamist.

Pärast PAM-moodulite konfigureerimist võite kaotada juurdepääsu oma andmetele.

Nõuded

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Juhised

  1. Looge varukoopia kasutaja ja anna talle root-õigused

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

    Juhul, kui eelistate U2F-i seadistada ühe kasutaja jaoks ja olete oma kasutajasessioonist välja lukustatud, saaksite ikkagi sisse logida <backup_user> ja jätkata hooldustöödega.

  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
    

    Märkus

    • Alternatiivina võite ehitada libpam-u2f alates Git.

    • Et kontrollida, kas raamatukogu on korralikult paigaldatud, sisestage järgmine käsk:

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

    Väljund peaks olema umbes järgmine:

    /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. U2F konfiguratsioonifaili genereerimine

    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
    

    Pange tähele, et seda väljundit ei genereerinud otseselt pamu2fcfg ja see ei sisalda tundlikku teavet. See on mõeldud üksnes selleks, et näidata väljundi eeldatavat formaati ja pikkust.

    Nõuanne

    • The file must be named u2f_keys

    • Soovitatav on esmalt katsetada juhiseid ühe kasutajaga. Muude kasutajate konfiguratsioon lisatakse punktis 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

    Parema turvalisuse tagamiseks liigutame pärast config-faili genereerimist genereeritud faili ~/u2f_keys aadressile /etc/Nitrokey/ ja muudame juurdepääsuõigusi nende käskude abil:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Muuda ühendatavat autentimismoodulit PAM

    Konfigureerige PAM-moodulifailid aadressil /etc/pam.d/. See on testimisfaas - samm 8 jõustab konfiguratsiooni, kui te kinnitate, et see töötab.

    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
    

    Nõuanne

    • Me kasutame testimiseks piisavat ja muudame selle sammus 8 nõutavaks.

    • Kuna me kasutame keskse autentimise kaardistamist, peame teatama pam_u2f faili asukoha, mida kasutada authfile valikuga.

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

    Märkus

    Miks põhja paigutamine? PAM töötleb mooduleid ülalt alla. U2F-konfiguratsiooni paigutamine allapoole tagab, et parooli autentimist kontrollitakse esimesena, luues teise faktori töövoo (parool + U2F).

    Alternatiivsed autentimisvõimalused (parool VÕI Nitrokey) ja üksikasjalikud selgitused selle kohta, kuidas rea asukoht ja kontrolllippude kasutamine mõjutavad autentimist, leiate aadressilt Alternatiivne autentimismeetod.

    Kui oleme muutnud common-auth, saame faili salvestada ja sellest väljuda.

    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

    Pärast seda, kui olete kinnitanud, et autentimine Nitrokey abil toimis, saate seadistada U2F-konfigufaili teiste kasutajate jaoks oma süsteemis.

    Hoiatus

    Kui te ei määra kõiki kasutajaid U2F konfiguratsioonifailis ja jätkate Nitrokey autentimise jõustamist sammus 8, ei saa te ühegi seadistamata kasutajaga sisse logida!

    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
    

    Et lisada sellele kasutajale Nitrokey varukoopia, ühendage varukoopia Nitrokey ja tehke sama, mida tegite esmase kasutaja puhul:

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

    Pärast seda korrake seda protsessi kõigi teie süsteemi kasutajate jaoks.

  8. Enforcing Nitrokey second factor authentication

    Võib-olla olete märganud, et Nitrokey’ga autentimist ei ole veel jõustatud. Pärast kinnitust, et autentimine Nitrokey abil toimib, saame seda jõustada, muutes sufficient lipukese required.

    Hoiatus

    Enne selle sammuga jätkamist veenduge, et teil on:

    • Testitud, et autentimine Nitrokey’ga tõepoolest toimib, vastasel juhul võite kaotada juurdepääsu oma arvutile.

    • Seadistage Nitrokey varukoopia. Vastasel juhul, kui kaotate või rikute oma Nitrokey, kaotate juurdepääsu oma arvutile!

    Tegutsege ettevaatlikult!

    Selleks tuleb muuta PAM konfiguratsioonifaili:

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

    Muutke varem lisatud reas faili lõpus sõna sufficient sõnaks required. See peaks välja nägema selline:

    #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

Kui eelistate kasutada oma Nitrokey’t alternatiivina oma paroolile (parool VÕI Nitrokey), saate selle asemel seadistada selle:

Configuration Steps:

  1. Viige PAMi konfiguratsioonirea ülemisse ossa aadressil /etc/pam.d/common-auth (enne teisi auth-mooduleid).

  2. Hoidke sufficient kontrolllippus.

See võimaldab autentimist ainult kummagi teguri abil. Pange tähele, et see pakub vähem turvalisust kui teise faktori autentimine.

Autentimisviiside mõistmine

Rida positsiooni ja kontroll-lippude kombinatsioon määrab teie autentimisrežiimi:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Alumine osa (pärast pam_unix)

sufficient

Second factor (testing)

Ohutu testimise etapp

Alumine osa (pärast pam_unix)

required

Teine tegur (sunnitud)

Production security (main guide)

Top (enne pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Kuidas PAM töötab:

PAM töötleb mooduleid järjestikku ülevalt alla. Kontrolllipp määrab, kuidas õnnestumine või ebaõnnestumine mõjutab üldist autentimist:

  • „sufficient“: Edu lõpetab autentimise; ebaõnnestumist ignoreeritakse, kui teised moodulid on edukad.

  • „required“: Edu on kohustuslik; ebaõnnestumine põhjustab üldise autentimise ebaõnnestumise.

Mida see teie jaoks tähendab:

Alternatiivne autentimine (ülemine + piisav):

  • Saate sisse logida oma parooliga VÕI oma Nitrokey üksi

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

  • Kui Nitrokey autentimine ebaõnnestub või jäetakse vahele, töötab salasõna ikkagi

  • See on mugavam, kuid vähem turvaline kui teise faktori autentimine.

Security implications:

  • Ründaja saab teie parooliga sisse logida ilma teie Nitrokey-ta.

  • Ründaja, kellel on füüsiline juurdepääs teie Nitrokey’le, saab sisse logida ilma teie paroolita.

  • Kasutage seda ainult siis, kui mugavus on olulisem kui maksimaalne turvalisus.

Kontrollimislippude ja nende mõju üksikasjalik selgitus on esitatud aadressil Kontrolllippude.

PAM-moodulid

On olemas mitu PAM-moodulifaili, mida saab muuta vastavalt oma vajadustele:

  • 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

  • Alternatiivina võite lihtsalt muuta faili /etc/pam.d/sudo, kui soovite kasutada FIDO U2F-i, kui kasutate käsku sudo.

Kontrollmärgid

Kontrolllipp määrab, kuidas PAM-moodul käitub, kui autentimine õnnestub või ebaõnnestub. Sammus 6 kasutasime testimiseks sufficient lipu, seejärel muutsime selle jõustamiseks required lipuks.

Saadaval on järgmised juhtimispunktid:

  • 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<x>: Sarnaselt required siiski juhul, kui konkreetne moodul tagastab ebaõnnestumise, tagastatakse kontroll otse rakendusele või ülemale PAM-korstnale. See lipp võib teid ka arvutist välja lukustada, kui teil ei ole juurdepääsu Nitrokey’le.

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

Hoiatus

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

  • Te kaotate juurdepääsu oma arvutile, kui olete PAM-moodulit valesti konfigureerinud ja kasutasite required või requisite lipukesi.

  • Samuti kaotate võimaluse kasutada sudo, kui seadistate keskse autentimise kaardistamise. ja kasutasite required või requisite lipud.

  • Samuti võite kaotada võimaluse Gnome Display manager’i abil sisse logida, kui nutikaardiga sisselogimine on jõustatud ja te kasutasite lipukesi required või requisite. Lisainfo saamiseks vaadake veaotsingut.

Veaotsing

Probleemid kasutajakontole sisselogimisel GDM-i abil

Mõnel juhul, näiteks kui teil on installitud opencs-pkcs11, võib Gnome Display Manager (GDM) vaikimisi nõuda nutikaardiga sisselogimist kohe, kui mõni nutikaart (nagu teie Nitrokey) on ühendatud, isegi kui ühtegi nutikaarti pole kunagi konfigureeritud. See võib takistada sisselogimist oma kasutajakontole, kasutades u2f. Kui olete seadnud sufficient kontrolllipp, ühendage kõik kiipkaardid lahti ja logige sisse oma parooliga. Nutikaardi jõustamise väljalülitamiseks käivitage järgmine käsk:

$ 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