Autentificare desktop și autentificare utilizator Linux

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Introducere

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.

Dacă doriți să utilizați Nitrokey ca metodă alternativă de autentificare (parolă SAU Nitrokey), consultați Metodă alternativă de autentificare după finalizarea ghidului principal.

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.

Atenționare

Următorul ghid vă poate bloca în mod potențial accesul la computer. Trebuie să fiți conștient de aceste riscuri, deoarece se recomandă să utilizați mai întâi instrucțiunile de mai jos pe un computer secundar sau după o copie de rezervă completă.

Este posibil să pierdeți accesul la datele dvs. după configurarea modulelor PAM.

Cerințe

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Instrucțiuni

  1. Creează un utilizator de rezervă și acordă-i privilegii de root

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

    În cazul în care preferați să configurați U2F pentru un singur utilizator și sunteți blocat în afara sesiunii de utilizator, veți putea totuși să vă conectați cu <backup_user> și să continuați cu întreținerea.

  2. Instalare libpam-u2f`

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

    $ sudo apt install libpam-u2f
    

    Notă

    • Alternativ, puteți construi libpam-u2f` din Git.

    • Pentru a verifica dacă biblioteca este instalată corect, introduceți următoarea comandă:

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

    Rezultatul ar trebui să fie ceva de genul următor:

    /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. Generați fișierul de configurare 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
    

    Atenție, acest rezultat nu a fost generat direct de pamu2fcfg și nu conține informații sensibile. Scopul său este doar de a arăta formatul și lungimea așteptate ale rezultatului.

    Sfat

    • The file must be named u2f_keys

    • Este recomandat să testați mai întâi instrucțiunile cu un singur utilizator. Configurația altor utilizatori va fi adăugată în secțiunea 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

    Pentru o mai bună securitate, după ce fișierul de configurare a fost generat, vom muta fișierul generat ~/u2f_keys la /etc/Nitrokey/ și vom schimba permisiunile de acces folosind aceste comenzi:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Modificați modulul de autentificare Pluggable PAM`

    Configurați fișierele modulului PAM sub /etc/pam.d/. Aceasta este o fază de testare - pasul 8 va aplica configurația după ce veți confirma că funcționează.

    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
    

    Sfat

    • Noi folosim sufficient pentru testare și vom trece la required în pasul 8.

    • Deoarece folosim Central Authentication Mapping, trebuie să spunem pam_u2f` locația fișierului care trebuie utilizat cu opțiunea 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.].

    Notă

    De ce plasarea de jos? PAM procesează modulele de sus în jos. Plasarea configurației U2F în partea de jos asigură că autentificarea prin parolă este verificată prima, creând un flux de lucru cu al doilea factor (parolă + U2F).

    Pentru opțiuni alternative de autentificare (parolă SAU Nitrokey) și explicații detaliate ale modului în care poziția liniei și stegulețele de control afectează autentificarea, consultați Metodă alternativă de autentificare.

    După ce am modificat common-auth, putem salva și ieși din fișier.

    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

    După ce ați confirmat că autentificarea folosind Nitrokey a funcționat, puteți configura fișierul de configurare U2F pentru ceilalți utilizatori de pe sistem.

    Atenționare

    Dacă nu configurați toți utilizatorii în fișierul de configurare U2F și continuați să aplicați autentificarea Nitrokey la pasul 8, nu veți putea să vă conectați cu niciun utilizator care nu este configurat!

    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
    

    Pentru a adăuga un Nitrokey de rezervă la acest utilizator, conectați Nitrokey-ul de rezervă și procedați la fel ca pentru utilizatorul principal:

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

    După aceea, repetați acest proces pentru toți utilizatorii de pe sistem.

  8. Enforcing Nitrokey second factor authentication

    Este posibil să fi observat că autentificarea cu Nitrokey nu a fost încă impusă. După ce confirmăm că autentificarea prin Nitrokey funcționează, o putem aplica prin schimbarea steagului sufficient în required.

    Atenționare

    Înainte de a continua cu acest pas, asigurați-vă că aveți:

    • Am verificat dacă autentificarea cu Nitrokey funcționează într-adevăr, altfel puteți pierde accesul la computer.

    • Configurați un Nitrokey de rezervă. În caz contrar, dacă pierdeți sau rupeți Nitrokey-ul, veți pierde accesul la computer!

    Procedați cu atenție!

    Pentru a face acest lucru, trebuie să editați fișierul de configurare PAM:

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

    În linia pe care ați adăugat-o mai devreme în partea de jos a fișierului, schimbați cuvântul sufficient în required. Ar trebui să arate astfel:

    #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

