Accesso al desktop e autenticazione degli utenti Linux#

Introduzione#

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and Nitrokey FIDO2.

Se si desidera effettuare il login al computer utilizzando Nitrokey Pro 2, Nitrokey Storage 2 e Nitrokey Avvio è possibile consultare le istruzioni disponibili qui.

Requisiti#

  • Ubuntu 20.04 con Gnome Display Manager.

  • Nitrokey FIDO2 configurato seguendo queste istruzioni.

Istruzioni#

Metodo GUI#

  1. Nell’angolo in basso a sinistra cliccate su Show Applications e digitate le impostazioni nella barra di ricerca come segue:

    img1
  2. Scorri in basso nella barra di destra fino a Users

    img2
  3. Nell’angolo a sinistra cliccate su Unlock e vi verrà richiesta la password

    img3
  4. Selezionate Administrator e inserite il nome utente e la password che preferite

    img4
  5. Una volta terminato il passo 4 si dovrebbe aver finito

    img5

Metodo CLI#

  1. Creare un utente di backup e dargli i privilegi di root.

    Potete farlo usando questi comandi:

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

    Nel caso in cui si preferisca impostare U2F per un singolo utente, e si è bloccati dalla propria sessione utente, si sarebbe ancora in grado di accedere con il <backup_user>, e procedere con la manutenzione.

    Avvertimento

    La seguente guida può potenzialmente bloccarvi fuori dal vostro computer. Dovresti essere consapevole di questi rischi, in quanto si raccomanda di utilizzare prima le istruzioni che seguono su un computer secondario, o dopo un backup completo.

    Si potrebbe perdere l’accesso ai dati dopo aver configurato i moduli PAM.

  2. Impostare il rules per riconoscere il Nitrokey FIDO2

    Sotto /etc/udev/rules.d scarica 41-nitrokey.rules

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    E riavviare il servizio udev

    $ sudo systemctl restart udev
    
  3. Installazione libpam-u2f

    Su Ubuntu 20.04 è possibile scaricare direttamente libpam-u2f dai repo ufficiali

    $ sudo apt install libpam-u2f
    

    Nota

    Clicca per altre opzioni

    • In alternativa potete costruire libpam-u2f da Git.

    • Per verificare che la libreria sia correttamente installata, digitate il seguente comando:

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

    L’output dovrebbe essere qualcosa come il seguente:

    /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
    
  4. Preparare l’elenco

    Creare .config/Nitrokey/ sotto la tua home directory

    $ mkdir ~/.config/Nitrokey
    

    E collega il tuo Nitrokey FIDO2.

    Una volta terminata la preparazione, possiamo iniziare a configurare il computer per utilizzare Nitrokey FIDO2 per l’autenticazione a secondo fattore al login e sudo.

  5. Generare il file di configurazione U2F

    Per generare il file di configurazione useremo l’utility pamu2fcfg che viene fornita con il libpam-u2f. Per comodità, scriveremo direttamente l’output dell’utility nel file u2f_keys sotto .config/Nitrokey. Per prima cosa collegate il vostro Nitrokey FIDO2 (se non l’avete già fatto), e inserite il seguente comando:

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Una volta eseguito il comando di cui sopra, dovrete toccare il tasto mentre lampeggia. Una volta fatto, pamu2fcfg aggiungerà al suo output il u2f_keys nel seguente formato:

    <username>:Zx...mw,04...0a
    

    Nota, l’output sarà molto più lungo, ma le parti sensibili sono state rimosse qui. Per maggiore sicurezza, e una volta generato il file di configurazione, sposteremo la directory .config/Nitrokey sotto la directory etc/ con questo comando:

    $ sudo mv ~/.config/Nitrokey /etc
    

    Suggerimento

    • Il file sotto .config/Nitrokey deve essere chiamato u2f_keys

    • Si raccomanda di testare prima le istruzioni con un solo utente. A questo scopo il comando precedente prende l’opzione -u, per specificare un utente, come nell’esempio seguente:

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Per la configurazione dei singoli utenti si dovrebbe puntare alla directory home nel prossimo passo, o non includere l’opzione authfile nella configurazione PAM.

  6. Backup

    Questo passo è facoltativo, tuttavia si consiglia di avere una Nitrokey di riserva in caso di perdita, furto o distruzione della tua Nitrokey FIDO.

    Per impostare una chiave di riserva, ripetete la procedura sopra, e usate pamu2fcfg -n. Questo ometterà il campo <username>, e l’output può essere aggiunto alla linea con il tuo <username> come questo:

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Modificare il modulo di autenticazione collegabile PAM

    Il passo finale è configurare i file del modulo PAM sotto /etc/pam.d/. In questa guida modificheremo il file common-auth poiché gestisce le impostazioni di autenticazione che sono comuni a tutti i servizi, ma sono possibili altre opzioni. È possibile modificare il file con il seguente comando:

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

    E aggiungete le seguenti righe all’inizio del file:

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue prompt nouserok
    

    Suggerimento

    • Dato che stiamo usando il Central Authentication Mapping, dobbiamo dire a pam_u2f la posizione del file da usare con l’opzione authfile.

    • Se dimenticate spesso di inserire la chiave, prompt opzione fare pam_u2f stampare Insert your U2F device, then press ENTER. e darvi la possibilità di inserire la Nitrokey.

    • Se volete essere invitati a toccare la Nitrokey, cue opzione farà pam_u2f stampare Please touch the device. messaggio.

    • nouserok farà in modo che tu possa ancora fare il login usando il nome utente e la password, potresti volerlo rimuovere ad un certo punto una volta che la configurazione funziona e non vuoi più avere un regolare login basato su nome utente e password.

    Una volta modificato il common-auth, possiamo salvare e uscire dal file.

    Potete testare la configurazione digitando sudo ls nel terminale. Dovrebbe comparire il messaggio Please touch the device. ed avere un output simile sul terminale:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    Puoi anche testare la tua configurazione uscendo dalla sessione utente e rientrandovi. Una schermata simile dovrebbe essere visualizzata una volta che hai scollegato/ricollegato il tuo Nitrokey FIDO2 e digitato la tua password:

    img6

