Prisijungimas prie darbalaukio ir „Linux“ naudotojo autentiškumo nustatymas

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Įvadas

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.

Jei norite naudoti „Nitrokey“ kaip alternatyvų prisijungimo būdą (slaptažodį ARBA „Nitrokey“), žr. Alternatyvus autentifikavimo būdas po to, kai baigsite pagrindinį vadovą.

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.

Įspėjimas

Šis vadovas gali užblokuoti jūsų kompiuterį. Turėtumėte žinoti apie šią riziką, nes rekomenduojama toliau pateiktus nurodymus pirmiausia naudoti antriniame kompiuteryje arba atlikus visą atsarginę kopiją.

Sukonfigūravę PAM modulius galite prarasti prieigą prie savo duomenų.

Reikalavimai

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Instrukcijos

  1. Sukurkite atsarginės kopijos naudotoją ir suteikite jam root teises

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

    Jei pageidaujate nustatyti U2F vienam naudotojui ir esate užblokuotas iš naudotojo seanso, vis tiek galėsite prisijungti naudodami <backup_user> ir tęsti techninę priežiūrą.

  2. Įdiegimas libpam-u2f

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

    $ sudo apt install libpam-u2f
    

    Pastaba

    • Arba galite sukurti libpam-u2fGit.

    • Norėdami patikrinti, ar biblioteka tinkamai įdiegta, įveskite šią komandą:

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

    Išvestis turėtų būti tokia:

    /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. Generuoti U2F konfigūracijos failą

    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
    

    Atkreipkite dėmesį, kad ši išvestis nebuvo sukurta tiesiogiai pamu2fcfg ir joje nėra jokios slaptos informacijos. Ji skirta tik parodyti numatomą išvesties formatą ir ilgį.

    Patarimas

    • The file must be named u2f_keys

    • Pirmiausia rekomenduojama instrukcijas išbandyti su vienu naudotoju. Kitų naudotojų konfigūracija bus pridėta 7 skyriuje.

  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

    Kad būtų užtikrintas didesnis saugumas, sugeneravę konfigūracijos failą, perkeliame sugeneruotą failą ~/u2f_keys į /etc/Nitrokey/ ir pakeisime prieigos teises naudodami šias komandas:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Pakeisti prijungiamą autentifikavimo modulį PAM

    Sukonfigūruokite PAM modulio failus adresu /etc/pam.d/. Tai bandomasis etapas - 8 žingsnyje konfigūracija bus įdiegta, kai patvirtinsite, kad ji veikia.

    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
    

    Patarimas

    • Bandymams naudojame pakankamą ir 8 žingsnyje pakeisime į privalomą.

    • Kadangi naudojame centrinį autentifikavimo atvaizdavimą, reikia nurodyti pam_u2f failo vietą, kurią reikia naudoti naudojant authfile parinktį.

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

    Pastaba

    Kodėl apatinė vieta? PAM apdoroja modulius iš viršaus į apačią. Jei U2F konfigūracija yra apačioje, pirmiausia tikrinamas slaptažodžio autentiškumas, todėl sukuriama antrojo veiksnio darbo eiga (slaptažodis + U2F).

    Apie alternatyvias autentifikavimo parinktis (slaptažodis ARBA Nitrokey) ir išsamius paaiškinimus, kaip eilutės padėtis ir kontrolinės vėliavėlės veikia autentifikavimą, žr. Alternatyvus autentifikavimo metodas.

    Pakeitę common-auth, galime išsaugoti ir išeiti iš failo.

    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:

    vaizdas6
  7. Setting up multiple users

    Patvirtinę, kad autentifikavimas naudojant „Nitrokey“ raktą veikia, galite nustatyti U2F konfigūracijos failą kitiems savo sistemos naudotojams.

    Įspėjimas

    Jei U2F konfigūracijos faile nenustatysite visų naudotojų ir toliau taikysite „Nitrokey“ autentifikavimą 8 žingsnyje, negalėsite prisijungti su jokiais nenustatytais naudotojais!

    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
    

    Norėdami pridėti atsarginį „Nitrokey“ raktą prie šio naudotojo, prijunkite atsarginį „Nitrokey“ raktą ir atlikite tuos pačius veiksmus kaip ir pagrindinio naudotojo atveju:

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

    Po to pakartokite šį procesą visiems sistemos naudotojams.

  8. Enforcing Nitrokey second factor authentication

    Galbūt pastebėjote, kad autentiškumo nustatymas naudojant „Nitrokey“ raktą dar nebuvo įvestas. Patvirtinę, kad autentifikavimas naudojant „Nitrokey“ veikia, galime jį įvesti pakeisdami sufficient vėliavą į required.

    Įspėjimas

    Prieš atlikdami šį veiksmą įsitikinkite, kad turite:

    • Patikrinta, ar autentiškumo patvirtinimas naudojant „Nitrokey“ iš tiesų veikia, priešingu atveju galite prarasti prieigą prie kompiuterio.

    • Sukurkite atsarginę „Nitrokey“ kopiją. Priešingu atveju, jei prarasite arba sugadinsite „Nitrokey“ raktą, neteksite prieigos prie kompiuterio!

    Elkitės atsargiai!

    Tam reikia redaguoti PAM konfigūracijos failą:

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

    Anksčiau pridėtoje eilutėje failo apačioje pakeiskite žodį sufficient į required. Tai turėtų atrodyti taip:

    #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

