Autentificare desktop și autentificare utilizator Linux¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ 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¶
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.Instalare
libpam-u2f`On Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom 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
Generați fișierul de configurare U2F
To generate the configuration file we will use the
pamu2fcfgutility. 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,
pamu2fcfgwill append its output theu2f_keysfile 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_keysEste 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.
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 -nlike 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
Securing the config file
Pentru o mai bună securitate, după ce fișierul de configurare a fost generat, vom muta fișierul generat
~/u2f_keysla/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
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-authfile 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țiuneaauthfile.If you often forget to insert the key,
promptoption makespam_u2fprintInsert 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,
cueoption will makepam_u2fprintPlease 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 lsin the terminal. After typing in your password you should be prompted with the messagePlease 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:
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,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile 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.
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înrequired.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înrequired. 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:
Mutați linia de configurare PAM în top din
/etc/pam.d/common-auth(înaintea altor module auth)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:
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Jos (după pam_unix) |
|
Second factor (testing) |
Faza de testare în condiții de siguranță |
Jos (după pam_unix) |
|
Al doilea factor (aplicat) |
Production security (main guide) |
Top (înainte de pam_unix) |
|
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șescrequired: 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-authfile, you will be able to use you Nitrokey for 2nd factor authentication for graphic login andsudo.If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/etc/pam.d/gdm-passwordAlternativ, puteți modifica doar fișierul
/etc/pam.d/sudo`dacă doriți să utilizați FIDO U2F atunci când folosiți comandasudo.
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. Thesufficientflag 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. Theoptionalflag is considered safe to use for testing purposes.
Atenționare
If
requiredorrequisiteis 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
requiredsaurequisite.De asemenea, veți pierde posibilitatea de a utiliza
sudo`dacă configurați Maparea de autentificare centrală și ați folosit stegulețelerequiredsaurequisite`.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
requiredsaurequisite. 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