GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configura l'autenticazione a due fattori SSH (2FA) su Ubuntu Server

Questo tutorial ti mostrerà come configurare l'autenticazione a due fattori SSH sul server Ubuntu utilizzando il noto Google Authenticator. Migliorerà notevolmente la sicurezza del servizio SSH sul tuo server Ubuntu.

Come funziona l'autenticazione a due fattori

Normalmente, devi solo inserire una password o utilizzare la chiave SSH per accedere al tuo server Ubuntu da remoto. L'autenticazione a due fattori (2FA) richiede l'inserimento di due informazioni per accedere. Quindi dovrai anche inserire una password monouso basata sul tempo per accedere al tuo server SSH. Questa password monouso viene calcolata utilizzando l'algoritmo TOTP, che è uno standard IETF. Al giorno d'oggi molti siti Web e servizi (Facebook, Google, Twitter, ecc.) offrono agli utenti la 2FA per proteggere i propri account ed è una buona idea abilitare anche la 2FA sul tuo server SSH.

Questo tutorial ti mostrerà come configurare

  • Autenticazione password con 2FA
  • Autenticazione con chiave pubblica con 2FA

Nota :Il software server open source che useremo in questo articolo si chiama libpam-google-authenticator , che viene installato dal repository Ubuntu predefinito. Google l'azienda non è coinvolta nel processo di autenticazione in alcuna forma o forma. Il software del server e l'app mobile non richiedono l'accesso alla rete.

Passaggio 1:installa e configura Google Authenticator su Ubuntu Server

Accedi al tuo server Ubuntu ed esegui il comando seguente per installare Google Authenticator dal repository di pacchetti Ubuntu predefinito.

sudo apt install -y libpam-google-authenticator

Quindi esegui google-authenticator comando per creare una nuova chiave segreta nella tua home directory.

google-authenticator

Alla domanda "Vuoi che i token di autenticazione siano basati sul tempo?" Rispondi s .

Quindi vedrai un codice QR che puoi scansionare utilizzando un'app TOTP sul tuo telefono. Ci sono due app che ti consiglio:

  • Autenticatore Google è l'app mobile TOTP più conosciuta. Puoi installarlo tramite Google Play o l'App Store di Apple sul tuo cellulare.
  • Il Google Authenticator l'app mobile non è open source. Se non ti fidi di Google, puoi utilizzare FreeOTP, un'app mobile TOTP open source sviluppata da Red Hat.

Scansiona il codice QR con Google Authenticator o FreeOTP sul tuo cellulare. Tieni presente che è necessario ingrandire la finestra del terminale per eseguire la scansione del codice QR completo.

Il codice QR rappresenta la chiave segreta, che è conosciuta solo dal tuo server SSH e dalla tua app mobile TOTP. Una volta scansionato il codice QR, puoi vedere una password monouso a sei cifre sul tuo telefono. Per impostazione predefinita, cambia ogni 30 secondi. Dovrai inserire questa password monouso in seguito per accedere al server Ubuntu tramite SSH.

Nella finestra del terminale, puoi vedere la chiave segreta, il codice di verifica e il codice scratch di emergenza. Si consiglia di salvare queste informazioni in un luogo sicuro per un uso successivo.

Quindi puoi inserire y per rispondere a tutte le restanti domande. Questo aggiornerà il file di configurazione di Google Authenticator, disabiliterà più utilizzi dello stesso token di autenticazione, aumenterà la finestra temporale e abiliterà la limitazione della velocità per proteggersi dai tentativi di accesso con forza bruta.

Passaggio 2:configura il demone SSH per l'utilizzo di Google Authenticator

  • Autenticazione password con 2FA
  • Autenticazione con chiave pubblica con 2FA

Autenticazione password con 2FA

Se non utilizzi la chiave SSH, segui le istruzioni seguenti.

Apri il file di configurazione del server SSH.

sudo nano /etc/ssh/sshd_config

Trova i due parametri seguenti nel file e assicurati che entrambi siano impostati su yes .

UsePAM yes

ChallengeResponseAuthentication yes

PAM sta per modulo di autenticazione collegabile. Fornisce un modo semplice per collegare diversi metodi di autenticazione al tuo sistema Linux. Per abilitare Google Authenticator con SSH, è necessario abilitare l'autenticazione PAM e Challenge-Response.

Se desideri consentire all'utente root di utilizzare 2FA, trova il PermitRootLogin parametro e impostarne il valore su yes . Non può essere PermitRootLogin no o PermitRootLogin prohibit-password .

PermitRootLogin yes

Salva e chiudi il file. Quindi, modifica il file della regola PAM per il demone SSH.

sudo nano /etc/pam.d/sshd

All'inizio di questo file, puoi vedere la riga seguente, che abilita l'autenticazione della password quando ChallengeResponseAuthentication è impostato su yes .

@include common-auth