Jei pageidaujate naudoti „Nitrokey“ kaip alternatyvą slaptažodžiui (slaptažodis ARBA „Nitrokey“), galite tai konfigūruoti:

Configuration Steps:

  1. PAM konfigūracijos eilutę perkelkite į viršų ` /etc/pam.d/common-auth` (prieš kitus autentifikavimo modulius)

  2. Išlaikykite sufficient valdymo vėliavėlę

Tai leidžia autentiškumą nustatyti naudojant tik vieną iš šių veiksnių. Atkreipkite dėmesį, kad tai užtikrina mažesnį saugumą nei antrojo veiksnio autentifikavimas.

Autentifikavimo režimų supratimas

Pagal linijos padėties ir kontrolinės vėliavėlės derinį nustatomas autentifikavimo režimas:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Apačioje (po pam_unix)

sufficient

Second factor (testing)

Saugaus bandymo etapas

Apačioje (po pam_unix)

required

Antrasis veiksnys (priverstinis)

Production security (main guide)

Į viršų (prieš pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Kaip veikia PAM:

PAM apdoroja modulius nuosekliai iš viršaus į apačią. Kontrolinė vėliavėlė lemia, kaip sėkmė ar nesėkmė paveiks bendrą autentiškumo nustatymą:

  • sufficient: Sėkmė užbaigia autentifikavimą; nesėkmė ignoruojama, jei kiti moduliai sėkmingai veikia

  • required: Sėkmė yra privaloma; nesėkmė sukelia bendrą autentifikavimo nesėkmę

Ką tai reiškia jums:

Alternatyvus autentiškumo patvirtinimas (viršutinis + pakankamas):

  • Galite prisijungti naudodami savo slaptažodį ARBA vien tik „Nitrokey“.

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

  • Jei Nitrokey autentifikavimas nepavyksta arba yra praleidžiamas, slaptažodis vis tiek veiks.

  • Tai patogiau, bet mažiau saugu nei antrojo veiksnio autentifikavimas.

Security implications:

  • Jūsų slaptažodį turintis užpuolikas gali prisijungti be jūsų Nitrokey

  • Užpuolikas, turintis fizinę prieigą prie jūsų Nitrokey, gali prisijungti be jūsų slaptažodžio.

  • Naudokite tik tada, jei patogumas yra svarbiau už maksimalų saugumą.

Išsamūs kontrolinių vėliavų ir jų reikšmių paaiškinimai pateikti Kontrolinės vėliavos.

PAM moduliai

Yra keli PAM modulių failai, kuriuos galima keisti pagal savo poreikius:

  • 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

  • Arba galite tiesiog pakeisti /etc/pam.d/sudo failą, jei norite naudoti FIDO U2F, kai naudojate sudo komandą.

Valdymo vėliavos

Kontrolės vėliavėlė lemia, kaip PAM modulis elgsis, kai autentiškumo nustatymas pavyks arba nepavyks. 6 žingsnyje testavimui naudojome sufficient vėliavėlę, tada pakeitėme į required vėliavėlę vykdymo užtikrinimui.

Galimos šios valdymo vėliavos:

  • 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: Panašiai kaip required, tačiau tuo atveju, kai konkretus modulis grąžina nesėkmę, valdymas tiesiogiai grąžinamas programai arba aukštesniajam PAM kaminui. Ši vėliava taip pat gali užblokuoti kompiuterį, jei neturite prieigos prie „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.

Įspėjimas

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

  • Jei neteisingai sukonfigūravote PAM modulį ir naudojote required arba requisite vėliavėles, neteksite prieigos prie kompiuterio.

  • Taip pat neteksite galimybės naudoti sudo, jei nustatysite centrinį autentifikavimo atvaizdavimą. ir naudojote required arba </x>`requisite vėliavėles.

  • Taip pat galite prarasti galimybę prisijungti naudodami „Gnome“ ekrano tvarkyklę, jei yra įvestas prisijungimas naudojant lustinę kortelę ir naudojote required arba requisite vėliavėles. Daugiau informacijos rasite skyriuje Trikčių šalinimas.

Trikčių šalinimas

Problemos prisijungiant prie naudotojo paskyros naudojant GDM

Kai kuriais atvejais, pavyzdžiui, jei įdiegta opencs-pkcs11, „Gnome Display Manager“ (GDM) gali pagal numatytuosius nustatymus pradėti taikyti prisijungimo išmaniąja kortele funkciją, kai tik prijungiama bet kokia išmanioji kortelė (pvz., „Nitrokey“), net jei jokia išmanioji kortelė niekada nebuvo sukonfigūruota. Tai gali trukdyti prisijungti prie naudotojo paskyros naudojant u2f. Jei nustatėte sufficient kontrolės vėliavėlę, atjunkite visas išmaniąsias korteles ir prisijunkite naudodami savo slaptažodį. Norėdami išjungti išmaniųjų kortelių vykdymo užtikrinimą, vykdykite šią komandą:

$ 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