Dacă preferați să utilizați Nitrokey ca alternativă la parolă (parolă SAU Nitrokey), puteți configura acest lucru:

Configuration Steps:

  1. Mutați linia de configurare PAM în top din /etc/pam.d/common-auth (înaintea altor module auth)

  2. Păstrați steagul de control sufficient

Acest lucru permite autentificarea doar cu oricare dintre factori. Rețineți că aceasta oferă mai puțină securitate decât autentificarea cu al doilea factor.

Înțelegerea modurilor de autentificare

Combinația dintre poziția liniei și steagul de control determină modul dvs. de autentificare:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Jos (după pam_unix)

sufficient

Second factor (testing)

Faza de testare în condiții de siguranță

Jos (după pam_unix)

required

Al doilea factor (aplicat)

Production security (main guide)

Top (înainte de pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Cum funcționează PAM:

PAM procesează modulele secvențial de sus în jos. Indicatorul de control determină modul în care succesul sau eșecul afectează autentificarea generală:

  • sufficient: Succesul finalizează autentificarea; eșecul este ignorat dacă alte module reușesc

  • required: Succesul este obligatoriu; eșecul cauzează eșecul general al autentificării

Ce înseamnă acest lucru pentru dvs:

Autentificare alternativă (sus + suficient):

  • Vă puteți conecta cu parola SAU doar cu Nitrokey

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

  • Dacă autentificarea Nitrokey eșuează sau este ignorată, parola va funcționa în continuare

  • Aceasta este mai convenabilă, dar mai puțin sigură decât autentificarea cu al doilea factor

Security implications:

  • Un atacator cu parola dvs. se poate conecta fără Nitrokey

  • Un atacator cu acces fizic la Nitrokey se poate conecta fără parola dvs.

  • Utilizați această opțiune numai dacă confortul este mai important decât securitatea maximă

Pentru explicații detaliate privind steagurile de control și implicațiile acestora, consultați Steaguri de control.

Module PAM

Există mai multe fișiere de module PAM care pot fi modificate în funcție de nevoile dumneavoastră:

  • 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

  • Alternativ, puteți modifica doar fișierul /etc/pam.d/sudo` dacă doriți să utilizați FIDO U2F atunci când folosiți comanda sudo.

Stegulețe de control

Steagul de control determină modul în care se comportă modulul PAM atunci când autentificarea reușește sau nu. La pasul 6 am folosit steagul sufficient pentru testare, apoi am trecut la required pentru aplicare.

Steagurile de control disponibile sunt:

  • 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: Similar cu `required, însă, în cazul în care un anumit modul returnează un eșec, controlul este returnat direct aplicației sau stivei PAM superioare. Acest indicator vă poate bloca, de asemenea, în afara calculatorului dacă nu aveți acces la 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.

Atenționare

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

  • Veți pierde accesul la computer dacă ați configurat greșit modulul PAM și ați folosit stegulețele required sau requisite.

  • De asemenea, veți pierde posibilitatea de a utiliza sudo` dacă configurați Maparea de autentificare centrală și ați folosit stegulețele required sau requisite`.

  • De asemenea, este posibil să pierdeți posibilitatea de a vă conecta utilizând Gnome Display manager dacă este impusă conectarea cu cardul inteligent și ați utilizat steagurile required sau requisite. Consultați depanarea pentru informații suplimentare.

Depanare

Probleme de logare în contul de utilizator utilizând GDM

În unele cazuri, de exemplu dacă aveți opencs-pkcs11 instalat, Gnome Display Manager (GDM) poate aplica în mod implicit autentificarea prin card inteligent de îndată ce un card inteligent (cum ar fi Nitrokey) este conectat, chiar dacă nu a fost configurat niciun card inteligent. Acest lucru vă poate împiedica să vă conectați la contul dvs. de utilizator utilizând u2f. Dacă ați setat steagul de control sufficient, scoateți din priză toate cardurile inteligente și conectați-vă folosind parola dumneavoastră. Pentru a dezactiva impunerea cardului inteligent, executați următoarea comandă:

$ 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