Työpöydän kirjautuminen ja Linux-käyttäjän todennus

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Johdanto

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.

Jos haluat käyttää Nitrokeyta vaihtoehtoisena kirjautumismenetelmänä (salasana TAI Nitrokey), katso Vaihtoehtoinen todennusmenetelmä pääoppaan suorittamisen jälkeen.

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.

Varoitus

Seuraava opas voi mahdollisesti lukita sinut ulos tietokoneesta. Sinun on syytä olla tietoinen näistä riskeistä, sillä on suositeltavaa käyttää alla olevia ohjeita ensin toissijaisella tietokoneella tai täydellisen varmuuskopioinnin jälkeen.

Saatat menettää pääsyn tietoihin, kun olet määrittänyt PAM-moduulit.

Vaatimukset

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Ohjeet

  1. Luo varmuuskopiointikäyttäjä ja anna sille pääkäyttäjän oikeudet.

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

    Jos haluat asentaa U2F:n yhdelle käyttäjälle ja olet lukittu ulos käyttäjäistunnostasi, voit silti kirjautua sisään <backup_user> ja jatkaa ylläpitoa.

  2. Asennus libpam-u2f`

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

    $ sudo apt install libpam-u2f
    

    Muista

    • Vaihtoehtoisesti voit rakentaa libpam-u2f:stä Git.

    • Voit tarkistaa, että kirjasto on asennettu oikein, antamalla seuraavan komennon:

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

    Tuloksen pitäisi olla jotakuinkin seuraavanlainen:

    /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. Luo U2F-konfigurointitiedosto

    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
    

    Huomaa, että tätä tulostetta ei tuotettu suoraan pamu2fcfg eikä se sisällä arkaluonteisia tietoja. Sen tarkoituksena on ainoastaan näyttää tulosteen odotettu muoto ja pituus.

    Vihje

    • The file must be named u2f_keys

    • On suositeltavaa testata ohjeita ensin yhdellä käyttäjällä. Muiden käyttäjien konfigurointi lisätään kohdassa 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

    Paremman turvallisuuden vuoksi siirrämme luodun tiedoston ~/u2f_keys osoitteeseen /etc/Nitrokey/ ja muutamme käyttöoikeudet näillä komennoilla:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Muokkaa liitettävissä olevaa todennusmoduulia PAM

    Määritä PAM-moduulitiedostot osoitteessa /etc/pam.d/. Tämä on testausvaihe - vaiheessa 8 konfiguraatio otetaan käyttöön, kun olet varmistanut, että se toimii.

    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
    

    Vihje

    • Käytämme testaukseen riittävää, ja vaihdamme sen vaadittavaksi vaiheessa 8.

    • Koska käytämme Central Authentication Mappingia, meidän on ilmoitettava pam_u2f-tiedoston sijainti, jota käytetään authfile-vaihtoehdon avulla.

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

    Muista

    Miksi alhaalle sijoittaminen? PAM käsittelee moduulit ylhäältä alaspäin. U2F-konfiguraation sijoittaminen alareunaan varmistaa, että salasanan todennus tarkistetaan ensin, mikä luo toisen tekijän työnkulun (salasana + U2F).

    Vaihtoehtoiset todennusvaihtoehdot (salasana TAI Nitrokey) ja yksityiskohtaiset selitykset siitä, miten rivin sijainti ja ohjausliput vaikuttavat todennukseen, löytyvät osoitteesta Vaihtoehtoinen todennusmenetelmä.

    Kun olemme muuttaneet common-auth, voimme tallentaa ja poistua tiedostosta.

    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

    Kun olet varmistanut, että todennus Nitrokey-avaimella toimi, voit määrittää U2F-määritystiedoston järjestelmän muille käyttäjille.

    Varoitus

    Jos et määritä kaikkia käyttäjiä U2F-määritystiedostossa ja jatkat Nitrokey-todennuksen käyttöönottoa vaiheessa 8, et voi kirjautua sisään millään määrittämättömällä käyttäjällä!

    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
    

    Jos haluat lisätä tälle käyttäjälle varmuuskopio Nitrokey-avaimen, liitä varmuuskopio Nitrokey-avaimesi ja toimi samalla tavalla kuin pääkäyttäjän kohdalla:

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

    Toista tämän jälkeen tämä prosessi kaikille järjestelmän käyttäjille.

  8. Enforcing Nitrokey second factor authentication

    Olet ehkä huomannut, että Nitrokey-tunnistautumista ei ole vielä pakotettu. Kun olemme varmistaneet, että tunnistautuminen Nitrokey:n avulla toimii, voimme ottaa sen käyttöön muuttamalla sufficient -lippulauseen muotoon required.

    Varoitus

    Ennen kuin jatkat tätä vaihetta, varmista, että sinulla on:

    • Testasin, että todennus Nitrokeyllä todellakin toimii, muuten voit menettää pääsyn tietokoneeseen.

    • Määritä Nitrokey-varmuuskopio. Jos muuten menetät tai rikot Nitrokey-avaimesi, menetät pääsyn tietokoneeseesi!

    Toimi varovasti!

    Tätä varten sinun on muokattava PAM -määritystiedostoa:

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

    Vaihda aiemmin lisäämässäsi rivissä tiedoston alaosassa sana sufficient sanaksi required. Sen pitäisi näyttää tältä:

    #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

Jos haluat käyttää Nitrokeyta salasanan vaihtoehtona (salasana TAI Nitrokey), voit määrittää sen sijaan tämän:

Configuration Steps:

  1. Siirrä PAM-konfiguraatiorivi alkuun ` /etc/pam.d/common-auth` (ennen muita auth-moduuleja).

  2. Säilytä sufficient -valvontalippu.

Tämä mahdollistaa todennuksen pelkästään jommallakummalla tekijällä. Huomaa, että tämä tarjoaa vähemmän turvallisuutta kuin toisen tekijän todennus.

Tunnistamistapojen ymmärtäminen

Rivin sijainnin ja ohjauslipun yhdistelmä määrittää todennustilan:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Bottom (pam_unixin jälkeen)

sufficient

Second factor (testing)

Turvallinen testausvaihe

Bottom (pam_unixin jälkeen)

required

Toinen tekijä (pakotettu)

Production security (main guide)

Top (ennen pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Miten PAM toimii:

PAM käsittelee moduulit peräkkäin ylhäältä alaspäin. Ohjauslippu määrittää, miten onnistuminen tai epäonnistuminen vaikuttaa kokonaistodennukseen:

  • sufficient: Onnistuminen päättää todennuksen; epäonnistuminen jätetään huomiotta, jos muut moduulit onnistuvat.

  • required: Onnistuminen on pakollista; epäonnistuminen aiheuttaa yleisen todennuksen epäonnistumisen.

Mitä tämä tarkoittaa sinulle:

Vaihtoehtoinen todentaminen (ylin + riittävä):

  • Voit kirjautua sisään salasanallasi TAI pelkällä Nitrokey-avaimellasi.

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

  • Jos Nitrokey-todennus epäonnistuu tai ohitetaan, salasana toimii silti.

  • Tämä on kätevämpi mutta vähemmän turvallinen kuin toisen tekijän todennus.

Security implications:

  • Hyökkääjä, jolla on salasanasi, voi kirjautua sisään ilman Nitrokey-avainta.

  • Hyökkääjä, jolla on fyysinen pääsy Nitrokey-avaimeesi, voi kirjautua sisään ilman salasanaasi.

  • Käytä tätä vain, jos mukavuus on tärkeämpää kuin maksimaalinen turvallisuus.

Yksityiskohtaiset selitykset ohjauslippujen ja niiden vaikutusten osalta on osoitteessa Control Flags.

PAM-moduulit

On olemassa useita PAM-moduulitiedostoja, joita voidaan muokata tarpeidesi mukaan:

  • 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

  • Vaihtoehtoisesti voit vain muuttaa tiedostoa /etc/pam.d/sudo, jos haluat käyttää FIDO U2F:ää käytettäessä komentoa sudo.

Ohjausliput

Ohjauslippu määrittää, miten PAM-moduuli käyttäytyy, kun todennus onnistuu tai epäonnistuu. Vaiheessa 6 käytimme sufficient -lippua testaamiseen ja vaihdoimme sitten required -lippuun valvontaa varten.

Käytettävissä olevat ohjausliput ovat:

  • 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: Samanlainen kuin required kuitenkin siinä tapauksessa, että tietty moduuli palauttaa epäonnistumisen, ohjaus palautetaan suoraan sovellukselle tai ylemmälle PAM-pinolle. Tämä lippu voi myös lukita sinut ulos tietokoneesta, jos sinulla ei ole pääsyä Nitrokey-avaimeen.

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

Varoitus

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

  • Menetät pääsyn tietokoneeseesi, jos olet konfiguroinut PAM-moduulin väärin ja käyttänyt required tai requisite -lippua.

  • Menetät myös mahdollisuuden käyttää sudo, jos otat käyttöön keskitetyn todennuksen kartoituksen. ja käytit required tai requisite -lippuja.

  • Saatat myös menettää mahdollisuuden kirjautua sisään Gnome Display managerin avulla, jos älykorttikirjautuminen on käytössä ja olet käyttänyt required tai requisite -lippua. Katso lisätietoja kohdasta Vianmääritys.

Vianmääritys

Ongelmat kirjautumisessa käyttäjätilille GDM:n avulla

Joissakin tapauksissa, esimerkiksi jos sinulla on asennettuna opencs-pkcs11, Gnome Display Manager (GDM) voi oletusarvoisesti ottaa käyttöön älykorttikirjautumisen heti, kun jokin älykortti (kuten Nitrokey) kytketään, vaikka mitään älykorttia ei olisi koskaan määritetty. Tämä voi estää sinua kirjautumasta käyttäjätilillesi u2f:n avulla. Jos olet asettanut sufficient -valvontalippulauseen, irrota kaikki älykortit ja kirjaudu sisään salasanallasi. Voit ottaa älykorttien valvonnan pois käytöstä suorittamalla seuraavan komennon:

$ 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