Darbvirsmas pieteikšanās un Linux lietotāja autentifikācija

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Ievads

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.

Ja vēlaties izmantot Nitrokey kā alternatīvu pieteikšanās metodi (paroli VAI Nitrokey), skatiet Alternatīva autentifikācijas metode pēc galvenās rokasgrāmatas pabeigšanas.

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.

Brīdinājums

Iespējams, ka turpmāk sniegtā rokasgrāmata var bloķēt jūsu datoru. Jums jāapzinās šie riski, jo turpmāk sniegtos norādījumus ieteicams vispirms izmantot sekundārā datorā vai pēc pilnas rezerves kopijas izveides.

Pēc PAM moduļu konfigurēšanas varat zaudēt piekļuvi saviem datiem.

Prasības

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Instrukcijas

  1. izveidojiet dublējuma lietotāju un piešķiriet tam root privilēģijas

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

    Ja vēlaties iestatīt U2F vienam lietotājam un esat bloķēts no lietotāja sesijas, joprojām varēsiet pieteikties, izmantojot <backup_user>, un turpināt uzturēšanu.

  2. Instalēšana libpam-u2f`

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

    $ sudo apt install libpam-u2f
    

    Piezīme

    • Alternatīvi varat izveidot libpam-u2f no Git.

    • Lai pārbaudītu, vai bibliotēka ir pareizi instalēta, ievadiet šādu komandu:

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

    Izvades rezultātam jābūt šādam:

    /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. UF konfigurācijas faila ģenerēšana

    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
    

    Ņemiet vērā, ka šo izvades rezultātu tieši neradīja pamu2fcfg, un tajā nav sensitīvas informācijas. Tā ir domāta tikai tam, lai parādītu paredzamo izvades formātu un garumu.

    Padoms

    • The file must be named u2f_keys

    • Ieteicams instrukcijas vispirms pārbaudīt ar vienu lietotāju. Citu lietotāju konfigurācija tiks pievienota 7. sadaļā.

  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

    Labākai drošībai pēc konfigurācijas faila ģenerēšanas mēs pārvietosim ģenerēto failu ~/u2f_keys uz /etc/Nitrokey/ un mainīsim piekļuves atļaujas, izmantojot šīs komandas:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Modificēt pievienojamo autentifikācijas moduli PAM

    Konfigurējiet PAM moduļa failus /etc/pam.d/. Šis ir testēšanas posms - 8. posmā konfigurācija tiks ieviesta, tiklīdz apstiprināsiet, ka tā darbojas.

    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
    

    Padoms

    • Testēšanai mēs izmantojam pietiekamu un 8. solī to mainīsim uz obligātu.

    • Tā kā mēs izmantojam centrālo autentifikācijas kartēšanu, mums jānorāda pam_u2f faila atrašanās vieta, kas jāizmanto ar </x>`authfile iespēju.

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

    Piezīme

    Kāpēc izvietojums apakšā? PAM apstrādā moduļus no augšas uz leju. U2F konfigurācijas izvietošana apakšā nodrošina, ka vispirms tiek pārbaudīta paroles autentifikācija, tādējādi radot otrā faktora darba plūsmu (parole + U2F).

    Alternatīvas autentifikācijas iespējas (parole VAI Nitrokey) un detalizētus skaidrojumus par to, kā rindas pozīcija un vadības karodziņi ietekmē autentifikāciju, skatiet Alternatīva autentifikācijas metode.

    Kad esam modificējuši common-auth, varam saglabāt un iziet no faila.

    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:

    attēls6
  7. Setting up multiple users

    Pēc tam, kad esat pārliecinājies, ka autentifikācija, izmantojot Nitrokey, ir darbojusies, varat iestatīt U2F konfigurācijas failu citiem sistēmas lietotājiem.

    Brīdinājums

    Ja U2F konfigurācijas failā nebūsiet iestatījis visus lietotājus un turpināsiet Nitrokey autentifikācijas ieviešanu 8. solī, jūs nevarēsiet pieteikties, izmantojot jebkuru nekonfigurētu lietotāju!

    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
    

    Lai šim lietotājam pievienotu dublējuma Nitrokey, pievienojiet dublējuma Nitrokey un rīkojieties tāpat kā ar galveno lietotāju:

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

    Pēc tam atkārtojiet šo procesu visiem sistēmas lietotājiem.

  8. Enforcing Nitrokey second factor authentication

    Iespējams, esat pamanījis, ka autentifikācija ar Nitrokey vēl nav ieviesta. Pēc tam, kad esam pārliecinājušies, ka autentifikācija, izmantojot Nitrokey, darbojas, mēs varam to ieviest, mainot sufficient karogu uz required.

    Brīdinājums

    Pirms turpināt šo soli, pārliecinieties, ka jums ir:

    • Pārbaudīts, vai autentifikācija ar Nitrokey patiešām darbojas, pretējā gadījumā varat zaudēt piekļuvi datoram.

    • Iestatiet rezerves kopiju Nitrokey. Pretējā gadījumā, ja Nitrokey pazaudēsiet vai sabojāsiet, jūs zaudēsiet piekļuvi datoram!

    Rīkojieties uzmanīgi!

    Lai to izdarītu, ir jārediģē PAM konfigurācijas fails:

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

    Iepriekš pievienotajā rindā faila apakšā mainiet vārdu sufficient uz required. Tam vajadzētu izskatīties šādi:

    #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