Per abilitare 2FA in SSH, aggiungi le due righe seguenti.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Salva e chiudi il file. Quindi riavvia il demone SSH per rendere effettive le modifiche.

sudo systemctl restart ssh

D'ora in poi il demone SSH richiederà di inserire la password utente e un codice di verifica (la password monouso generata da Google Authenticator). Lo screenshot seguente mostra una sessione di accesso SSH da una casella CentOS a un server Ubuntu 20.04.

Autenticazione con chiave pubblica con 2FA

Se utilizzi la chiave SSH per accedere al server SSH, segui le istruzioni seguenti.

Apri il file di configurazione del server SSH.

sudo nano /etc/ssh/sshd_config

Trova i due parametri seguenti nel file e assicurati che entrambi siano impostati su yes .

UsePAM yes

ChallengeResponseAuthentication yes

PAM sta per modulo di autenticazione collegabile. Fornisce un modo semplice per collegare diversi metodi di autenticazione al tuo sistema Linux. Per abilitare Google Authenticator con SSH, è necessario abilitare l'autenticazione PAM e Challenge-Response.

Se desideri consentire all'utente root di utilizzare 2FA, trova il PermitRootLogin parametro e impostarne il valore su yes . Non può essere PermitRootLogin no o PermitRootLogin prohibit-password .

PermitRootLogin yes

Quindi, aggiungi la seguente riga alla fine di questo file. Questo dice al demone SSH che l'utente deve passare sia l'autenticazione con chiave pubblica che l'autenticazione challenge-response.

AuthenticationMethods publickey,keyboard-interactive

Salva e chiudi il file. Quindi, modifica il file della regola PAM per il demone SSH.

sudo nano /etc/pam.d/sshd

All'inizio di questo file, puoi vedere la riga seguente, che abilita l'autenticazione della password quando ChallengeResponseAuthentication è impostato su yes . Dobbiamo commentare questa riga, perché useremo la chiave SSH invece della password.

@include common-auth

Per abilitare 2FA in SSH, aggiungi le due righe seguenti.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Salva e chiudi il file. Quindi riavvia il demone SSH per rendere effettive le modifiche.

sudo systemctl restart ssh

D'ora in poi devi utilizzare la chiave SSH e il codice di verifica di Google Authenticator per accedere.

Note

  • Ogni utente sul tuo server Ubuntu deve eseguire google-authenticator comandare e scansionare il codice QR per utilizzare l'autenticazione a due fattori. Se l'utente non ha eseguito la configurazione e tenta di accedere, viene visualizzato il messaggio di errore "Autorizzazione negata (tastiera interattiva) ” verrà visualizzato.
  • Il codice Scratch di emergenza è il tuo codice di backup. Se perdi il telefono, puoi inserire uno dei cinque codici scratch di emergenza invece di una password monouso per completare la verifica in due passaggi. Questi codici sono monouso.
  • Se desideri modificare la chiave segreta, accedi semplicemente al tuo server ed esegui google-authenticator comando di nuovo per aggiornare il ~/.google_authenticator file.
  • Poiché la password monouso viene calcolata utilizzando la chiave segreta condivisa e l'ora corrente, è una buona idea abilitare la sincronizzazione dell'ora NTP sul server Ubuntu per mantenere l'ora esatta, sebbene in precedenza fosse consentito uno sfasamento temporale di 4 minuti tra il server Ubuntu e l'app mobile. Il tuo server Ubuntu e l'app mobile TOTP possono utilizzare fusi orari diversi.

Come disabilitare l'autenticazione a due fattori SSH

Modifica il file della regola PAM per il demone SSH.

sudo nano /etc/pam.d/sshd

Commenta la riga seguente.

auth   required   pam_google_authenticator.so

Salva e chiudi il file. Se hai aggiunto la seguente riga in /etc/ssh/sshd_config file,

AuthenticationMethods publickey,keyboard-interactive

Rimuovi keyboard-interactive metodo di autenticazione.

AuthenticationMethods publickey

Salva e chiudi il file. Quindi riavvia il demone SSH.

sudo systemctl restart ssh

Ubuntu
  1. Come generare chiavi SSH su Ubuntu 18.04

  2. Come installare e configurare il server sftp in Ubuntu 20.04

  3. Proteggi SSH utilizzando l'autenticazione a due fattori su Ubuntu 16.04

  4. Configura l'autenticazione a più fattori per SSH su Ubuntu 20.04

  5. Imposta l'autenticazione a due fattori utilizzando Google Authenticator

Come installare il server SSH su Ubuntu 22.04

Come installare OpenSSH su Ubuntu 20.04

Come configurare l'autenticazione a due fattori SSH su Ubuntu 16.04 con Google Authenticator

Come abilitare il server SSH su Ubuntu 22.04

Come impostare l'autenticazione a due fattori su Ubuntu 20.04 LTS

Come utilizzare l'autenticazione a due fattori con Ubuntu