GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare l'autenticazione a più fattori per SSH in Linux

In questa guida impareremo cos'è l'autenticazione a più fattori e la sua importanza e infine come configurare l'autenticazione a più fattori per SSH in Linux utilizzando l'app Google Authenticator.

Introduzione

La sicurezza è una cosa seria. Il numero di compromissioni aumenta notevolmente di giorno in giorno e si stima che entro il 2025 la criminalità informatica causerà alle aziende 10,5 trilioni di dollari.

È importante implementare un forte livello di sicurezza in tutti i livelli dello stack tecnologico. In questo articolo, vedremo una di queste implementazioni di sicurezza per ssh che utilizza l'autenticazione a più fattori.

SSH, acronimo di Secure Shell, è un protocollo di rete che consente agli utenti di connettersi a macchine remote (server) e accedere alle risorse.

Il protocollo ssh implementa due tipi di sicurezza:Autenticazione basata su password e Autenticazione basata su chiave .

L'autenticazione basata su chiave (pubblica -> privata) è considerata più sicura rispetto all'autenticazione basata su password e la maggior parte delle istruzioni di rafforzamento SSH consigliano di disabilitare l'autenticazione basata su password e di abilitare solo l'autenticazione basata su chiave.

Indipendentemente dal meccanismo di autenticazione scelto, puoi rendere ssh più sicuro implementando una configurazione di autenticazione a più fattori.

Che cos'è l'autenticazione a più fattori?

Autenticazione a più fattori (a breve MFA ) è un processo di autenticazione sicuro che richiede più di una tecnica di autenticazione scelta da categorie indipendenti di credenziali.

L'autenticazione a più fattori è talvolta chiamata anche "Autenticazione a due fattori (2FA)" .

Ci sono due fattori coinvolti nella convalida di chi dici di essere. Il primo fattore sarà la password che viene creata quando viene creato il tuo account utente.

Il secondo fattore sarà qualsiasi applicazione che genera OTP o qualsiasi protocollo che ti invia messaggi di testo o effettua una chiamata al tuo dispositivo.

A seconda di come viene implementata l'applicazione, la modalità di autenticazione varia. Alcuni strumenti comuni che utilizzi per l'autenticazione a più fattori sono:

  • Applicazione installata sul dispositivo mobile che genera token.
  • Un dispositivo esterno come Yubikey.
  • Impronta digitale.
  • Riconoscimento facciale.
  • Password OTP basata su SMS o chiamata in ingresso.

Per abilitare l'autenticazione a più fattori per ssh utilizzeremo "Google Authenticator" app che utilizza il protocollo OATH-TOTP. Esistono altri strumenti alternativi come Twilio Authy o FreeOTP che puoi installare e provare.

Inizieremo con l'installazione dell'app Google Authenticator sia sul server che sul dispositivo mobile e proveremo ad abilitare l'autenticazione a più fattori e convalidare.

Installa Google Authenticator

Innanzitutto installa l'app Google Authenticator sui tuoi dispositivi Android o IOS tramite il playstore /Itunes .

Ora installa l'app Google Authenticator sul tuo sistema Linux.

A seconda della tua distribuzione, esegui i seguenti comandi di installazione.

Su Ubuntu e le sue distribuzioni derivate eseguono il comando seguente.

$ sudo apt install libpam-google-authenticator

In RHEL le distribuzioni basate eseguono il comando seguente.

$ sudo dnf install google-authenticator -y

Per Arch distribuzione basata su eseguire il comando seguente.

$ sudo pacman -S libpam-google-authenticator

Genera token iniziale per un utente

Come primo passo nella configurazione di MFA, devi eseguire il seguente comando dal tuo terminale. Questo si occuperà della configurazione iniziale generando la chiave TOTP. Questa chiave è per l'utente che sta eseguendo il comando e non è applicabile a tutti gli utenti nel sistema.

$ google-authenticator

Ci sono alcune sequenze di passaggi in cui ti verrà chiesto con (y /n ) opzione.

PASSAGGIO 1 - Ti verrà chiesto di scegliere i token di autenticazione basati sul tempo. I token di autenticazione basati sul tempo genereranno un nuovo codice ogni 30 secondi. Premi "y" per continuare.

PASSAGGIO 2 - Verrà generato un token segreto insieme a un codice QR. Apri l'app mobile Google Authenticator ed esegui la scansione del codice QR o digita manualmente la chiave segreta per registrare il dispositivo. Una volta terminato, ora l'app inizierà a generare token ogni 30 secondi.

PASSAGGIO 3 - In questo passaggio, ti verrà chiesto di aggiornare il .google_authenticator file nella tua home directory. Tutte le chiavi segrete, il codice di verifica, i codici scratch di emergenza vengono salvati in questo file. Premi "y" per continuare.

PASSAGGIO 4 - Scegliendo "y" in questo passaggio il token scadrà immediatamente dopo averlo utilizzato per l'autenticazione. In questo caso, anche se alcuni hacker ottengono il tuo token, esso sarà scaduto.

PASSAGGIO 5 - Questo passaggio decide quanti token saranno consentiti e il periodo di tempo. Quando scelgo "n" , consentirà 3 token in 90 secondi finestra. Se premo "y" , consentirà 17 token in 240 secondi finestra temporale.

PASSAGGIO 6 - Questo passaggio ti chiederà di abilitare la limitazione della velocità. La limitazione della frequenza consente a un utente malintenzionato di provare solo 3 tentativi di accesso ogni 30 secondi . Se i token sono sbagliati, devono attendere N è ora di riprovare.

Abbiamo completato il primo passaggio. Apri il file ~/.google_authenticator e puoi trovare tutte le impostazioni e i codici segreti che abbiamo effettuato attraverso tutti questi passaggi.

$ cat ~/.google_authenticator

Puoi anche passare argomenti al comando google-authenticator che creerà le chiavi e altre impostazioni senza eseguire questa sequenza di passaggi.

$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3

Fai riferimento alla sezione della guida di Google Authenticator per scoprire cosa faranno questi argomenti.

$ google-authenticator –-help

Configura SSH per l'autenticazione a più fattori

Dobbiamo apportare alcune modifiche alla configurazione di openSSH in modo da poter iniziare a utilizzare MFA.

Nota:

  • Come best practice, esegui sempre il backup dei file di configurazione prima di apportare modifiche. Se qualcosa è incasinato, le modifiche possono essere ripristinate.
  • Dato che stai apportando modifiche ai file di configurazione SSH, assicurati di avere una sessione aperta separatamente, in modo da non rimanere bloccato da te stesso per sbaglio.

Esegui i seguenti comandi per eseguire il backup dei file di configurazione SSH.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

Innanzitutto, abilita SSH per utilizzare l'autenticazione a più fattori impostando ChallengeResponseAuthentication opzione su "sì" .

Quindi, modifica il /etc/pam.d/sshd file:

$ sudo vi /etc/pam.d/sshd

E aggiungi le seguenti righe in fondo al file.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Se desideri rendere obbligatoria l'autenticazione a più fattori per tutti gli utenti, rimuovi la parola "nullok" .

Riavvia il servizio ssh per rendere effettive le modifiche.

$ sudo systemctl restart sshd

Test dell'autenticazione a due fattori

È ora di verificare se le modifiche che abbiamo apportato sono efficaci.

Collegati al server tramite SSH e ti verrà richiesta una password come primo fattore seguito da un codice di verifica come secondo fattore di autenticazione come mostrato nell'immagine sottostante.

$ ssh [email protected]/IPaddress

Dopo aver inserito la password SSH e il codice di verifica, potrai accedere.

Ti sei ricordato che non abbiamo abilitato l'AMF come obbligatorio per tutti gli utenti? Proviamolo e vediamo se riesco a connettermi con un altro utente di cui non ho generato e impostato i token.

Ho un utente test e sono in grado di connettermi correttamente senza richiedere il codice di verifica.

Vedere? Posso accedere anche senza il codice di verifica.

Autenticazione a più fattori per l'autenticazione basata su chiavi

Se hai impostato un'autenticazione basata su chiave, non verrai promosso per la password o i codici di verifica. Perché?

Perché, per impostazione predefinita, ssh utilizza prima l'autenticazione a chiave pubblica e se viene trovata una chiave, si autentica utilizzando quella. Nel caso in cui la chiave non venga trovata, utilizzerà l'autenticazione basata su password.

Puoi usare dettagliato modalità per verificarlo.

$ ssh -v [email protected]/IPaddress ## With verbose

Aggiungi la seguente riga in fondo a /etc/ssh/sshd_config file:

AuthenticationMethods publickey,password publickey,keyboard-interactive

Quindi apri /etc/pam.d/sshd e commenta la riga seguente.

Se non stai commentando "@include common-auth" , quindi consentirà l'autenticazione di più di due fattori. Verrà prima autenticato utilizzando chiavi seguite da password e token. Tutto ciò di cui ho bisogno è una chiave e un token per la mia autenticazione, quindi lo sto disabilitando.

Riavvia sshd servizio e verifica se le modifiche funzionano correttamente.

$ sudo systemctl restart sshd

Ora, se provo a connettermi, utilizza la chiave pubblica come primo fattore e il codice di verifica come secondo fattore per l'autenticazione.

Passaggi di ripristino

Potrebbero verificarsi scenari in cui potresti perdere o modificare il tuo dispositivo mobile. In tal caso, devi reinstallare l'applicazione google-authenticator e registrare la chiave segreta per iniziare a generare i token.

Se sei bloccato fuori dal sistema, devi contattare il tuo amministratore di sistema per fornirti nuove chiavi segrete per registrarti e utilizzarlo. Ma esiste un approccio alternativo in cui puoi accedere e generare chiavi da solo.

Ricordi i codici che vengono generati durante il passaggio iniziale? Puoi utilizzare il codice scratch di emergenza come token per accedere. Ogni codice scratch può essere utilizzato una sola volta. Salvalo in un posto sicuro quindi può essere utilizzato quando necessario di più.

I codici vengono salvati in ~/.google_authenticator file.

$ cat ~/.google_authenticator

Ora puoi rigenerare di nuovo le tue chiavi eseguendo il comando seguente.

$ google-authenticator

Conclusione

In questo articolo, ti ho mostrato come installare Google Authenticator e abilitare l'autenticazione a più fattori per SSH con diverse configurazioni.

In qualità di amministratore, puoi anche scrivere script bash per automatizzare il processo di generazione delle chiavi segrete e condividerlo con l'utente. Dovresti anche rafforzare ssh prima di configurare MFA, quindi il tuo sistema è più sicuro. Abbiamo intenzione di trattarli in articoli separati. Resta sintonizzato!

Lettura correlata:

  • Come configurare l'autenticazione basata su chiave SSH in Linux
  • Trova se un utente utilizza l'autenticazione SSH basata su password o chiave
  • Come consentire o negare l'accesso SSH a un particolare utente o gruppo in Linux
  • Disabilita l'autenticazione tramite password SSH per utenti o gruppi specifici

Linux
  1. Come configurare l'autenticazione basata su chiave SSH in Linux

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

  3. Come configurare SSH senza password su Linux

  4. Come configurare Rsync con SSH su UNIX / Linux (rsync senza password)

  5. Come configurare il tunnel SSH inverso su Linux

Come configurare l'accesso SSH senza password in Linux con chiavi

Come disabilitare l'autenticazione della password SSH su VPS Linux

Come creare alias SSH in Linux

Come impostare l'autenticazione basata su chiave Ssh per Github utilizzando il file ~/.ssh/config?

Come eseguire l'SSH sul server tramite Linux

Come disabilitare l'accesso SSH per l'utente root in Linux?