Přihlašování k ploše a ověřování uživatelů systému Linux

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Úvod

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.

Pokud chcete místo toho použít jako alternativní metodu přihlášení Nitrokey (heslo NEBO Nitrokey), podívejte se po dokončení hlavního průvodce na Alternative Authentication Method.

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.

Varování

Následující průvodce vás může potenciálně zablokovat od počítače. Měli byste si být vědomi těchto rizik, protože se doporučuje použít níže uvedené pokyny nejprve na sekundárním počítači nebo po úplné záloze.

Po konfiguraci modulů PAM můžete ztratit přístup k datům.

Požadavky

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Pokyny

  1. Vytvořte záložního uživatele a dejte mu práva roota.

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

    V případě, že dáváte přednost nastavení U2F pro jednoho uživatele a jste uzamčeni z uživatelské relace, budete se moci přihlásit pomocí <backup_user> a pokračovat v údržbě.

  2. Instalace libpam-u2f

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

    $ sudo apt install libpam-u2f
    

    Poznámka

    • Případně můžete sestavit libpam-u2f z Git.

    • Chcete-li ověřit, zda je knihovna správně nainstalována, zadejte následující příkaz:

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

    Výstup by měl vypadat následovně:

    /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. Vytvoření konfiguračního souboru 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
    

    Všimněte si, že tento výstup nebyl vygenerován přímo pomocí pamu2fcfg a neobsahuje žádné citlivé informace. Jeho účelem je pouze ukázat očekávaný formát a délku výstupu.

    Tip

    • The file must be named u2f_keys

    • Doporučujeme nejprve vyzkoušet pokyny s jedním uživatelem. Konfigurace dalších uživatelů bude doplněna v části 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

    Pro lepší zabezpečení po vygenerování konfiguračního souboru přesuneme vygenerovaný soubor ~/u2f_keys na /etc/Nitrokey/ a změníme přístupová práva pomocí těchto příkazů:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Modifikace zásuvného modulu ověřování PAM

    Konfigurace souborů modulu PAM pod /etc/pam.d/. Jedná se o testovací fázi - v kroku 8 bude konfigurace vynucena, jakmile potvrdíte, že funguje.

    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
    

    Tip

    • Pro testování používáme dostatečný a v kroku 8 jej změníme na požadovaný.

    • Protože používáme centrální mapování ověřování, musíme zadat pam_u2f umístění souboru, který se má použít pomocí možnosti 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.].

    Poznámka

    Proč spodní umístění? PAM zpracovává moduly shora dolů. Umístění konfigurace U2F na konec zajistí, že se nejprve zkontroluje ověření heslem, čímž se vytvoří pracovní postup druhého faktoru (heslo + U2F).

    Alternativní možnosti ověřování (heslo NEBO Nitrokey) a podrobné vysvětlení vlivu polohy řádku a kontrolních příznaků na ověřování naleznete na adrese Alternativní metody ověřování.

    Po úpravě common-auth můžeme soubor uložit a ukončit.

    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

    Po potvrzení, že ověřování pomocí klíče Nitrokey funguje, můžete nastavit konfigurační soubor U2F pro ostatní uživatele v systému.

    Varování

    Pokud nenastavíte všechny uživatele v konfiguračním souboru U2F a budete pokračovat ve vynucování ověřování Nitrokey v kroku 8, nebudete se moci přihlásit s žádným nenakonfigurovaným uživatelem!

    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
    

    Chcete-li k tomuto uživateli přidat záložní klíč Nitrokey, připojte záložní klíč Nitrokey a postupujte stejně jako v případě primárního uživatele:

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

    Poté tento postup zopakujte pro všechny uživatele v systému.

  8. Enforcing Nitrokey second factor authentication

    Možná jste si všimli, že ověřování pomocí klíče Nitrokey ještě nebylo vynuceno. Po potvrzení, že ověřování pomocí klíče Nitrokey funguje, jej můžeme vynutit změnou příznaku sufficient na required.

    Varování

    Před pokračováním v tomto kroku se ujistěte, že máte:

    • Vyzkoušeno, že ověřování pomocí klíče Nitrokey skutečně funguje, jinak můžete ztratit přístup k počítači.

    • Nastavení záložního klíče Nitrokey. V opačném případě ztratíte nebo rozbijete klíč Nitrokey a ztratíte přístup k počítači!

    Postupujte opatrně!

    K tomu je třeba upravit konfigurační soubor PAM:

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

    V řádku, který jste přidali dříve na konec souboru, změňte slovo sufficient na required. Mělo by to vypadat takto:

    #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

