Ricerca nel sito web

Come impostare l'autenticazione a due fattori per SSH in Linux


Per impostazione predefinita, SSH utilizza già la comunicazione dati sicura tra macchine remote, ma se desideri aggiungere un ulteriore livello di sicurezza alle tue connessioni SSH, puoi aggiungere un Google Authenticator (autenticazione a due fattori) che ti consente di inserire un codice di verifica casuale con password monouso (TOTP) durante la connessione ai server SSH. Dovrai inserire il codice di verifica dal tuo smartphone o PC quando ti connetti.

Google Authenticator è un modulo open source che include implementazioni di token di verifica con passcode monouso (TOTP) sviluppati da Google.

Supporta diverse piattaforme mobili, nonché PAM (Pluggable Authentication Module). Questi passcode monouso vengono generati utilizzando standard aperti creati da OATH Initiative for Open Authentication).

In questo articolo ti mostrerò come impostare e configurare SSH per l'autenticazione a due fattori nelle distribuzioni Linux basate su RedHat e Debian come Fedora, CentOS Stream, Rocky Linux e AlmaLinux. Ubuntu, Debian e Mint.

Installazione di Google Authenticator su Linux

Apri la macchina su cui desideri impostare l'autenticazione a due fattori e installa le seguenti librerie PAM insieme alle librerie di sviluppo necessarie affinché il modulo PAM funzioni correttamente con < moduloAutenticatore Google.

Sui sistemi basati su RedHat installa il pacchetto "pam-devel" utilizzando il seguente comando yum.

yum install google-authenticator -y

Sui sistemi basati su Debian installa il pacchetto "libpam0g-dev" utilizzando il seguente comando apt.

sudo apt install libpam-google-authenticator -y

Genera token di autenticazione di Google

Una volta eseguito il comando "google-authenticator", ti verranno poste una serie di domande.

google-authenticator

Nella maggior parte delle situazioni, digita semplicemente "y" () come risposta. Se qualcosa va storto, puoi digitare nuovamente il comando "google-authenticator" per ripristinare le impostazioni.

  • Vuoi che i token di autenticazione siano basati sul tempo (s/n) y

Dopo questa domanda, riceverai la tua "chiave segreta" e i "codici di emergenza". Annota questi dettagli da qualche parte, in seguito avremo bisogno della "chiave segreta" per configurare l'app Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Successivamente, segui la procedura guidata di configurazione e nella maggior parte dei casi digita la risposta come "y" () come mostrato di seguito.

Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Configurazione di SSH per utilizzare Google Authenticator in Linux

Apri il file di configurazione PAM "/etc/pam.d/sshd" e aggiungi la seguente riga alla fine del file.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Successivamente, apri il file di configurazione SSH "/etc/ssh/sshd_config" e scorri verso il basso per trovare la riga che dice.

ChallengeResponseAuthentication no

Cambialo in "". Quindi diventa così.

ChallengeResponseAuthentication yes

Infine, riavvia il servizio SSH per apportare nuove modifiche.

systemctl restart sshd
Or
sudo systemctl restart sshd

Configurazione dell'app Google Authenticator

Avvia l'app Google Authenticator sul tuo smartphone. Premi + e scegli "Inserisci una chiave di configurazione". Se non disponi di questa app, puoi scaricare e installare l'app Google Authenticator sui tuoi dispositivi Android/iPhone/Blackberry.

Aggiungi il tuo account "Nome" e inserisci la "chiave segreta" generata in precedenza.

Verrà generata una password monouso (codice di verifica) che cambierà costantemente ogni 30 secondi sul tuo telefono.

Ora prova ad accedere tramite SSH, ti verrà richiesto un codice Google Authenticator (Codice di verifica) e una Password ogni volta che tenti di accedere tramite SSH. Hai solo 30 secondi per inserire questo codice di verifica, se lo perdi verrà rigenerato un nuovo codice di verifica.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Se non hai uno smartphone, puoi anche utilizzare un componente aggiuntivo di Firefox chiamato Authenticator per eseguire l'autenticazione a due fattori.

Importante: l'autenticazione a due fattori funziona con l'accesso SSH basato su password. Se stai utilizzando una sessione SSH con chiave privata/pubblica, ignorerà l'autenticazione a due fattori e ti accederà direttamente.