Ricerca nel sito web

Come configurare SSH per utilizzare l'autenticazione a due fattori


Proteggi il tuo accesso SSH come un professionista con l'autenticazione a due fattori (2FA) per proteggere le tue connessioni remote in modo ancora più efficace.

Secure Shell (SSH), un protocollo ampiamente utilizzato per l'accesso remoto sicuro da un computer a un altro, offre una crittografia solida per proteggere da accessi non autorizzati.

Tuttavia, con la crescente sofisticazione delle minacce informatiche, fare affidamento esclusivamente sulla tradizionale autenticazione basata su password può rendere i sistemi vulnerabili ad attacchi di forza bruta e al furto di password. È qui che entra in gioco l’autenticazione a due fattori (2FA).

Aggiunge un ulteriore livello di sicurezza richiedendo non solo una password (qualcosa che conosci) ma anche un secondo fattore, solitamente qualcosa che possiedi (come un dispositivo mobile) o qualcosa che sei (come un'impronta digitale).

L'integrazione di 2FA con SSH riduce significativamente il rischio di accesso non autorizzato ai tuoi sistemi, anche se la password viene compromessa. Quindi ti mostriamo come farlo.

Passaggio 1: installa l'app 2FA Authenticator sul tuo telefono

Per iniziare, devi installare un'app di autenticazione 2FA sul tuo dispositivo mobile per utilizzare l'autenticazione a due fattori con SSH. Questa app genera codici monouso sensibili al tempo che fungono da secondo fattore nel processo di autenticazione.

Le scelte più popolari per tali app includono Google Authenticator o Microsoft Authenticator. Sono disponibili per dispositivi Android e iOS e possono essere scaricati dai rispettivi app store.

  • Autenticatore di Google per Android
  • Autenticatore di Google per iOS
  • Microsoft Authenticator per Android
  • Microsoft Authenticator per iOS

Per questa guida utilizzeremo l'app Google Authenticator. È importante averlo preinstallato sul tuo dispositivo mobile, poiché un po' più avanti nel passaggio 3, lo utilizzeremo durante la configurazione iniziale di 2FA con il tuo server SSH.

Passaggio 2: installa il modulo PAM Authenticator di Google

Google Authenticator è uno strumento di autenticazione basato su software che implementa servizi di autenticazione a due fattori (2FA) utilizzando l'algoritmo TOTP (Time-Based One-Time Password) e l'algoritmo HOTP (One-time Password) basato su HMAC per autenticare gli utenti di applicazioni software .

Per preparare il tuo sistema Linux a questo, devi installare il pacchetto richiesto chiamato "libpam-google-authenticator " o "google-authenticator," a seconda della tua distribuzione. Ma quale funzione svolge questo pacchetto?

In breve, fornisce un modulo software per Linux che integra Google Authenticator nel sistema Pluggable Authentication Module (PAM). PAM è un framework per l'integrazione di più schemi di autenticazione di basso livello in un'API di alto livello, consentendo l'implementazione di vari metodi di autenticazione nei programmi che richiedono la verifica dell'utente.

Ubuntu/Debian

Ubuntu, Debian e altre distribuzioni basate su di essi, come Linux Mint o Pop!_OS, possono installare Google Authenticator utilizzando il comando apt di seguito:

sudo apt install libpam-google-authenticator

Rocky Linux/AlmaLinux

Per le distribuzioni Linux aziendali come Rocky e Alma, Google Authenticator è disponibile tramite il repository EPEL. Quindi, devi prima aggiungerlo al tuo sistema (se non l'hai già fatto) e poi installare lo stesso Google Authenticator.

sudo dnf install epel-release
sudo dnf install google-authenticator

Fedora

Gli utenti Fedora possono trovare Google Authenticator nei repository di distribuzione ufficiali. Per installarlo, esegui il seguente comando:

sudo dnf install google-authenticator

ArcoLinux

Google Authenticator è disponibile nei repository della distribuzione per Arch e derivati basati su Arch. Per installarlo, esegui:

sudo pacman -S libpam-google-authenticator

Passaggio 3: configura Google Authenticator

Dopo aver installato con successo Google Authenticator, ora siamo pronti per configurarlo. Per fare ciò, apri il terminale ed esegui il comando mostrato di seguito.

google-authenticator

Da qui in poi, dovrai rispondere ad alcune domande, la prima delle quali è "Vuoi che i token di autenticazione siano basati sul tempo?" Rispondi "y" a abilitare le password monouso basate sul tempo (TOTP).

Un codice QR verrà visualizzato sullo schermo del tuo terminale. È qui che entra in gioco l'app Google Authenticator sul tuo dispositivo mobile. Aprilo e fai clic sull'icona "+" nell'angolo in basso a destra.

Troverai due opzioni: "Scansiona un codice QR" e "Inserisci una chiave di configurazione". Dato che il codice QR visualizzato nel terminale potrebbe spesso essere troppo grande e difficile da scansionare direttamente dal tuo dispositivo, opteremo per l'opzione "Inserisci una chiave di configurazione". Vai avanti e fai clic su di esso.

Nel campo "Account", inserisci un nome a tua scelta, ad esempio "my2fa". Quindi, nel campo "Chiave" sull'app Google Authenticator del tuo dispositivo mobile, digita il codice dalla riga "La tua nuova chiave segreta è" dal terminale. Infine, fai clic sul pulsante “Aggiungi”.

In risposta, l'app genererà un codice di 6 cifre.

Inserisci questo codice nel terminale e premi "Invio".

Dovresti ricevere un messaggio "Codice confermato". Inoltre, riceverai cinque codici di emergenza che ti consigliamo di annotare e conservare in un posto sicuro.

Questi codici sono monouso e ti garantiscono l'accesso SSH, ad esempio, quando non hai il tuo dispositivo mobile a portata di mano per la generazione del codice. Rispondi con "y" quando ti viene chiesto di aggiornare il file ".google_authenticator".

Alla domanda successiva, per aumentare la sicurezza, rispondi ancora con "y", confermando che desideri disabilitare più usi dello stesso codice.

La seguente opzione di configurazione di Google Authenticator riguarda la possibilità di utilizzare codici precedentemente generati nel caso non si sia riusciti a rientrare nel lasso di tempo di 30 secondi, che è la validità di ciascun token dal momento della sua generazione.

Tuttavia, poiché questa opzione riduce la sicurezza, ti consigliamo vivamente di rispondere con "n".

Infine, rispondi con "y" per attivare il limite di velocità, consentendo fino a tre tentativi di accesso in una finestra di 30 secondi, riducendo così al minimo la possibilità di un attacco di forza bruta riuscito sul tuo server SSH.

Abbiamo completato la configurazione di Google Authenticator, quindi ora è il momento di procedere con la configurazione del server SSH stesso per consentire l'autenticazione a due fattori.

Passaggio 4: configura SSH per utilizzare l'autenticazione a due fattori

Apri il file di configurazione del server SSH per la modifica con il tuo editor di testo del terminale preferito:

sudo vim /etc/ssh/sshd_config

La cosa da fare qui è aggiungere/modificare i seguenti due valori di configurazione:

KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes

Se trovi una delle due impostazioni nel file, modifica i loro valori in "". Se non sono presenti, aggiungili alla fine del file come nell'esempio seguente, quindi salva ed esci dal file.

Ora, analizziamo cosa significano queste due opzioni:

  • KbdInteractiveAuthentication: se abilitato in SSH, consente al server di impegnarsi nel processo interattivo 2FA. Ad esempio, dopo aver inserito la password (il primo fattore), il server potrebbe richiederti un codice dall'app 2FA (il secondo fattore).
  • ChallengeResponseAuthentication: se abilitato, il server SSH può utilizzare metodi challenge-response per l'autenticazione. Ciò include metodi come l'autenticazione interattiva da tastiera, in cui all'utente viene richiesto di inserire informazioni in risposta a una sfida. In altre parole, in tal caso, consente al server SSH di richiedere all'utente di inserire un codice generato da un'app 2FA.

Infine, riavvia il server SSH e poi possiamo passare all'ultimo passaggio della configurazione dell'autenticazione a due fattori per il nostro server SSH.

sudo systemctl restart ssh

Passaggio 5: configurazione di PAM per l'autenticazione a due fattori di SSH

PAM (Pluggable Authentication Modules) svolge un ruolo cruciale nel processo di autenticazione di SSH, fornendo un quadro flessibile e modulare per l'autenticazione. Ciò significa che invece di avere SSH con metodi di autenticazione codificati, utilizza PAM per collegare vari meccanismi di autenticazione secondo necessità.

Quindi, l'ultimo passaggio è configurarlo per consentire SSH 2FA. Per questo, apriamo il suo file di configurazione:

sudo vim /etc/pam.d/sshd

Quindi, dovremmo aggiungere la seguente riga all'inizio:

auth required pam_google_authenticator.so

Salva il file, esci e passa alla parte finale, più emozionante.

Passaggio 6: test di SSH 2FA

Ora controlliamo se tutto funziona correttamente. Per farlo da un computer remoto, prova a stabilire una connessione SSH al server configurato per utilizzare l'autenticazione a due fattori.

Ti verrà richiesto il codice di verifica. Apri l'app Google Authenticator sul tuo dispositivo mobile e digita nel terminale il codice di 6 cifre che mostra. Quando digiti, non viene visualizzato sullo schermo.

Successivamente, dovrai inserire la password dell'utente. Una volta inserito quello corretto, otterrai l'accesso SSH al server.

Se guardi cosa succede dietro le quinte, nei log di systemd, scoprirai che il processo di accesso ha funzionato correttamente. Il codice di autenticazione a due fattori di Google Authenticator e la password dell'utente sono stati accettati con successo.

Tuttavia, anche se inserisci la password corretta ma usi il codice sbagliato, la tua connessione SSH al server non sarà consentita, come mostrano i log di systemd.

Ottimo lavoro! Hai configurato con successo l'autenticazione SSH a due fattori, rendendo il tuo server molto più sicuro e ben protetto da accessi non autorizzati.

Facoltativo: coinvolgimento dell'autenticazione basata su chiave in SSH 2FA

Ok, abbiamo fatto buoni progressi, ma possiamo migliorare ulteriormente le cose. Aggiungiamo una chiave SSH al processo di autenticazione a due fattori. Ciò aggiunge un ulteriore livello di sicurezza e, allo stesso tempo, evita l’approccio meno sicuro di fare affidamento sulle password degli utenti.

Per raggiungere questo obiettivo, presupponiamo che tu disponga già di una coppia generata di chiavi private e pubbliche e di un'autenticazione SSH senza password per il server configurato e funzionante. Tuttavia, se non ne hai già uno, abbiamo fornito una guida per aiutarti a farlo in modo rapido e semplice. Ora torniamo sull'argomento.

Innanzitutto, apri il file "/etc/ssh/sshd_config" e imposta l'opzione "PasswordAuthentication" su "no", come mostrato nella immagine qui sotto.

Ciò indica al server SSH di disabilitare l'autenticazione della password in modo che gli utenti non possano accedere utilizzando il nome utente e la password normali. Devono invece utilizzare metodi di autenticazione alternativi, come l’autenticazione basata su chiave SSH.

Quindi, aggiungi l'opzione mostrata di seguito al tuo file "sshd_config".

AuthenticationMethods publickey,keyboard-interactive

  • Metodi di autenticazione: specifica i metodi di autenticazione che devono essere completati correttamente affinché a un utente venga concesso l'accesso.
  • chiave pubblica: indica che il primo metodo di autenticazione si basa sull'autenticazione con chiave pubblica.
  • tastiera interattiva: questo è il secondo metodo di autenticazione richiesto dopo che il metodo "chiave pubblica" è stato completato con successo. In genere comporta che l'utente inserisca informazioni in risposta a un prompt. Nel nostro caso si tratta dell'introduzione di un codice 2FA generato dall'app Google Authenticator.

Salva il file, chiudilo e riavvia il servizio SSH.

sudo systemctl restart ssh

Ora apri il file "/etc/pam.d/sshd", trova la riga "@include common-auth" e metti un segno di commento (#) prima Esso. Ciò impedisce a PAM di utilizzare la password dell'account dell'utente per accedere.

Ora prova ad accedere nuovamente tramite SSH e la magia accade! La richiesta di inserire una password utente è scomparsa.

Basta digitare il codice di 6 cifre generato dall'app Google Authenticator sul tuo dispositivo mobile e sarai loggato. La chiave SSH verrà inviata automaticamente al server in background.

Ancora una volta, però, chiariamo che è necessario impostare l'autenticazione senza password sul server SSH prima di implementare questo metodo.

Conclusione

L'impostazione dell'autenticazione a due fattori (2FA) per l'accesso SSH è essenziale per migliorare la sicurezza delle connessioni remote. Questo articolo descrive in dettaglio i passaggi per configurare Google Authenticator, modificare le impostazioni del server SSH e configurare PAM per 2FA di SSH.

Il risultato è che il tuo server SSH è ora ben protetto dagli attacchi di forza bruta e dai tentativi di accesso non autorizzati. Inoltre, incorporare l’autenticazione basata su chiave nel processo SSH 2FA aggiunge un livello di sicurezza, andando oltre la dipendenza dalle sole password.

Grazie per il tuo tempo! Come sempre, i vostri feedback e commenti sono i benvenuti.

Articoli correlati: