Asztali bejelentkezés és Linux felhasználói hitelesítés

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Bevezetés

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.

Ha a Nitrokey-t alternatív bejelentkezési módszerként szeretné használni (jelszó VAGY Nitrokey), a fő útmutató befejezése után tekintse meg a Alternatív hitelesítési módszer című részt.

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.

Figyelem

Az alábbi útmutató potenciálisan kizárhatja Önt a számítógépéből. Tisztában kell lennie ezekkel a kockázatokkal, mivel ajánlott először egy másodlagos számítógépen, vagy egy teljes biztonsági mentés után használni az alábbi utasításokat.

A PAM modulok konfigurálása után elveszítheti az adataihoz való hozzáférést.

Követelmények

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Utasítások

  1. Hozzon létre egy biztonsági mentési felhasználót, és adjon neki root jogosultságokat

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

    Abban az esetben, ha az U2F-et inkább egyetlen felhasználó számára szeretné beállítani, és ki van zárva a felhasználói munkamenetből, akkor is be tud jelentkezni a <backup_user> segítségével, és folytathatja a karbantartást.

  2. Telepítés libpam-u2f

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

    $ sudo apt install libpam-u2f
    

    Megjegyzés

    • Alternatívaként a libpam-u2f-t a Git-ből is építheted.

    • A könyvtár megfelelő telepítésének ellenőrzéséhez adja meg a következő parancsot:

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

    A kimenetnek a következőképp kell kinéznie:

    /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. Generálja az U2F konfigurációs fájlt

    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
    

    Figyelem, ezt a kimenetet nem közvetlenül a pamu2fcfg generálta, és nem tartalmaz érzékeny információkat. Kizárólag a kimenet várható formátumát és hosszát hivatott bemutatni.

    Javaslat

    • The file must be named u2f_keys

    • Javasoljuk, hogy először egyetlen felhasználóval tesztelje az utasításokat. A többi felhasználó konfigurációját a 7. szakaszban adjuk hozzá.

  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

    A nagyobb biztonság érdekében a konfigurációs fájl generálása után a generált ~/u2f_keys fájlt áthelyezzük a /etc/Nitrokey/ fájlba, és megváltoztatjuk a hozzáférési engedélyeket ezekkel a parancsokkal:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Módosítsa a csatlakoztatható hitelesítési modult PAM

    A PAM modulfájlok konfigurálása a /etc/pam.d/ alatt. Ez egy tesztelési fázis - a 8. lépésben a konfiguráció érvényre jut, amint megerősíti, hogy működik.

    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
    

    Javaslat

    • A teszteléshez az elégséges értéket használjuk, és a 8. lépésben a szükséges értékre változtatjuk.

    • Mivel a központi hitelesítési leképezést használjuk, meg kell adnunk a pam_u2f opcióval a authfile fájl helyét.

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

    Megjegyzés

    Miért az alsó elhelyezés? A PAM a modulokat felülről lefelé haladva dolgozza fel. Az U2F-konfiguráció alulra helyezése biztosítja, hogy a jelszavas hitelesítés kerüljön először ellenőrzésre, ami egy második faktoros munkafolyamatot hoz létre (jelszó + U2F).

    Az alternatív hitelesítési lehetőségek (jelszó VAGY Nitrokey), valamint a sorpozíció és a vezérlőjelzők hitelesítésre gyakorolt hatásának részletes magyarázatát lásd: Alternatív hitelesítési módszer.

    Miután módosítottuk a common-auth, menthetjük és kiléphetünk a fájlból.

    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

    Miután megerősítette, hogy a Nitrokey használatával történő hitelesítés működött, beállíthatja az U2F konfigurációs fájlt a rendszer többi felhasználója számára.

    Figyelem

    Ha nem állít be minden felhasználót az U2F konfigurációs fájlban, és folytatja a Nitrokey hitelesítés érvényesítését a 8. lépésben, akkor nem fog tudni bejelentkezni egyetlen nem konfigurált felhasználóval sem!

    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
    

    Ha egy tartalék Nitrokey-t szeretne hozzáadni ehhez a felhasználóhoz, csatlakoztassa a tartalék Nitrokey-t, és végezze el ugyanazt, mint az elsődleges felhasználó esetében:

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

    Ezután ismételje meg ezt a folyamatot a rendszer összes felhasználójánál.

  8. Enforcing Nitrokey second factor authentication

    Talán észrevetted, hogy a Nitrokey-vel történő hitelesítés még nem volt kötelező. Miután meggyőződtünk arról, hogy a Nitrokey használatával történő hitelesítés működik, a sufficient jelző required jelzőre történő megváltoztatásával érvényesíthetjük azt.

    Figyelem

    Mielőtt folytatná ezt a lépést, győződjön meg róla, hogy:

    • Leteszteltük, hogy a Nitrokey-vel történő hitelesítés valóban működik, ellenkező esetben elveszítheti a számítógépéhez való hozzáférést.

    • Állítson be egy tartalék Nitrokey-t. Ellenkező esetben, ha elveszíti vagy eltörik a Nitrokey-je, elveszíti a számítógépéhez való hozzáférést!

    Óvatosan járjon el!

    Ehhez a PAM konfigurációs fájlt kell szerkesztenie:

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

    A korábban hozzáadott sorban, a fájl alján változtassa meg a sufficient szót required szóra. Így kell kinéznie:

    #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