Ja vēlaties izmantot Nitrokey kā alternatīvu parolei (parole VAI Nitrokey), varat to konfigurēt:

Configuration Steps:

  1. Pārvietot PAM konfigurācijas rindu uz top no /etc/pam.d/common-auth (pirms citiem auth moduļiem).

  2. Saglabāt sufficient kontroles karodziņu

Tas ļauj veikt autentifikāciju, izmantojot tikai vienu vai otru faktoru. Ņemiet vērā, ka tas nodrošina mazāku drošību nekā otrā faktora autentifikācija.

Izpratne par autentifikācijas režīmiem

Autentifikācijas režīmu nosaka līnijas pozīcijas un vadības karodziņa kombinācija:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Apakšējā daļa (pēc pam_unix)

sufficient

Second factor (testing)

Drošas testēšanas posms

Apakšējā daļa (pēc pam_unix)

required

Otrais faktors (piespiedu kārtā)

Production security (main guide)

Top (pirms pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Kā darbojas PAM:

PAM apstrādā moduļus secīgi no augšas uz leju. Kontroles karodziņš nosaka, kā veiksme vai neveiksme ietekmē kopējo autentifikāciju:

  • sufficient: Veiksmīga autentifikācija tiek pabeigta; neveiksme tiek ignorēta, ja citi moduļi ir veiksmīgi.

  • required: Veiksme ir obligāta; neveiksme izraisa vispārēju autentifikācijas neveiksmi

Ko tas nozīmē jums:

Alternatīvā autentifikācija (augšējā + pietiekamā):

  • Varat pieteikties, izmantojot savu paroli VAI tikai ar Nitrokey.

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

  • Ja Nitrokey autentifikācija neizdodas vai tiek izlaista, parole joprojām darbojas.

  • Tas ir ērtāk, bet mazāk droši nekā otrā faktora autentifikācija.

Security implications:

  • Uzbrucējs, kam ir jūsu parole, var pieteikties bez jūsu Nitrokey.

  • Uzbrucējs, kam ir fiziska piekļuve jūsu Nitrokey, var pieteikties bez jūsu paroles.

  • Izmantojiet to tikai tad, ja ērtības ir svarīgākas par maksimālu drošību.

Sīkāku skaidrojumu par vadības karodziņiem un to nozīmi skatiet Vadības karodziņi.

PAM moduļi

Ir vairāki PAM moduļu faili, kurus var modificēt atbilstoši jūsu vajadzībām:

  • 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

  • Varat arī vienkārši modificēt /etc/pam.d/sudo failu, ja vēlaties izmantot FIDO U2F, izmantojot </x>`sudo komandas.

Kontroles karodziņi

Kontroles karodziņš nosaka, kā PAM modulis rīkojas, ja autentifikācija ir veiksmīga vai neveiksmīga. 6. solī mēs testēšanai izmantojām sufficient karogu, pēc tam to nomainījām uz required karogu, lai nodrošinātu izpildi.

Pieejamie kontroles karodziņi ir šādi:

  • 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: Līdzīgi kā <required, tomēr gadījumā, ja konkrēts modulis atgriež kļūdu, kontrole tiek tieši atdota lietojumprogrammai vai augstākam PAM žetonam. Šis karodziņš var arī bloķēt jūsu datoru, ja jums nav piekļuves 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.

Brīdinājums

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

  • Jūs zaudēsiet piekļuvi datoram, ja nepareizi konfigurēsiet PAM moduli un izmantosiet required vai requisite karogus.

  • Ja iestatīsiet centrālo autentifikācijas kartēšanu, zaudēsiet arī iespēju izmantot sudo, ja iestatīsiet centrālo autentifikācijas kartēšanu. un izmantojāt required vai </x>`requisite karogus.

  • Jūs varat arī zaudēt iespēju pieteikties, izmantojot Gnome Display Manager, ja ir ieviesta pieteikšanās ar viedkarti un jūs izmantojāt required vai requisite karodziņus. Lai iegūtu papildu informāciju, skatiet sadaļu Problēmu novēršana.

Problēmu novēršana

Problēmas ar pieteikšanos lietotāja kontā, izmantojot GDM

Dažos gadījumos, piemēram, ja ir instalēta opencs-pkcs11, Gnome Display Manager (GDM) var pēc noklusējuma ieviest pieteikšanos ar viedkarti, tiklīdz ir pievienota kāda viedkarte (piemēram, Nitrokey), pat ja viedkarte nekad nav konfigurēta. Tas var neļaut jums pieteikties savā lietotāja kontā, izmantojot u2f. Ja esat iestatījis sufficient kontroles karogu, atvienojiet visas viedkartes un piesakieties, izmantojot savu paroli. Lai izslēgtu viedkaršu izpildes nodrošināšanu, izpildiet šādu komandu:

$ 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