Pokud dáváte přednost použití klíče Nitrokey jako alternativy k heslu (heslo NEBO klíč Nitrokey), můžete jej nakonfigurovat:

Configuration Steps:

  1. Přesunutí konfiguračního řádku PAM do horní části **** ` /etc/pam.d/common-auth` (před ostatní auth moduly).

  2. Zachovejte kontrolní příznak sufficient

To umožňuje ověřování pouze pomocí jednoho z faktorů. Všimněte si, že toto ověření poskytuje nižší zabezpečení než ověření druhým faktorem.

Porozumění režimům ověřování

Kombinace polohy řádku a kontrolního příznaku určuje režim ověřování:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Spodní část (za pam_unix)

sufficient

Second factor (testing)

Fáze bezpečného testování

Spodní část (za pam_unix)

required

Druhý faktor (vynucený)

Production security (main guide)

Top (před pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Jak funguje PAM:

PAM zpracovává moduly postupně shora dolů. Kontrolní příznak určuje, jak úspěch nebo neúspěch ovlivní celkové ověření:

  • sufficient: Úspěch dokončí autentizaci; neúspěch je ignorován, pokud ostatní moduly uspějí

  • required: Úspěch je povinný; neúspěch způsobí celkové selhání autentizace

Co to pro vás znamená:

Alternativní ověřování (nahoře + dostatečné):

  • Můžete se přihlásit pomocí hesla NEBO na pouze pomocí klíče Nitrokey.

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

  • Pokud se ověřování pomocí klíče Nitrokey nezdaří nebo je přeskočeno, heslo bude stále fungovat.

  • Je to pohodlnější, ale méně bezpečné než ověření druhým faktorem.

Security implications:

  • Útočník s vaším heslem se může přihlásit bez vašeho Nitrokey.

  • Útočník s fyzickým přístupem k vašemu Nitrokey se může přihlásit bez vašeho hesla.

  • Používejte ji pouze v případě, že je pohodlí důležitější než maximální zabezpečení.

Podrobné vysvětlení řídicích příznaků a jejich důsledků naleznete na adrese Control Flags.

Moduly PAM

Existuje několik souborů modulů PAM, které lze upravit podle vašich potřeb:

  • 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

  • Případně můžete pouze upravit soubor /etc/pam.d/sudo, pokud chcete při použití příkazu sudo použít FIDO U2F.

Kontrolní příznaky

Kontrolní příznak určuje, jak se modul PAM zachová při úspěšné nebo neúspěšné autentizaci. V kroku 6 jsme pro testování použili příznak sufficient, pro vynucení jsme jej změnili na required.

K dispozici jsou tyto kontrolní příznaky:

  • 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: Podobně jako required, avšak v případě, že konkrétní modul vrátí chybu, je řízení vráceno přímo aplikaci nebo nadřízenému zásobníku PAM. Tento příznak může také zablokovat váš počítač, pokud nemáte přístup ke klíči 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.

Varování

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

  • Pokud jste špatně nakonfigurovali modul PAM a použili příznaky required nebo requisite, ztratíte přístup k počítači.

  • Pokud nastavíte centrální mapování ověřování, ztratíte také možnost používat sudo. a použili příznaky required nebo requisite.

  • Pokud je vynuceno přihlášení pomocí čipové karty a použili jste příznaky required nebo requisite, můžete také ztratit možnost přihlášení pomocí správce zobrazení Gnome. Další informace naleznete v části Řešení problémů.

Řešení problémů

Problémy s přihlášením k uživatelskému účtu pomocí GDM

V některých případech, například pokud máte nainstalovaný program opencs-pkcs11, může Správce zobrazení Gnome (GDM) ve výchozím nastavení vynucovat přihlášení pomocí čipové karty, jakmile je připojena jakákoli čipová karta (například Nitrokey), i když žádná čipová karta nebyla nikdy nakonfigurována. To může zabránit přihlášení k uživatelskému účtu pomocí u2f. Pokud jste nastavili kontrolní příznak sufficient, odpojte všechny čipové karty a přihlaste se pomocí hesla. Chcete-li vypnout vynucování čipových karet, spusťte následující příkaz:

$ 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