Uso#

Dopo la modifica del modulo PAM, sarete in grado di testare subito la vostra configurazione, ma si raccomanda di riavviare il computer e di scollegare/ricollegare Nitrokey FIDO2.

Una volta che avete provato correttamente le istruzioni di questa guida (e impostato un backup), si raccomanda di usare il required o il requisite flag di controllo invece di sufficient.

Le bandiere required e requisite forniscono un controllo di accesso più stretto, e renderanno necessaria la Nitrokey FIDO2 per effettuare il login, e/o utilizzare il servizio configurato.

Se hai bisogno di maggiori informazioni sui Control Flags nella linea di configurazione PAM, puoi vedere l’ultima sezione di questa guida per capire la differenza, e le implicazioni dell’uso di ciascuno di essi.

Moduli PAM#

Ci sono diversi file di moduli PAM che possono essere modificati secondo le vostre esigenze:

  • Modificando il file /etc/pam.d/common-auth, sarete in grado di utilizzare Nitrokey FIDO per l’autenticazione a secondo fattore per il login grafico e sudo. Nota: common-auth deve essere modificato aggiungendo la linea di configurazione supplementare alla fine del file.

  • Se vuoi usare l’autenticazione FIDO U2F solo per il login grafico di Gnome, potresti preferire modificare il /etc/pam.d/gdm-password

  • In alternativa puoi semplicemente modificare il file /etc/pam.d/sudo se vuoi usare FIDO U2F quando usi il comando sudo.

Bandiere di controllo#

Nel passo 7 abbiamo usato il sufficient flag di controllo per determinare il comportamento del modulo PAM quando la Nitrokey è inserita o meno. Tuttavia è possibile cambiare questo comportamento utilizzando i seguenti flag di controllo:

  • required: Questo è il flag più critico. Il risultato del modulo deve avere successo perché l’autenticazione continui. Questo flag può bloccarvi fuori dal vostro computer se non avete accesso alla Nitrokey.

  • requisite: Simile a required tuttavia, nel caso in cui un modulo specifico restituisca un fallimento, il controllo viene restituito direttamente all’applicazione, o allo stack PAM superiore. Questo flag può anche bloccarvi fuori dal vostro computer se non avete accesso alla Nitrokey.

  • sufficient: Il risultato del modulo viene ignorato se fallisce. Il flag sufficient è considerato sicuro ai fini dei test.

  • optional: Il successo o il fallimento di questo modulo è importante solo se è l’unico modulo nello stack associato a questo servizio+tipo. Il flag optional è considerato sicuro da usare per scopi di test.

Avvertimento

  • Se required o requisite è impostato, il fallimento dell’autenticazione U2F causerà un fallimento dell’autenticazione generale. Il fallimento avverrà quando la Nitrokey FIDO configurata non è collegata, persa o distrutta.

  • Perderai l’accesso al tuo computer se hai configurato male il modulo PAM e hai usato i flag required o requisite.

  • Perderai anche la capacità di usare sudo se hai impostato la Mappatura dell’autenticazione centrale e hai usato i flag required o requisite.