Ha a jelszó helyett inkább a Nitrokey-t szeretné használni (jelszó VAGY Nitrokey), akkor ezt is beállíthatja:

Configuration Steps:

  1. A PAM konfigurációs sor áthelyezése a tetejére a /etc/pam.d/common-auth (más auth modulok előtt)

  2. Tartsa meg a sufficient vezérlőjelzőt.

Ez lehetővé teszi a hitelesítést bármelyik tényezővel. Vegye figyelembe, hogy ez kevésbé biztonságos, mint a második faktoros hitelesítés.

A hitelesítési módok megértése

A sorpozíció és a vezérlőjelző kombinációja határozza meg a hitelesítési módot:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Alul (a pam_unix után)

sufficient

Second factor (testing)

Biztonságos tesztelési szakasz

Alul (a pam_unix után)

required

Második tényező (kényszerített)

Production security (main guide)

Top (a pam_unix előtt)

sufficient

Alternative factor

Convenience (password OR key)

Hogyan működik a PAM:

A PAM a modulokat szekvenciálisan, felülről lefelé haladva dolgozza fel. A vezérlőjelző határozza meg, hogy a siker vagy a kudarc hogyan befolyásolja a teljes hitelesítést:

  • sufficient: A siker befejezi a hitelesítést; a sikertelenséget figyelmen kívül hagyjuk, ha más modulok sikerrel járnak.

  • required: A siker kötelező; a sikertelenség általános hitelesítési hibát okoz.

Mit jelent ez az Ön számára:

Alternatív hitelesítés (felső + elegendő):

  • Bejelentkezhet a jelszavával VAGY a Nitrokey egyedül

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

  • Ha a Nitrokey-hitelesítés sikertelen vagy kihagyásra kerül, a jelszó akkor is működik.

  • Ez kényelmesebb, de kevésbé biztonságos, mint a másodfaktoros hitelesítés.

Security implications:

  • Egy támadó az Ön jelszavával a Nitrokey nélkül is bejelentkezhet.

  • Egy támadó, aki fizikai hozzáféréssel rendelkezik a Nitrokey-hez, a jelszava nélkül is be tud jelentkezni.

  • Csak akkor használja, ha a kényelem fontosabb, mint a maximális biztonság.

A vezérlőjelzők és következményeik részletes magyarázatát lásd: Control Flags.

PAM modulok

Számos PAM modul fájl létezik, amelyeket az Ön igényei szerint módosíthat:

  • 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

  • Alternatívaként egyszerűen módosíthatja a /etc/pam.d/sudo fájlt, ha a sudo parancs használatakor a FIDO U2F-et kívánja használni.

Vezérlő zászlók

A vezérlőjelző határozza meg, hogy a PAM modul hogyan viselkedjen a sikeres vagy sikertelen hitelesítés esetén. A 6. lépésben a sufficient zászlót használtuk a teszteléshez, majd a required zászlóra váltottunk a kényszerítéshez.

A rendelkezésre álló vezérlőjelzők a következők:

  • 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: Hasonlóan a required-hoz, azonban abban az esetben, ha egy adott modul hibát ad vissza, a vezérlés közvetlenül az alkalmazáshoz, vagy a felettes PAM stackhez kerül vissza. Ez a flag a számítógépből is kizárhatja Önt, ha nincs hozzáférése a Nitrokey-hez.

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

Figyelem

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

  • Elveszíti a számítógépéhez való hozzáférést, ha rosszul konfigurálta a PAM modult és a required vagy requisite zászlókat használta.

  • A sudo használatának lehetőségét is elveszíti, ha a Központi hitelesítési leképezést beállítja. és a required vagy requisite zászlókat használta.

  • Elveszítheti a Gnome Display managerrel való bejelentkezés lehetőségét is, ha az intelligens kártyás bejelentkezés érvényesül, és a required vagy a requisite zászlókat használta. További információért lásd a Hibaelhárítás című fejezetet.

Hibaelhárítás

Problémák bejelentkezés a felhasználói fiókba a GDM használatával

Bizonyos esetekben, például ha telepítve van az opencs-pkcs11, a Gnome Display Manager (GDM) alapértelmezés szerint kényszerítheti az intelligens kártyás bejelentkezést, amint bármilyen intelligens kártyát (például a Nitrokey-t) bedugja, még akkor is, ha soha nem volt konfigurálva semmilyen intelligens kártya. Ez megakadályozhatja, hogy az u2f használatával bejelentkezzen a felhasználói fiókjába. Ha beállítottad a sufficient vezérlőjelzőt, húzd ki az összes intelligens kártyát, és jelentkezz be a jelszavaddal. Az intelligens kártyák kényszerítésének kikapcsolásához futtassa a következő parancsot:

$ 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